安装cuda
CUDA Toolkit Downloads | NVIDIA Developer
这里网上教程多的是,在这个网址下载安装即可
我这台电脑因为重装过,所以省去了安装步骤,但是要重新配置环境变量。我重新找到了重装之前的CUDA位置(关注这个bin文件夹所在的目录)
在环境变量中添加了两个变量(这个V11_7我也不知道干嘛的,看别人一键安装教程里面有这种变量,所以也加上了),并在Path中添加bin目录 %CUDA_PATH%\bin
。接着在 cmd 内输入 nvcc --version
,能输出版本号就说明配置好了。
然后就是最关键的,因为脱离了VS,所以待会编译时会报错Cannot find compiler 'cl.exe' in PATH
。通过 everything 软件查到 cl.exe 在 VS 的相关目录中(微软真该死),于是在 Path 中再加上这个目录就好了。
于是Path最终加上了:
开始写代码
创建main.cu
,填入下面的代码。
这段代码使用了 cuda 相关库,对两个数组使用 cudaMalloc 申请内存,并为数组添加元素,成为[0, 1, 2, 3, ..., 99]。接着通过 vec_add 开启多个线程并行处理多个数组元素,然后使用 cudaDeviceSynchronize 等待所有线程结束,再继续下面的输出流程。
我们输入nvcc -o main .\main.cu
,编译得到main.exe、main.exp、main.lib
接着运行 main.exe ,控制台打印运行结果,即 0 2 4 6 ... 198
cpp
#include <iostream>
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
using namespace std;
__global__ void vec_add(int *a, int *b)
{
int i = blockIdx.x;
a[i] += b[i];
}
int main()
{
const int N = 100;
// ---- allocate the memory ---- //
int *a, *b;
cudaMallocManaged(&a, N*sizeof(int));
cudaMallocManaged(&b, N*sizeof(int));
// ---- initialize a,b ---- //
for(int i=0;i<N;i++)
{
a[i] = i;
b[i] = i;
}
// ---- add b to a ---- //
vec_add<<<N,1>>>(a,b);
cudaDeviceSynchronize();
// ---- display a ---- //
for(int i=0;i<N;i++)
{
cout << a[i] << endl;
}
}