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

posted @ 2023-07-03 22:42  zgwen  阅读(494)  评论(0编辑  收藏  举报