0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用VS2022对GPU进行CUDA编程

雷达通信电子战 来源:软硬件技术开发 2023-01-10 09:54 次阅读

在异构计算架构中,GPUCPU通过PCIe总线连接在一起来协同工作,CPU所在位置称为为主机端(host),而GPU所在位置称为设备端(device),两者优势互补。

CUDA作为GPU的编程模型,提供了对其他编程语言的支持,例如常用的C/C++Python等。

下面在windows系统下,使用VS2022对GPU进行CUDA编程。

开始之前你需要准备的硬件是:一块GPU显卡。并假设你已经提前安装了VS2022,而且具备一定的软件编程经验。

安装CUDA

首先进行CUDA编程模型的安装,根据自己的系统情况到CUDA官网下载安装包。下载完成后进行安装,过程很简单。

4ad74652-9034-11ed-bfe3-dac502259ad0.png

4aef7600-9034-11ed-bfe3-dac502259ad0.png

安装完成后,“win+R”输入cmd打开终端后输入:nvcc -V检验安装是否成功。

4b03222c-9034-11ed-bfe3-dac502259ad0.png

若需要下载以前的版本,你还可以点击查看你需要下载的CUDA版本:

4b0c1f08-9034-11ed-bfe3-dac502259ad0.png

4b156aae-9034-11ed-bfe3-dac502259ad0.png4accc088-9034-11ed-bfe3-dac502259ad0.png

创建VS2022项目

CUDA安装完成后,打开VS2022创建新项目,选择CUDA runtime。

4b46ccd4-9034-11ed-bfe3-dac502259ad0.png

4b65daac-9034-11ed-bfe3-dac502259ad0.png

4b820b5a-9034-11ed-bfe3-dac502259ad0.png

新建完成后有一个简单的例程,直接进行调试即可看到下面的结果:

4b934dd4-9034-11ed-bfe3-dac502259ad0.png

在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都编译。


4ba55a6a-9034-11ed-bfe3-dac502259ad0.png

4bc45776-9034-11ed-bfe3-dac502259ad0.png

4bec1b3a-9034-11ed-bfe3-dac502259ad0.png

该例程虽然简单,也反映了典型的CUDA程序流程:

分配host内存,并进行数据初始化;

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

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

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

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

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





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCIE总线
    +关注

    关注

    0

    文章

    58

    浏览量

    13351
  • python
    +关注

    关注

    55

    文章

    4778

    浏览量

    84439
  • CUDA
    +关注

    关注

    0

    文章

    121

    浏览量

    13597

原文标题:安装CUDA,并使用VS2022开始CUDA编程

文章出处:【微信号:雷达通信电子战,微信公众号:雷达通信电子战】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    有没有大佬知道NI vision 有没有办法通过gpucuda来加速图像处理

    有没有大佬知道NI vision 有没有办法通过gpucuda来加速图像处理
    发表于 10-20 09:14

    在K520上能使用两个GPU进行CUDA作业吗

    如果没有其他用户共享K520,您是否可以抓取两个GPU进行CUDA计算作业?我们的应用程序使用GPU进行显示和计算。当我们在AWS K520
    发表于 09-26 15:23

    CUDA编程教程

    Nvidia CUDA 2.0编程教程
    发表于 03-05 07:30

    linux安装GPU显卡驱动、CUDA和cuDNN库

    /deviceQuery若看到类似以下信息则说明 cuda 已安装成功: 7、安装cuDNN cuDNN是GPU加速计算深层神经网络的库。首先去官网 https://developer.nvidia.com
    发表于 07-09 07:45

    GPU加速的L0范数图像平滑(L0 Smooth)【CUDA

    GPU 加速的 L0 范数图像平滑(L0 Smooth)【CUDA
    发表于 07-08 12:10

    计算机组成原理 — GPU 图形处理器 精选资料分享

    目录文章目录目录显卡GPUCPU 与 GPU 的区别GPU 的架构CUDA 编程模式CUDA 的架构利用
    发表于 07-23 08:56

    VS2022破解vMicro

    VS2022破解vMicro以前一直在用VS2019来进行Arduino的开发,用的也是Visual Micro这款扩展。今天发现VS2022上也上架了这个扩展,就想着能不能把这个版本
    发表于 01-10 08:02

    GPU高性能运算之CUDA

      全面介绍使用CUDA进行通用计算所需   要的语法、硬件架构、程序优化技巧等知识,是进行GPU通用计算程序开发的入门教材和参考书。   本书共分5章。第1章
    发表于 08-16 16:21 0次下载

    NVIDIA GPU计算的关键技术解析

    NVIDIA采用了两项关键技术——G80统一图形与计算架构(最先采用于GeForce 8800、Quadro FX 5600与Tesla C870 GPU)和CUDACUDA作为一种软硬件架构,可采用多种高级
    发表于 08-09 09:56 2771次阅读

    CUDA学习笔记第一篇:一个基本的CUDA C程序

    1、CUDA的简介 2、GPU架构和CUDA介绍3、CUDA架构4、开发环境说明和配置5、开始第一个Hello CUDA程序    5.1、
    的头像 发表于 12-14 23:40 866次阅读

    CUDA简介: CUDA编程模型概述

    CUDA 编程模型中,线程是进行计算或内存操作的最低抽象级别。 从基于 NVIDIA Ampere GPU 架构的设备开始,CUDA
    的头像 发表于 04-20 17:16 2968次阅读
    <b class='flag-5'>CUDA</b>简介: <b class='flag-5'>CUDA</b><b class='flag-5'>编程</b>模型概述

    国产GPU绕不开的CUDA生态

    CUDA(Compute Unified Device Architecture,统一计算架构)是由英伟达所推出的一种集成技术,是该公司对于GPGPU的正式名称。通过这个技术,用户可利用NVIDIA的GPU进行图像处理之外的运算
    的头像 发表于 11-29 09:36 3603次阅读

    使用CUDA进行编程的要求有哪些

    CUDA是NVIDIA的一种用于GPU编程的技术,CUDA核心是GPU上的一组小型计算单元,它们可以同时执行大量的计算任务。
    的头像 发表于 01-08 09:20 2486次阅读

    GPU平台生态,英伟达CUDA和AMD ROCm对比分析

    CUDA 除了是并行计算架构外,还是 CPU 和 GPU 协调工作的通用语言。在CUDA 编程模型中,主要有 Host(主机)和 Device(设备)两个概念,Host 包含 CPU
    的头像 发表于 05-18 09:57 2289次阅读
    <b class='flag-5'>GPU</b>平台生态,英伟达<b class='flag-5'>CUDA</b>和AMD ROCm对比分析

    介绍CUDA编程模型及CUDA线程体系

    CUDA 编程模型主要有三个关键抽象:层级的线程组,共享内存和栅同步(barrier synchronization)。
    的头像 发表于 05-19 11:32 1811次阅读
    介绍<b class='flag-5'>CUDA</b><b class='flag-5'>编程</b>模型及<b class='flag-5'>CUDA</b>线程体系