CUDA编程(一):GPU计算与CUDA编程简介

  • GPU计算
    • GPU硬件资源
    • GPU软件资源
    • GPU存储资源
  • CUDA编程

GPU计算

NVIDIA公司发布的CUDA是建立在GPU上的一个通用并行计算平台和编程模型,CUDA编程可以利用GPU的并行计算引擎来更加高效地解决比较复杂的计算难题。GPU的并行计算最成功的一个应用就是深度学习领域。

GPU通常不作为一个独立运行的计算平台,而需要与CPU协同工作,它可以看成是CPU的协处理器,因此GPU的并行计算实际上是指基于CPU和GPU的异构计算架构,GPU和CPU之间通过PCIe总线连接在一起来协同工作。CPU的运算核心较少,但其可以实现复杂的逻辑运算,因此其适合控制密集型任务,而且CPU上的线程是重量级的。GPU的运算核心较多,其特别适合数据并行的计算密集型任务,其线程是轻量级的。基于CPU和GPU的异构计算平台可以优势互补,CPU负责处理逻辑复杂的串行计算程序,GPU主要处理数据密集型的并行计算程序,从而发挥最大的功效。

GPU硬件资源

在硬件上,GPU的资源包括SP和SM。

  • SP:最基本的处理单元,streaming processor,也称为CUDA core。具体的指令和任务都是在SP上处理的。GPU进行并行计算,也就是很多个SP同时进行运算。我们所说的几百核心的GPU值指的都是SP的数量;
  • SM:多个SP加上其他的一些资源组成一个streaming multiprocessor。也叫GPU大核,其他资源如:warp scheduler,register,shared memory等。SM可以看做GPU的心脏(对比CPU核心),register和shared memory是SM的稀缺资源。CUDA将这些资源分配给所有驻留在SM中的threads。因此,这些有限的资源就使每个SM中active warps有非常严格的限制,也就限制了并行能力。

每个SM包含的SP数量依据GPU架构而不同,Fermi架构GF100是32个,GF10X架构是48个,Kepler架构是192个,Maxwell架构是128个,Turing架构是64个。

GPU软件资源

从软件上看,即GPU的线程模型,可以分为Grid、Block、Thread和Warp。

  • Thread:一个CUDA的并行程序会被以许多个threads来执行。
  • Block:若干个threads组成一个block,同一个block中的threads可以同步,也可以通过shared memory通信。
  • Grid:若干个blocks可以组成Grid。
  • Warp:GPU执行程序时的调度单位,同一个warp里的线程执行相同的指令,即SIMT。

GPU存储资源

每一个Thread都有自己的local memoryresigters,每一个Block有shared memory,这个Block中的所有Thread都可以访问,Grid之间会有Global memoryCache,所有的Grid都可以访问。

CUDA编程

CUDA提供了多种编程语言支持,如C/C++、Python、Fortran等。
CUDA编程工具:

  • 编译器:nvcc
  • 调试器:nvcc-gdb
  • 性能分析:nsight、nvprof。

CUDA编程模型是一个异构模型,它假设系统是由一个主机和一个设备组成的,而且各自拥有独立的内存,CPU所在位置称为主机端(host),而GPU所在位置称为设备端(device)。一个CUDA程序即包含host程序,也包含device程序,CUDA程序在运行时可以分配和释放设备上的内存,并且在主机内存和设备内存之间进行传输,在设备上运行核函数。

典型的CUDA编程包括以下五个流程:

  1. 分配GPU内存,并进行数据的初始化;
  2. 从CPU内存中拷贝数据到GPU内存中;
  3. 调用CUDA的核函数来完成指定的计算;
  4. 将数据从GPU内存中拷贝回CPU内存中;
  5. 释放GPU内存。

