最近看到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的集成相关推荐

  1. Qt Creator的配置

    Qt Creator的配置 配置Qt Creator 检查构建和运行设置 更改键盘快捷键 更改配色方案 添加您自己的代码段 配置版本控制系统 管理插件 启用和禁用插件 安装插件 配置Qt Creato ...

  2. Qt Creator IDE概述

    Qt Creator IDE概述 IDE概述 管理项目 设计用户界面 编码 建立和运行 测验 出版 IDE概述 Qt Creator是一个集成开发环境(IDE),可为您提供使用Qt应用程序框架设计和开 ...

  3. Qt:配置Qt Creator

    如果将Qt Creator作为Qt安装的一部分进行安装,则应该能够使用默认设置和配置选项直接使用它. 但是,如果您安装独立的Qt Creator程序包,从源代码构建Qt Creator或安装多个Qt版 ...

  4. Qt Creator设计用户界面

    Qt Creator设计用户界面 设计用户界面 设计用户界面 Qt Creator提供了集成的可视化编辑器,用于在"设计"模式下设计Qt Quick和基于窗口小部件的应用程序.集成 ...

  5. Qt Creator cuda动态并行工程配置

    动态并行允许从GPU端启动核函数,它要求显卡计算能力大于3.5. 动态并行Qt Creator的工程配置与不使用动态并行时有较大差别,以linux系统为例 QT += core greaterThan ...

  6. linux下QT Creator常见错误及解决办法

    最近因为在做一个关于linux下计算机取证的小项目,需要写一个图形界面,所以想到了用QT来写,选用了linux下的集成开发环境QT Creator5.5.1,但刚刚安装好,竟然连一个"hel ...

  7. QT自定义窗口插件在QT Creator的应用

    根据<C++ GUI Programming with Qt 4,Second Edition>中第5章的"在Qt设计师中集成自定义窗口部件"小节,使用插件法生成的窗口 ...

  8. QT Creator介绍

    文章目录 1 QT Creator介绍 1.1 QT Creator 1.2 QT Creator中调试的基本方法 2 Qt Creator工程管理 2.1 Qt Creator工程管理简介 2.2 ...

  9. 3. Qt Creator

    Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境.Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境,并确保首次接触Qt框架的开发人员能迅速上手和操 ...

最新文章

  1. Python os模块常用命令
  2. UI设计师的实际工作流程是什么样的?
  3. MyBatis 实际使用案例-Mapper.xml 映射配置文件【重点】
  4. python内置属性类_Python内置类属性,元类研究
  5. 亚马逊增加了对Aurora的跨区域和加密复制支持
  6. 品牌就是复购,运营就是零售
  7. 巴菲特投资50年的5个心得
  8. windows Mobile使用ActiveSync上网
  9. jquery使用规则
  10. 学习Android逆向
  11. 基于斗鱼的娱乐直播视频平台--Vue移动端页面
  12. Java开源博客源码完整汇总(持续更新)
  13. PureMVC框架知识介绍
  14. 新旧音标对照表与英式音标表
  15. reporting service odbc mysql_Reporting Services
  16. 尚硅谷springboot笔记
  17. c语言中八进制和十六进制
  18. #includecstring
  19. svn项目迁移后服务器up报错:E155036 的处理方法
  20. iOS LeetCode ☞ Fizz Buzz

热门文章

  1. Python+OpenCV:傅里叶变换(Fourier Transform)
  2. Python Imaging Library: ImageChops Module(图像通道操作模块)
  3. java方法synchronized_java synchronized方法 – 它是如何工作的
  4. java中的greeting_JAVA基础知识——字符串
  5. Spring Boot 2 - 初识与新工程的创建
  6. Laravel.com 中国镜像、中文站点
  7. 文件名的查找——find
  8. 网站前端_EasyUI.基础入门.0002.带你玩转jQuery EasyUI Panel组件 ?
  9. 终于找到了。 图标搜索、UI设计、移动开发集中导航
  10. URL重写 对于禁用cookie的 方法