CUDA + QT Creator + Win7的集成
最近看到brown大学一位同学做的demo简直是牛B,里面居然实现了物体的移动轴,旋转圈等,跟MAYA界面差不多,一直想找一个这样的GUI,找不到,没办法,自己做吧,所以决心学下QT,当然这位同学的程序中用到了CUDA,为了调通他的程序,我又只好硬着头皮去搞下CUDA,花了二天时间,终于把它带的CUDA helloworld程序调通了
注意这里QT creator里面的调试器用的VS2010里面的, 并且这个程序又跟CUDA结合, 所以PRO的写法我琢磨了很久,最终将近二天的时间将它搞出来了.看来要学的还是跑不掉,所以多学点吧,Linux也跑不掉的
好了,开始正题
1.下载CUDA
下载地址:https://developer.nvidia.com/cuda-downloads
自己结合需求选
我用的CUDA7.5
2.QT Creator的配置
已经配置好了的就跳过该步,没有配置好的见我的另一篇文章
http://blog.csdn.net/seamanj/article/details/49650101
3.开搞
main.cpp文件如下:
#include <QCoreApplication>extern "C" // tell compiler that function is defined somewhere elsevoid runCudaPart();#include <stdio.h>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);runCudaPart();return a.exec();
}
kernel.cu文件如下:
#include <cuda.h>
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
#include <glm/glm.hpp>
#include <stdio.h>#if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ < 200)# error printf is only supported on devices of compute capability 2.0 and higher, please compile with -arch=sm_20 or higher
#endifextern "C"
void runCudaPart();__global__ void helloCUDA(glm::vec3 v)
{int tid = blockIdx.x;printf("Hello block %d thread %d, x=%f\n",tid , threadIdx.x, v.x);
}
extern "C"
void runCudaPart()
{// all your cuda code hereglm::vec3 v(0.1f, 0.2f, 0.3f);//helloCUDA<<<1, 5>>>(v); // 1 block, 5 GPU threadshelloCUDA<<<5,1>>>(v); // 5 blocks, 1 GPU thread eachcudaDeviceSynchronize();
}
重点是CUDA_helloworld.pro文件的配置
格式不对,请点plain↓
#-------------------------------------------------
#
# Project created by QtCreator 2014-04-03T18:12:01
#
#-------------------------------------------------QT += core
QT -= guiTARGET = CUDA_helloworld
CONFIG += console
CONFIG -= app_bundleTEMPLATE = appSOURCES += main.cpp# GLM
INCLUDEPATH += "D:/work_files/glm"# CUDA# Define output directories
DESTDIR = ../bin
CUDA_OBJECTS_DIR = OBJECTS_DIR/../cuda# This makes the .cu files appear in your project
OTHER_FILES += \kernel.cu \CUDA_notes.txtCUDA_SOURCES += \kernel.cu#-------------------------------------------------# MSVCRT link option (static or dynamic, it must be the same with your Qt SDK link option)
MSVCRT_LINK_FLAG_DEBUG = "/MDd"
MSVCRT_LINK_FLAG_RELEASE = "/MD"# CUDA settings
CUDA_DIR = "D:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5/" # Path to cuda toolkit install
SYSTEM_NAME = Win32 # Depending on your system either 'Win32', 'x64', or 'Win64'
SYSTEM_TYPE = 32 # '32' or '64', depending on your system
CUDA_ARCH = sm_30 # Type of CUDA architecture
NVCC_OPTIONS = --use_fast_math# include paths
INCLUDEPATH += $$CUDA_DIR/include \$$CUDA_DIR/common/inc \$$CUDA_DIR/../shared/inc# library directories
QMAKE_LIBDIR += $$CUDA_DIR/lib/$$SYSTEM_NAME \$$CUDA_DIR/common/lib/$$SYSTEM_NAME \$$CUDA_DIR/../shared/lib/$$SYSTEM_NAME# The following makes sure all path names (which often include spaces) are put between quotation marks
CUDA_INC = $$join(INCLUDEPATH,'" -I"','-I"','"')# Add the necessary libraries
CUDA_LIB_NAMES = cudart_static kernel32 user32 gdi32 winspool comdlg32 \advapi32 shell32 ole32 oleaut32 uuid odbc32 odbccp32 \#freeglut glew32for(lib, CUDA_LIB_NAMES) {CUDA_LIBS += -l$$lib
}
LIBS += $$CUDA_LIBS# Configuration of the Cuda compiler
CONFIG(debug, debug|release) {# Debug modecuda_d.input = CUDA_SOURCEScuda_d.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.objcuda_d.commands = $$CUDA_DIR/bin/nvcc.exe -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$LIBS \--machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH \--compile -cudart static -g -DWIN32 -D_MBCS \-Xcompiler "/wd4819,/EHsc,/W3,/nologo,/Od,/Zi,/RTC1" \-Xcompiler $$MSVCRT_LINK_FLAG_DEBUG \-c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}cuda_d.dependency_type = TYPE_CQMAKE_EXTRA_COMPILERS += cuda_d
}
else {# Release modecuda.input = CUDA_SOURCEScuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.objcuda.commands = $$CUDA_DIR/bin/nvcc.exe $$NVCC_OPTIONS $$CUDA_INC $$LIBS \--machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH \--compile -cudart static -DWIN32 -D_MBCS \-Xcompiler "/wd4819,/EHsc,/W3,/nologo,/O2,/Zi" \-Xcompiler $$MSVCRT_LINK_FLAG_RELEASE \-c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}cuda.dependency_type = TYPE_CQMAKE_EXTRA_COMPILERS += cuda
}
具体的含义我就不多解释了,运行结果如下:
最后,如果想学CUDA的话,推荐视频:
https://www.udacity.com/course/viewer#!/c-cs344/l-55120467/m-65830481
CUDA + QT Creator + Win7的集成相关推荐
- Qt Creator的配置
Qt Creator的配置 配置Qt Creator 检查构建和运行设置 更改键盘快捷键 更改配色方案 添加您自己的代码段 配置版本控制系统 管理插件 启用和禁用插件 安装插件 配置Qt Creato ...
- Qt Creator IDE概述
Qt Creator IDE概述 IDE概述 管理项目 设计用户界面 编码 建立和运行 测验 出版 IDE概述 Qt Creator是一个集成开发环境(IDE),可为您提供使用Qt应用程序框架设计和开 ...
- Qt:配置Qt Creator
如果将Qt Creator作为Qt安装的一部分进行安装,则应该能够使用默认设置和配置选项直接使用它. 但是,如果您安装独立的Qt Creator程序包,从源代码构建Qt Creator或安装多个Qt版 ...
- Qt Creator设计用户界面
Qt Creator设计用户界面 设计用户界面 设计用户界面 Qt Creator提供了集成的可视化编辑器,用于在"设计"模式下设计Qt Quick和基于窗口小部件的应用程序.集成 ...
- Qt Creator cuda动态并行工程配置
动态并行允许从GPU端启动核函数,它要求显卡计算能力大于3.5. 动态并行Qt Creator的工程配置与不使用动态并行时有较大差别,以linux系统为例 QT += core greaterThan ...
- linux下QT Creator常见错误及解决办法
最近因为在做一个关于linux下计算机取证的小项目,需要写一个图形界面,所以想到了用QT来写,选用了linux下的集成开发环境QT Creator5.5.1,但刚刚安装好,竟然连一个"hel ...
- QT自定义窗口插件在QT Creator的应用
根据<C++ GUI Programming with Qt 4,Second Edition>中第5章的"在Qt设计师中集成自定义窗口部件"小节,使用插件法生成的窗口 ...
- QT Creator介绍
文章目录 1 QT Creator介绍 1.1 QT Creator 1.2 QT Creator中调试的基本方法 2 Qt Creator工程管理 2.1 Qt Creator工程管理简介 2.2 ...
- 3. Qt Creator
Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境.Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境,并确保首次接触Qt框架的开发人员能迅速上手和操 ...
最新文章
- Python os模块常用命令
- UI设计师的实际工作流程是什么样的?
- MyBatis 实际使用案例-Mapper.xml 映射配置文件【重点】
- python内置属性类_Python内置类属性,元类研究
- 亚马逊增加了对Aurora的跨区域和加密复制支持
- 品牌就是复购,运营就是零售
- 巴菲特投资50年的5个心得
- windows Mobile使用ActiveSync上网
- jquery使用规则
- 学习Android逆向
- 基于斗鱼的娱乐直播视频平台--Vue移动端页面
- Java开源博客源码完整汇总(持续更新)
- PureMVC框架知识介绍
- 新旧音标对照表与英式音标表
- reporting service odbc mysql_Reporting Services
- 尚硅谷springboot笔记
- c语言中八进制和十六进制
- #includecstring
- svn项目迁移后服务器up报错:E155036 的处理方法
- iOS LeetCode ☞ Fizz Buzz
热门文章
- Python+OpenCV:傅里叶变换(Fourier Transform)
- Python Imaging Library: ImageChops Module(图像通道操作模块)
- java方法synchronized_java synchronized方法 – 它是如何工作的
- java中的greeting_JAVA基础知识——字符串
- Spring Boot 2 - 初识与新工程的创建
- Laravel.com 中国镜像、中文站点
- 文件名的查找——find
- 网站前端_EasyUI.基础入门.0002.带你玩转jQuery EasyUI Panel组件 ?
- 终于找到了。 图标搜索、UI设计、移动开发集中导航
- URL重写 对于禁用cookie的 方法