当前位置: 首页 > article >正文

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;
    }
}

http://www.kler.cn/news/335762.html

相关文章:

  • 自动驾驶系列—LDW(车道偏离预警):智能驾驶的安全守护者
  • 【最新华为OD机试E卷-支持在线评测】计算三叉搜索树的高度(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • jmeter学习(5)定时
  • 一、Python(介绍、环境搭建)
  • Redis Stack十部曲之五:管理Redis
  • Mybatis-plus的基础用法
  • 酒店生态发展旅游四个一体化建设-—未来之窗行业应用跨平台架构
  • 23.2 prometheus为k8s做的4大适配工作
  • Python案例--九九乘法表
  • 网络基础知识笔记(五)接口管理
  • 红外变电站分割数据集,标注为json格式,总共有5类,避雷器(289张),绝缘子(919张),电流互感器(413张),套管(161张),电压互感器(153张)
  • 支持向量机(SVM)基础教程
  • PyEcharts教程(002):上手PyEcharts
  • 汽车发动机系统EMS详细解析
  • DebianUbentu系统apt依赖分析工具apt-rdepends使用
  • 深度学习中的结构化概率模型 - 推断和近似推断篇
  • Chromium 添加书签功能浅析c++
  • 组件中$router/$route的由来(vue-router源码分析)
  • Solidity智能合约中的事件和日志
  • 408算法题leetcode--第25天