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

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;
    }
}
相关推荐
zwc321043205512 分钟前
Day 5:threshold与inRange阈值分割
c++·图像处理·人工智能·opencv·算法·计算机视觉
小徐不徐说20 分钟前
数据库存储基础:理解表结构、主键、事务与 BLOB
开发语言·数据库·c++·qt·程序设计
草莓熊Lotso33 分钟前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生
Sakura_j_h_9 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
程序喵大人10 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
jimy112 小时前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++
会编程的小孩14 小时前
C++ 定时器
c++
沫璃染墨15 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
揽星河..17 小时前
【C语言】分支和循环
c语言·c++·算法
Fuyo_111918 小时前
C++ AVL树保姆级详解:从平衡因子到四大旋转机制
java·c++·算法