CUDA是?
- 是适用于NVIDIA GPU的通用目的GPU(GPGPU)并行编程平台
- 安装?:CUDA Toolkit 12.0 Update 1 Downloads | NVIDIA Developer
- 用什么编译器?:实际上是NVIDIA自己的nvcc
- CUDA语言是C++的超集,因此可以和C++混编
- nvcc会将非CUDA部分的代码送给其他编译器(如MSVC或clang)编译,自己编译CUDA部分代码
- CMake、Visual Studio均支持CUDA项目
- 开发环境:Visual Studio + CUDA Toolkit最常见
基本结构
- 一般含有CUDA代码的源码文件,扩展名改为
.cu
- 头文件:
#include <cuda_runtime.h>
- 入口点
- 程序入口点依然是C++中的
int main()
函数 - 程序不会在入口点就在GPU上执行,而是依然在CPU上执行
- 程序入口点依然是C++中的
关键字
- CUDA通过特殊定义的关键字标识代码在CPU上执行,还是在GPU上执行
- 修饰函数的关键字,用法:
__global__ void func() {}
__device__
:由GPU调用,在GPU上执行__global__
:由CPU调用,在GPU上执行__host__
:由CPU调用,在CPU上执行- 示例程序:
1 |
|