1.安装CUDA Toolkit

CUDA Toolkit Archive | NVIDIA Developer

CUDA Toolkit 11.7 Downloads | NVIDIA Developer

安装之前可以在cmd输入nvcc -V看一下之前安装过没有 

python cuda 调用命令 如何调用cuda_CUDA

下载完成后双击安装,临时解压路径可以选择默认,然后选择自定义

python cuda 调用命令 如何调用cuda_CUDA_02

一定要勾选Visual Studio Intergration

 

python cuda 调用命令 如何调用cuda_python cuda 调用命令_03

 然后选择合适的安装位置即可开始安装

2.环境配置

在系统变量中添加

CUDA_BIN_PATH: %CUDA_PATH%\bin

CUDA_LIB_PATH: %CUDA_PATH%\lib\x64

python cuda 调用命令 如何调用cuda_#include_04

python cuda 调用命令 如何调用cuda_CUDA_05

 然后再在PATH中添加 %CUDA_BIN_PATH%和%CUDA_LIB_PATH%

python cuda 调用命令 如何调用cuda_python cuda 调用命令_06

 3.更新CUDA驱动

如果你的cuda驱动版本低于cuda版本,会导致无法使用,可以在cmd中使用nvidia-smi查看,cuda version表示最高能支持的cuda版本

python cuda 调用命令 如何调用cuda_#include_07

 如果需要更新的话可以在NVIDIA GeForce Experience里更新

4.在Visual Studio中使用cuda编程

打开vs,新建项目,一般会出现 CUDA xx.x Runtime的模板,这是一个示例代码。

python cuda 调用命令 如何调用cuda_CUDA_08

 这个代码一般是可以直接使用的。如果不行,建议百度

python cuda 调用命令 如何调用cuda_环境配置_09

 5.cpp文件中调用cuda函数环境配置

新建C++项目,创建main.cpp,再创建一个test.cu文件,在test.cu文件中编写并行函数。

此时会报“无法打开源文件的错误”,需要进行几步操作

①右击项目——生成依赖项——生成自定义——勾选CUDA xx.x

python cuda 调用命令 如何调用cuda_#include_10

 

python cuda 调用命令 如何调用cuda_CUDA_11

②然后打开属性管理器,vs2022版本在 视图——其他窗口里面,打开以后右击Debug|x64添加新项目属性表(属性表文件可以节省配置时间开销、减少配置错误率,减少工程的重复设置,最终只要设置一次就可以了,尤其是当解决方案下有很多的工程需要修改配置时,其效果显而易见)

python cuda 调用命令 如何调用cuda_python cuda 调用命令_12

 双击编辑

在 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();
}

然后编译运行,如果一切正常,会出现这样的输出:

python cuda 调用命令 如何调用cuda_#include_13

 表示实验成功!!!