C\C++的CUDA编程
模型处理的数据比较大的时候比较耗时,是时候学习一些CUDA编程了,这里是C\C++语言下的,Python的话可以借助PyTorch。
1 环境搭建
Windows11 + VisualStudio 2022 + CUDA11.7 (原本Windows10 + VisualStudio 2022 + CUDA11.5, 11.5和2022不兼容)
1.1 安装与下载
第一步,安装Visual Studio
第二步,安装对应版本的CUDA
查看安装是否成功
1.2 添加变量
1.2.1 系统变量
CUDA_SDK_PATH = D:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.5
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
1.2.2 系统变量/Path中添加(有就不加了)
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\bin
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\libnvvp
1.3 Visual Studio中创建项目并进行环境配置
第一步,新建空项目
第二步,添加.cu文件
第三步,右键项目 → 生成依赖项→ 生成自定义→ 勾选“CUDA 11.7
第四步,右击File.cu文件→属性→配置属性→常规→项类型→CUDA C/C++
第五步,VC++目录
包含目录
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include
库目录
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\11.7\lib\x64
第六步,增加项目扩展名(可选)
第七步,→链接器→输入→附加依赖项(添加需要的库)
2 实例
2.1 验证
#include<stdio.h>
__global__ void kernel(void) {}
int main(void) {
kernel << <1, 1 >> > ();
printf("Hello, World!\n");
return 0;
}
2.2 测试
见参考1
3 注意事项
博客中sys/time.h是linux中的使用方法,计时可以使用以下代码进行代替
#include <chrono>
#include <iostream>
int main() {
auto start_time = std::chrono::high_resolution_clock::now();
// 执行需要计时的代码
auto end_time = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - start_time).count();
std::cout << "代码执行时间:" << duration << " 毫秒" << std::endl;
return 0;
}
多看代码
参考
博客
https://www.cnblogs.com/skyfsm/p/9673960.html
https://blog.csdn.net/weixin_44727682/article/details/126998349
https://blog.csdn.net/qq_41456316/article/details/121522097
官方文档
https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-language-extensions