CUDA编程(一):GPU计算与CUDA编程简介
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 memory
和resigters
,每一个Block有shared memory
,这个Block中的所有Thread都可以访问,Grid之间会有Global memory
和Cache
,所有的Grid都可以访问。
CUDA编程
CUDA提供了多种编程语言支持,如C/C++、Python、Fortran等。
CUDA编程工具:
- 编译器:nvcc
- 调试器:nvcc-gdb
- 性能分析:nsight、nvprof。
CUDA编程模型是一个异构模型,它假设系统是由一个主机和一个设备组成的,而且各自拥有独立的内存,CPU所在位置称为主机端(host),而GPU所在位置称为设备端(device)。一个CUDA程序即包含host程序,也包含device程序,CUDA程序在运行时可以分配和释放设备上的内存,并且在主机内存和设备内存之间进行传输,在设备上运行核函数。
典型的CUDA编程包括以下五个流程:
- 分配GPU内存,并进行数据的初始化;
- 从CPU内存中拷贝数据到GPU内存中;
- 调用CUDA的核函数来完成指定的计算;
- 将数据从GPU内存中拷贝回CPU内存中;
- 释放GPU内存。
CUDA编程(一):GPU计算与CUDA编程简介相关推荐
- CUDA刷新:GPU计算生态系统
CUDA刷新:GPU计算生态系统 CUDA Refresher: The GPU Computing Ecosystem 这是CUDA Refresher系列的第三篇文章,其目标是刷新CUDA中的关键 ...
- CUDA:主导GPU计算的革命
G80计算架构 真正的革命来自于2006年,NVIDIA在这一年推出了基于DX10统一渲染体系的旗舰图形处理器G80,当人们为其强悍的3D效能惊叹时,有谁又会想到NVIDIA这次会给那些GPU通用运算 ...
- 两种GPU计算平台:CUDA 与 OpenCL
目录 1.硬件层面 2.操作系统 3.软件和社区 4.编程模型 5.CUDA 的优点和局限性 优点 限制 6.OpenCL 的优点和限制 优点 限制 7.补充一点 参考 1.硬件层面 图形加速器的三大 ...
- 2021CUDA编程:加速计算基础 —— CUDA C/C++
之前在写代码时,参照了这位博主的文章,里面的思想给了我不少启发. 但应该是由于CUDA上这一作业题目的源码进行过更改,所以文章里面的代码直接提交会有不少错误,主要有以下几个: 报错fatal erro ...
- 位移传递率matlab编程,机械振动设计计算与VB编程实例
1 编写机械振动计算程序的一般步骤1 1.1 明确编写程序的目的和了解清楚相关的计算公式.物理量纲1 1.2 在简单的界面上用BASIC编写计算程序并完成调试2 1.3 设计一个较为完备的用户界面4 ...
- CUDA 并行计算 机器学习 NVCC CUDNN CUDATOOLKIT CUDA DRIVER 显卡驱动(NVIDIA Driver) 显卡(GPU)
微信公众号: 点击蓝色字体小白图像与视觉进行关注 关于技术.关注yysilence00.有问题或建议,请公众号留言 整理知识,学习笔记 发布日记,杂文,所见所想 CUDA 并行计算 机器学习 NVCC ...
- nVIDIA标准计算体系结构(编程指南)
一. 简介 1.1 在数据上并行的图形处理单元擅长计算特别是并行计算,源于硬件设计上更多的偏重于数据处理,而不是像CPU一样既重视数据缓存还要兼顾流水线控制. 高算术强度(算术强度=算术操 ...
- GPU驱动、CUDA和cuDNN之间的版本匹配与下载
文章目录 GPU驱动.CUDA和cuDNN之间的版本匹配与下载 1. GPU驱动 2. CUDA 2.1. 查看自己GPU驱动的版本 2.2. 确定与GPU驱动匹配的CUDA版本 2.3. 下载CUD ...
- 题目 1010: [编程入门]利润计算
题目 1010: [编程入门]利润计算 [编程入门]利润计算 题目 1010: [编程入门]利润计算 题目描述 输入格式 输出格式 样例输入 样例输出 时间限制: 1s 内存限制: 128MB 提交: ...
最新文章
- 批量替换_批量替换图框
- 【组队学习】【32期】SQL编程语言
- Android开发之大位图二次采样压缩处理(源代码分享)
- DL之ResNet:ResNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- 1.2 Collection接口
- 如何查看无线网卡型号_如何检查笔记本电脑是否具有内置无线网卡?
- std::call_once写单列模式
- jQuery的$(document).ready()和JavaScript onload事件
- 华为私有云的搭建方案_华为云搭建word press
- (uC/OS-II学习笔记) 消息邮箱消息队列
- 毕啸南专栏 | 专访云迹科技CEO支涛:人类可能会变成半机器人
- 技巧篇-图层叠加之美(一)
- 云服务器上安装Anaconda3 (亲测有效)
- html5图片自动轮播纯代码,HTML5的自定义data-*实现图片切换或者轮播(代码实例)...
- css 改变图片的背景色,css3实现背景图片颜色修改的多种方式
- win8访问不了服务器共享文件夹,如何解决Win8局域网无法访问共享文件夹的问题...
- 香港保险和内地保险的利与弊,有什么区别?
- 北洋大讲堂之“斯凯网络CEO宋涛-我的创业之路”感想
- 【基于matlab数字图像处理GUI代码】_数字图像处理考核论文_大作业_项目
- vivado 使用DocNav查xilinx资料