1.安装CUDA Toolkit
CUDA Toolkit Archive | NVIDIA Developer
CUDA Toolkit 11.7 Downloads | NVIDIA Developer
安装之前可以在cmd输入nvcc -V看一下之前安装过没有
下载完成后双击安装,临时解压路径可以选择默认,然后选择自定义
一定要勾选Visual Studio Intergration
然后选择合适的安装位置即可开始安装
2.环境配置
在系统变量中添加
CUDA_BIN_PATH: %CUDA_PATH%\bin
CUDA_LIB_PATH: %CUDA_PATH%\lib\x64
然后再在PATH中添加 %CUDA_BIN_PATH%和%CUDA_LIB_PATH%
3.更新CUDA驱动
如果你的cuda驱动版本低于cuda版本,会导致无法使用,可以在cmd中使用nvidia-smi查看,cuda version表示最高能支持的cuda版本
如果需要更新的话可以在NVIDIA GeForce Experience里更新
4.在Visual Studio中使用cuda编程
打开vs,新建项目,一般会出现 CUDA xx.x Runtime的模板,这是一个示例代码。
这个代码一般是可以直接使用的。如果不行,建议百度
5.cpp文件中调用cuda函数环境配置
新建C++项目,创建main.cpp,再创建一个test.cu文件,在test.cu文件中编写并行函数。
此时会报“无法打开源文件的错误”,需要进行几步操作
①右击项目——生成依赖项——生成自定义——勾选CUDA xx.x
②然后打开属性管理器,vs2022版本在 视图——其他窗口里面,打开以后右击Debug|x64添加新项目属性表(属性表文件可以节省配置时间开销、减少配置错误率,减少工程的重复设置,最终只要设置一次就可以了,尤其是当解决方案下有很多的工程需要修改配置时,其效果显而易见)
双击编辑
在 VC++目录——包含目录 中添加$(CUDA_PATH)\include
在 VC++目录——库目录 中添加$(CUDA_PATH)\lib\x64
在 链接器——常规——附加库目录 中添加$(CUDA_PATH)\bin
在 链接器——输入——附加依赖项 中添加vxx.x/lib/x64下的所有.lib文件,一个一个加太麻烦可以在这个文件夹下打开cmd,输入dir /B >name.txt,会生成一个包含该目录所有文件名称的txt文件,记得把name.txt删掉
然后项目属性就配置ok了,这个.props文件是可以复用的,当有新项目的时候复制过去就行了。
6.试验
一共创建三个文件
1.main.cpp文件
#include "main.h"
int main()
{
printHello(10);
return 0;
}
2.main.h文件
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>
extern "C" void printHello(int numPrint);
3.printHello.cu文件
#include "main.h"
__global__ void helloKernel(int numElements)
{
int i = blockDim.x * blockIdx.x + threadIdx.x;
if (i < numElements)
{
printf("%d: Hello, CUDA!\n ", i);
}
}
void printHello(int numPrint)
{
int threadsPerBlock = 256;
int blocksPerGrid = (numPrint + threadsPerBlock - 1) / threadsPerBlock;
helloKernel << <threadsPerBlock, blocksPerGrid >> > (numPrint);
cudaDeviceSynchronize();
}
然后编译运行,如果一切正常,会出现这样的输出: