【GPU结构与CUDA系列0】背景知识:GFLOPS,带宽,延迟和吞吐量,乱序执行,上下文切换,指令集体系结构
1 GFLOPS
Giga Floating-point Operations Per Second
即10亿次每秒的浮点运算数,常作为GPU性能参数,但不一定代表GPU的实际表现,因为还要考虑具体如何拆分多边形和像素以及纹理填充,理论上该数值越高越好。
1GFlops = 1,000MFlops。
2 Bandwidth 带宽
带宽应用的领域非常多,可以用来标识信号传输的数据传输能力、标识单位时间内通过链路的数据量、标识显示器的显示能力。
- 在模拟信号系统又叫频宽,是指在固定的时间可传输的资料数量,亦即在传输管道中可以传递数据的能力。通常以每秒传送周期或赫兹(Hz)来表示。
- 在数字设备中,带宽指单位时间能通过链路的数据量。通常以比特率(单位bit per second,bps)来表示,即每秒可传输之位数。
3 Latency 时延 & Throughput 吞吐量
3.1 Latency 时延
延迟,也译潜伏时间,它是指做出触发动作与得到响应之间的时间间隔。
Latency is a time delay between the moment something is initiated, and the moment one of its effects begins or becomes detectable.
For example, the time delay between a request for texture reading and texture data returns.
3.2 Throughput 吞吐量
一般指相当一段时间内测量出来的系统单位时间处理的任务数或事务数(TPS)。注意“相当一段时间”,不是几秒,而可能是十几分钟、半个小时、一天、几周甚至几月。它的单位一般是TPS、每单位时间写入磁盘的字节数等。
低延迟不一定意味着高吞吐量。
Throughput is the amount of work done in a given amount of time.
For example, how many triangles processed per second
3.3 关于延迟和吞吐量
根据延迟和吞吐量我们还可以计算并发度(Concurrency),公式如下:
并发度=吞吐量∗延迟并发度= 吞吐量 * 延迟 并发度=吞吐量∗延迟
比如一个任务的处理花费1ms,吞吐量为1000tps,那么并发度就等于1/1000*1000=1,可以得出任务处理线程模型是单线程模型。
又比如一个HDD磁盘的延迟为8ms,但吞吐量可以达到每秒钟写40MB,那么每次磁盘寻道可以写入的数据量为(4010^6) * (810^-3)B = 320,000B = 320KB。
举个例子
我们可以把网络发送数据包比喻成去街边的 ATM 取钱。每一个人从开始使用 ATM 到取钱结束整个过程都需要一分钟,所以这里的延迟是60秒,那吞吐量呢?当然是 1/60 人/秒。现在银行升级了他们的 ATM 机操作系统,每个人只要30秒就可以完成取款了!延迟是 30秒,吞吐量是 1/30 人/秒。很好理解,可是前面的问题依然存在对不对?别慌,看下面。
因为这附近来取钱的人比较多,现在银行决定在这里增加一台 ATM 机,一共有两台 ATM 机了。现在,一分钟可以让4个人完成取钱了,虽然你去排队取钱时在 ATM 机前还是要用 30 秒!也就是说,延迟没有变,但吞吐量增大了!可见,吞吐量可以不用通过减小延迟来提高。
好了,现在银行为了改进服务又做出了一个新的决定:每个来取钱的客户在取完钱之后必须在旁边填写一个调查问卷,用时也是30秒。那么,现在你去取钱的话从开始使用 ATM 到完成调查问卷离开的时间又是 60 秒了!换句话说,延迟是60秒。而吞吐量根本没变!一分钟之内还是可以进来4个人!可见,延迟增加了,而吞吐量没有变。
从这个比喻中我们可以看出,延迟测量的是每个客户(每个应用程序)感受到的时间长短,而吞吐量测量的是整个银行(整个操作系统)的处理效率,是两个完全不同的概念。用作者的原话说是:
In short, the throughput is a function of how many stages are in parallel while latency is a function of how many are in series when there are multiple stages in the processing. The stage with the lowest throughput determines the overall throughput.
正如银行为了让客户满意不光要提高自身的办事效率外,还要尽量缩短客户在银行办事所花的时间一样,操作系统不光要尽量让网络吞吐量大,而且还要让每个应用程序发送数据的延迟尽量小。这是两个不同的目标。
4 Out-of-order execution 乱序执行
在计算机工程领域,乱序执行(错序执行,简称OoOE或OOE,也有说OoO)是一种应用在高性能微处理器中来利用指令周期以避免特定类型的延迟消耗的范式。
在这种范式中,处理器在一个由输入数据可用性所决定的顺序中执行指令,而不是由程序的原始数据所决定。在这种方式下,可以避免因为获取下一条程序指令所引起的处理器等待,取而代之的处理下一条可以立即执行的指令。
5 context switch 上下文切换
上下文切换,又称环境切换,电脑术语,是一个存储和重建CPU的状态(内文),因此令多个进程(process)可以分享单一CPU资源的计算过程。要切换CPU上的进程时,必需先行存储目前进程的状态,再将欲运行的进程之状态读回CPU中。
6 instruction set architecture 指令集体系结构(ISA)
ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,所处理的操作数存放的地址空间以及操作数类型。
ISA规定的内容包括数据类型及格式,指令格式,寻址方式和可访问地址空间的大小,程序可访问的寄存器个数、位数和编号,控制寄存器的定义,I/O空间的编制方式,中断结构,机器工作状态的定义和切换,输入输出结构和数据传送方式,存储保护方式等。
因此,可以看出,指令集体系结构是指软件能够感知到的部分,也称软件可见部分。
Last 参考文献
带宽_百度百科
比特率_百度百科
GPU 初理解 - 简书
GPU架构之处理模块 - 知乎
GPU中的基本概念 - 云+社区 - 腾讯云
CUDA, 软件抽象的幻影背后 之二 | 奇点视觉
CUDA, 软件抽象的幻影背后 | 奇点视觉
GPU编程1–GPU中的基本概念 - 知乎
(3条消息) gpu的单位表示_GPU中的基本概念_weixin_39717121的博客-CSDN博客
CUDA的thread,block,grid和warp - 知乎
GPU编程3–GPU内存深入了解 - 知乎
GPU架构之Hierarchy Memory多级存储 - 知乎
cuda编程(一):GPU概念与架构 - 知乎
【GPU结构与CUDA系列0】背景知识:GFLOPS,带宽,延迟和吞吐量,乱序执行,上下文切换,指令集体系结构相关推荐
- 【GPU结构与CUDA系列4】GPU存储资源:寄存器,本地内存,共享内存,缓存,显存等存储器细节
0 软件抽象和硬件结构对应关系的例子 把GPU跟一个学校对应起来,学校里有教学楼.操场.食堂,还有老师和学生们:很快有领导(CPU)来检查卫生(需要执行的任务Host程序),因此这个学校的学生们要完成 ...
- MSB3721 命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe“ 已退出 返回代码为1
MSB3721 命令""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe" ...
- 错误 1 error MSB3721: 命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe” -genco
错误 1 error MSB3721: 命令""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.e ...
- 开源一站式移动应用生成平台Jingub系列(0):背景资料介绍
为什么是跨平台技术 移动开发如日中天,很个人都想参与,我也不例外,但是我的背景却既没有object c也没有java的经验,当我看到有跨平台技术使用的是Html5/javascript的时候,我觉得这 ...
- 【华为云技术分享】STM32L476移植华为LiteOS系列教程------背景知识 1
一.这篇文章想向大家说明一个问题,我们开发单片机的本质是什么? 在最早的开发中,我们没有Keil.IAR等等一系列好用的单片机集成开发环境,注意这里的"集成",是指将多个软件其中有 ...
- 神经网络环境python2.7+tensorflow(gpu)+keras+cuda toolkit8.0+cudnn5.1+anaconda(ubuntu 16.04desktop64位)
tensorflow的GPU开发环境搭建有各种雷区,不是特别好布置,但是tensorflow开发环境又是目前运用很广泛的神经网络开发环境,所以我分享一下我的个人安装的经验. 首先是ubuntu的安装我 ...
- 使用anaconda配置标配版gpu的torch==1.2.0(30系列以下显卡)
使用anaconda配置标配版gpu的torch==1.2.0(30系列以下显卡) 环境内容 一.Anaconda环境配置 1.Anaconda的下载(可以跳过) 2.Anaconda的安装 二.Cu ...
- 来自GPU的Hello World-基于Win10+VS2019+CUDA 11.0搭建CUDA编程环境
序 CPU和GPU 当代计算机的两个核心,GPU计算与CPU计算的结合,使得原本的计算性能得到大幅度的提高,两者功能的互补性使得CPU+GPU的异构并行计算得到快速发展.为了支持使用CPU+GPU ...
- 安装指南:Win10系统+ tensorflow 1.7 GPU+Cuda v9.0+cudnnv7.1 +Python3.6
一开始安装在WIN10安装tensorflow GPU版本可以说是费尽周折,花了一周多的时间,发现版本有一点不对应,就没办法成功,所以每一步安装都要非常"精准",为了给新手扫盲,特 ...
- MX130+python3.7.6+CUDA 10.0+CUDNN 7.4.2+TensorFlow-gpu安装
MX130+CUDA 10.0+CUDNN 7.6.1+TensorFlow-gpu安装 一.CUDA安装 二.CUDNN安装 三.tensorflow-gpu安装 环境:GeForce MX130( ...
最新文章
- 汇编语言w3c_w3cschoolc语言教程
- 数据库设计和管理规范
- 轻量级高精度分割网络推荐
- R语言实战应用-基于R语言的对应分析
- eclipse新建项目有红叉_selenum+java+eclipse环境搭建和浏览器驱动配置
- 【小菜日志】用C#完成Allen Lee's Magic大虾推荐的F#作业F#学习中
- golang常用库:字段参数验证库-validator使用
- 为什么高手离不了Linux系统?我想这就是理由!
- 叛乱2正版怎么创服务器,Insurgency Linux Server 叛乱2创建服务器教程(转steam指南)
- oracle多表groupby,Oracle中group by用法
- 软件测试_性能测试_关注点
- 机器学习-样本集(包括训练集及测试集)的选取
- ASP.NET绑定控件语法
- 7、创建ROS msg和srv
- Asp.net自定义控件开发任我行(1)-笑傲江湖
- ps4 优酷 html5,ps4-hen-vtx/index.html at master · xvortex/ps4-hen-vtx · GitHub
- 3D迷宫(DirextX9)
- 将你的现实生活照片变成卡通头像
- 人生无意义,才更值得过,推石上山的搏斗本身,足以充实一颗人心,认清生活的荒诞,对它报之以微笑,就是对抗荒诞的最好方式
- 2020年3大免费又好用的BI工具软件