分享

安装CUDA,并使用VS2022开始CUDA编程

 汉无为 2023-02-12 发布于湖北
在异构计算架构中,GPU与CPU通过PCIe总线连接在一起来协同工作,CPU所在位置称为为主机端(host),而GPU所在位置称为设备端(device),两者优势互补。CUDA作为GPU的编程模型,提供了对其他编程语言的支持,例如常用的C/C++,Python等。
下面在windows系统下,使用VS2022对GPU进行CUDA编程。开始之前你需要准备的硬件是:一块GPU显卡。并假设你已经提前安装了VS2022,而且具备一定的软件编程经验。
图片

安装CUDA

图片
首先进行CUDA编程模型的安装,根据自己的系统情况到CUDA官网下载安装包。下载完成后进行安装,过程很简单。
https://developer./cuda-downloads
图片
图片
安装完成后,“win+R”输入cmd打开终端后输入:nvcc -V检验安装是否成功。
图片
若需要下载以前的版本,你还可以点击查看你需要下载的CUDA版本:
图片
图片
图片

创建VS2022项目

图片
CUDA安装完成后,打开VS2022创建新项目,选择CUDA runtime。
图片
图片
图片
新建完成后有一个简单的例程,直接进行调试即可看到下面的结果:
图片
在CUDA中,用host指代CPU及其内存,用device指代GPU及其内存。CUDA程序既包含host程序,又包含device程序,它们分别在CPU和GPU上运行。同时,host与device之间可以进行数据拷贝。
在CUDA中是通过函数类型限定词开区别host和device上的函数,主要的三个函数类型限定词如下:
__global__:在device上执行,从host中调用(一些特定的GPU也可以从device上调用),返回类型必须是void,不支持可变参数,不能成为类成员函数。注意用__global__定义的kernel是异步的,这意味着host不会等待kernel执行完就执行下一步。
__device__:在device上执行,仅可以从device中调用,不可以和__global__同时用。
__host__:在host上执行,仅可以从host上调用,一般省略不写,不可以和__global__同时用,但可和__device__,此时函数会在device和host都编译。
图片
图片
图片
该例程虽然简单,也反映了典型的CUDA程序流程:
  • 分配host内存,并进行数据初始化;

  • 分配device内存,并从host将数据拷贝到device上;

  • 在device上调用CUDA的核函数(kernel)完成进行并行计算;

  • 将device上的运算结果拷贝到host上;

  • 释放device和host上分配的内存。

其中,kernel是在device上线程中并行执行的函数,核函数用__global__符号声明,在调用时需要用<<<grid, block>>>来指定kernel要执行的线程数量,在CUDA中,每个线程都要执行核函数,并且每个线程会分配一个唯一的线程号thread ID,这个ID值可以通过核函数的内置变量threadIdx来获得。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多