CUDA编程(一):GPU计算与CUDA编程简介相关推荐

  1. CUDA刷新:GPU计算生态系统

    CUDA刷新:GPU计算生态系统 CUDA Refresher: The GPU Computing Ecosystem 这是CUDA Refresher系列的第三篇文章,其目标是刷新CUDA中的关键 ...

  2. CUDA:主导GPU计算的革命

    G80计算架构 真正的革命来自于2006年,NVIDIA在这一年推出了基于DX10统一渲染体系的旗舰图形处理器G80,当人们为其强悍的3D效能惊叹时,有谁又会想到NVIDIA这次会给那些GPU通用运算 ...

  3. 两种GPU计算平台:CUDA 与 OpenCL

    目录 1.硬件层面 2.操作系统 3.软件和社区 4.编程模型 5.CUDA 的优点和局限性 优点 限制 6.OpenCL 的优点和限制 优点 限制 7.补充一点 参考 1.硬件层面 图形加速器的三大 ...

  4. 2021CUDA编程:加速计算基础 —— CUDA C/C++

    之前在写代码时,参照了这位博主的文章,里面的思想给了我不少启发. 但应该是由于CUDA上这一作业题目的源码进行过更改,所以文章里面的代码直接提交会有不少错误,主要有以下几个: 报错fatal erro ...

  5. 位移传递率matlab编程,机械振动设计计算与VB编程实例

    1 编写机械振动计算程序的一般步骤1 1.1 明确编写程序的目的和了解清楚相关的计算公式.物理量纲1 1.2 在简单的界面上用BASIC编写计算程序并完成调试2 1.3 设计一个较为完备的用户界面4 ...

  6. CUDA 并行计算 机器学习 NVCC CUDNN CUDATOOLKIT CUDA DRIVER 显卡驱动(NVIDIA Driver) 显卡(GPU)

    微信公众号: 点击蓝色字体小白图像与视觉进行关注 关于技术.关注yysilence00.有问题或建议,请公众号留言 整理知识,学习笔记 发布日记,杂文,所见所想 CUDA 并行计算 机器学习 NVCC ...

  7. nVIDIA标准计算体系结构(编程指南)

       一. 简介 1.1    在数据上并行的图形处理单元擅长计算特别是并行计算,源于硬件设计上更多的偏重于数据处理,而不是像CPU一样既重视数据缓存还要兼顾流水线控制. 高算术强度(算术强度=算术操 ...

  8. GPU驱动、CUDA和cuDNN之间的版本匹配与下载

    文章目录 GPU驱动.CUDA和cuDNN之间的版本匹配与下载 1. GPU驱动 2. CUDA 2.1. 查看自己GPU驱动的版本 2.2. 确定与GPU驱动匹配的CUDA版本 2.3. 下载CUD ...

  9. 题目 1010: [编程入门]利润计算

    题目 1010: [编程入门]利润计算 [编程入门]利润计算 题目 1010: [编程入门]利润计算 题目描述 输入格式 输出格式 样例输入 样例输出 时间限制: 1s 内存限制: 128MB 提交: ...

最新文章

  1. 批量替换_批量替换图框
  2. 【组队学习】【32期】SQL编程语言
  3. Android开发之大位图二次采样压缩处理(源代码分享)
  4. DL之ResNet:ResNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  5. 1.2 Collection接口
  6. 如何查看无线网卡型号_如何检查笔记本电脑是否具有内置无线网卡?
  7. std::call_once写单列模式
  8. jQuery的$(document).ready()和JavaScript onload事件
  9. 华为私有云的搭建方案_华为云搭建word press
  10. (uC/OS-II学习笔记) 消息邮箱消息队列
  11. 毕啸南专栏 | 专访云迹科技CEO支涛:人类可能会变成半机器人
  12. 技巧篇-图层叠加之美(一)
  13. 云服务器上安装Anaconda3 (亲测有效)
  14. html5图片自动轮播纯代码,HTML5的自定义data-*实现图片切换或者轮播(代码实例)...
  15. css 改变图片的背景色,css3实现背景图片颜色修改的多种方式
  16. win8访问不了服务器共享文件夹,如何解决Win8局域网无法访问共享文件夹的问题...
  17. 香港保险和内地保险的利与弊,有什么区别?
  18. 北洋大讲堂之“斯凯网络CEO宋涛-我的创业之路”感想
  19. 【基于matlab数字图像处理GUI代码】_数字图像处理考核论文_大作业_项目
  20. vivado 使用DocNav查xilinx资料

热门文章

  1. 汇川AM401非标准协议通讯socket_client
  2. 从零学习知识图谱——04(常见知识库及知识图谱的知识表示方法 )
  3. Axure rp 8中继器基础使用
  4. 专科论文查重率要求多少?
  5. FTP服务器和客户端
  6. css点击字变颜色_使用CSS颜色关键字
  7. 宝安日报:联诚发跨界创新“追光”十九载!
  8. 网站关键词排名到前3名SEO技巧
  9. 【C++】面试题目,整理自牛客网
  10. html px2rem转化器,【技术】移动端适配 px2rem/px2vw 的原理与实现