windows下,在vscode中使用cuda进行c++编程

安装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

#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;
    }
}
要在VS Code使用CUDA,你需要进行以下步骤: 1. 首先,确保你已经安装了NVIDIA GPU Computing Toolkit和CUDA驱动程序,并且路径设置正确。你可以在VS Code的设置找到"code-runner.executorMap",在其添加CUDA文件的编译语句。例如,你可以在"cu"字段添加以下语句: ``` "cu": "cd $dir; nvcc $fileName -o $fileNameWithoutExt.exe -I'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\include\\CL' && $dir$fileNameWithoutExt" ``` 请确保将路径设置为你的实际安装路径。\[1\] 2. 如果你想使用VS Code扩展来远程控制CUDA WebGPU,你可以尝试使用名为"ECE 408 Remote Control"的扩展。该扩展允许你在本地使用VS Code作为编辑器,并将代码上传到WebGPU网站上,在Chrome浏览器运行测试并显示结果。\[2\] 3. 如果你想在VS Code编写和运行CUDA代码,你可以创建一个新的CUDA项目。你可以在VS Code创建一个新的文件,将以下示例代码粘贴到文件: ``` #include <iostream> #include <math.h> __global__ void add(int n, float *x, float *y) { for (int i = 0; i < n; i++) y\[i\] = x\[i\] + y\[i\]; } int main(void) { int N = 1<<25; float *x, *y; cudaMallocManaged(&x, N*sizeof(float)); cudaMallocManaged(&y, N*sizeof(float)); for (int i = 0; i < N; i++) { x\[i\] = 1.0f; y\[i\] = 2.0f; } add<<<1, 1>>>(N, x, y); cudaDeviceSynchronize(); float maxError = 0.0f; for (int i = 0; i < N; i++) maxError = fmax(maxError, fabs(y\[i\]-3.0f)); std::cout << "Max error: " << maxError << std::endl; cudaFree(x); cudaFree(y); return 0; } ``` 这是一个简单的CUDA程序,它将两个数组的元素相加,并计算最大误差。你可以根据需要修改代码。然后,你可以使用适当的编译命令来编译和运行该程序。\[3\] 希望这些信息对你有所帮助! #### 引用[.reference_title] - *1* *3* [VScode配置cuda开发环境](https://blog.csdn.net/lijj0304/article/details/130810197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [在VSCode使用CUDA](https://blog.csdn.net/MyYaip/article/details/122882482)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值