当前位置:网站首页>基于Visual Studio 2015的CUDA编程(一):基本配置
基于Visual Studio 2015的CUDA编程(一):基本配置
2022-08-02 14:17:00 【Zhi Zhao】
一、CUDA简介
CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员可以使用C语言来为CUDA架构编写程序,所编写出的程序可以在支持CUDA的处理器上以超高性能运行。
目前为止,基于 CUDA 的 GPU 销量已达数以百万计,软件开发商、科学家以及研究人员正在各个领域中运用 CUDA,其中包括图像与视频处理、计算生物学和化学、流体力学模拟、CT 图像再现、地震分析以及光线追踪等。
二、CUDA的下载和安装
下载CUDA应用程序时,需要提前确定电脑显卡的驱动程序版本对应的CUDA版本。
1)进入控制面板,找到NVIDIA控制面板,双击进入。
2)点击“帮助”按钮下的“系统信息”,得到显卡的型号为GeForce 920M,驱动程序版本为376.51。
3)通过CUDA官网提供的信息,获取CUDA版本对应的显卡驱动程序版本。
CUDA Toolkit and Corresponding Driver Versions
4)搜索对应的CUDA版本并下载。
5)安装CUDA
网上可以找到许多安装教程的文章,其中我觉得有一篇博文比较好,里面还提到了如何配置深度学习的库cuDNN,如果只是做并行计算可以不用装这个库。
三、创建CUDA项目
1)点击“文件”,选择“新建”,“项目”,定位到“Visual C++”选项卡。
2)选择“空项目”,解决方案和名称可以自己输入,如图中所示,项目保存的位置可以自己更改。
3)选择“源文件”,点击鼠标右键,选择“添加”→“新建项”,再选择“CUDA C/C++ File”,就可以创建一个.cu文件。
4)选中“Example_1”,点击鼠标右键,选择“生成依赖项“→“生成自定义”→选择“CUDA”CUDA8.0→确定。
5)选中“Hello_GPU.cu”文件,点击鼠标右键,选择“属性”→“配置属性”→“常规”→“项类型”→“CUDA C/C++”。
6)选中“Example_1”,点击鼠标右键,选择“属性“→“VC++目录”,在“包含目录”中添加:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include
在“库目录”中添加:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
(x64表示电脑的操作系统为64位,以上两个路径与自己安装CUDA的位置有关)。
点击“CUDA C/C++”选项,选择“Common”,将目标机器平台设置为“64-bit”。
7)选中“Example_1”,点击鼠标右键,选择“属性“→“链接器”→“输入”→“附加依赖项”。
添加自己需要的.lib文件名称,例如:
cublas.lib
cuda.lib
cudart.lib
cufft.lib
.lib文件所在的位置如下图所示。
上面其实就是“库目录”下的文件。
到此,Visual Studio 2015里面所有为CUDA编程而设置的选项都已经操作完成,接下来可以利用CUDA编程调用GPU实现并行运算的功能。
四、CUDA的C代码
CPU和GPU实现的功能相同,程序执行的方式有差异。
#include<stdio.h>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
void cpu()
{
printf("hello,cpu\n");
}
__global__ void gpu()
{
printf("hello,gpu\n");
}
int main()
{
cpu();
gpu << <1, 1 >> >();
cudaDeviceSynchronize();
}
程序运行结果如图
为了解决程序运行后控制台出现闪退的问题,可以进行下面的设置。
选中“Example_1”,点击鼠标右键,选择“属性“→“链接器”→“系统”→“子系统”,在“子系统里面”选择“控制台”。
各位志同道合的朋友,如果你们觉得这篇博文写的不错或者正好解决了你的问题,请动动手指,点个赞 再走。
有什么疑问可以在文章底下评论,我会逐条回答,既可以解决你的问题,还有可能给其他人提供解决的思路。有些问题需要私聊的可以私信我哦!
边栏推荐
猜你喜欢
随机推荐
abstract和接口的基础知识
RTMP, RTSP, SRT 推流和拉流那些事
makefile——library
The dynamic planning theory
ks.cfg 怎么读取光盘 (cdrom) 上的文件并执行对应的脚本
【软件测试】测试基础讲解
HCIE学习记录——OSI参考模型
grub 命令使用
移动端UI自动化相关环境配置
WEB自动化之键盘、鼠标操作
一分钟之内搭建自己的直播服务器?
Mysql理解MVCC与BufferPool缓存机制
【个人向】线性表复习
【TCP 和 UDP 基本原理】
自动化之参数化
golang中使用泛型
异常抛出错误
test2
Scala的模式匹配与样例类
[Inter-process communication]: pipe communication/named/unnamed