NVIDIA GPU架构与原理分析(一)——GPU简介与主流Fermi、Kepler架构GPU概述
1 GPU简介
图形处理单元GPU英文全称Graphic Processing Unit,GPU是相对于CPU的一个概念,NVIDIA公司在1999年发布GeForce256图形处理芯片时首先提出GPU的概念。GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作(主要是并行计算部分)。GPU具有强大的浮点数编程和计算能力,在计算吞吐量和内存带宽上,现代的GPU远远超过CPU。
目前NVIDIA最新的CUDA图形计算架构主要是Fermi架构和Kepler架构。

2 Fermi架构概述

上图是Fermi架构的GPU的核心架构图。基于GPU的第一代Fermi 架构拥有30亿个晶体管,512个CUDA Core。一个CUDA Core在一个时钟周期内执行一个线程(或kernel)中的一个浮点数或整数指令。512个CUDA Core是按照16个含有32个Core的SM(流式多处理器,也叫Scalar Processor,标量处理器)进行组织的。GPU拥有6个64-bit的显存分区(DRAM),因此支持384-bit的显存接口。最大支持6GB的GDDR5类型的显存容量,GPU和CPU之间通过PCI-e总线连接,千兆线程管理器负责将线程块分发到SM(流式多处理器)中。
3 Kepler架构概述
Kepler GK110由71亿个晶体管组成,速度最快,是有史以来架构最复杂的微处理器,GK110新加了许多注重计算性能的创新功能。GK110提供超过每秒 1 万亿次双精度浮点计算的吞吐量,性能效率明显高于之前的 Fermi 架构。除大大提高的性能之外,Kepler 架构在电源效率方面有 3 次巨大的飞跃,使 Fermi 的性能/功率比提高了 3 倍。
完整Kepler GK110架构包括15个SMX单元和六个64位内存控制器。每个SMX单元包含192个单精度CUDA Core、64个双精度单元(DP Unit)、32个特殊功能单元(SFU)和32个加载/存储单元(LD/ST),4 warp调度单元,8个指令分发单元。不同的产品将使用 GK110 不同的配置。例如,某些产品可能部署 13 或 14 个 SMX。

KeplerGK110的以下新功能提高GPU的利用率,简化了并行程序设计,并有助于GPU在各种计算环境中部署:
(1) Dynamic Parallelism——动态并行化
能够让 GPU 在无需 CPU 介入的情况下,通过专用加速硬件路径为自己创建新的线程,对结果同步,并控制这些线程的调度。
(2) Hyper-Q
Hyper - Q 允许多个CPU核同时在单一GPU上启动线程,从而大大提高了GPU的利用率并削减了CPU空闲时间。Hyper‐Q 增加了主机和 Kepler GK110 GPU 之间的连接总数(工作队列),允许32个并发、硬件管理的连接(与Fermi相比,Fermi 只允许单个连接)。Hyper - Q 是一种灵活的解决方案,允许来自多个 CUDA 流、多个消息传递接口(MPI)进程,甚至是进程内多个线程的单独连接。
(3) Grid Management Unit
使Dynamic Parallelism能够使用先进、灵活的GRID管理和调度控制系统。新 GK110 Grid Management Unit (GMU) 管理按优先顺序在 GPU上执行的Grid。GMU 可以暂停新 GRID 和等待队列的调度,并能中止 GRID,直到其能够执行时为止,为 Dynamic Parallelism 的运行提供了灵活性。GMU 确保CPU和GPU产生的工作负载得到妥善的管理和调度。
(4) 英伟达GPUDirect
英伟达GPUDirect能够使单个计算机内的GPU或位于网络内不同服务器内的GPU直接交换数据,无需进入CPU系统内存。GPUDirect 中的 RDMA 功能允许第三方设备,例如 SSD、NIC 和 IB 适配器,直接访问相同系统内多个 GPU 上的内存,大大降低 MPI 从 GPU 内存发送/接收信息的延迟。还降低了系统内存带宽的要求并释放其他 CUDA 任务使用的 GPU DMA 引擎。Kepler GK110还支持其他的GPUDirect功能,包括Peer-to-Peer和GPUDirect for Video。
NVIDIA GPU架构与原理分析(一)——GPU简介与主流Fermi、Kepler架构GPU概述的更多相关文章
- [转帖]万字详解Oracle架构、原理、进程,学会世间再无复杂架构
万字详解Oracle架构.原理.进程,学会世间再无复杂架构 http://www.itpub.net/2019/04/24/1694/ 里面的图特别好 数据和云 2019-04-24 09:11:59 ...
- Apache Flink:特性、概念、组件栈、架构及原理分析
2016-04-30 22:24:39 Yanjun Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(Flink Runtim ...
- CDN架构以及原理分析
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp61 在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应 ...
- gsensor架构和原理分析【转】
本文转载自:http://blog.csdn.net/u012296694/article/details/48055491 本文主要描述了在android2.3平台G-sensor相关软硬件的体系架 ...
- Ceph 架构以及原理分析
一.架构 Ceph在一个统一的系统中独特地提供对象,块和文件存储. Ceph高度可靠,易于管理且免费. Ceph的强大功能可以改变您公司的IT基础架构以及管理大量数据的能力. Ceph提供了非凡的可扩 ...
- CPU GPU设计工作原理《转》
我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...
- GPU的工作原理
转:https://blog.csdn.net/p23onzq/article/details/79609629 在GPU出现以前,显卡和CPU的关系有点像“主仆”,简单地说这时的显卡就是画笔,根据各 ...
- 深度学习中GPU和显存分析
刚入门深度学习时,没有显存的概念,后来在实验中才渐渐建立了这个意识. 下面这篇文章很好的对GPU和显存总结了一番,于是我转载了过来. 作者:陈云 链接:https://zhuanlan.zhihu. ...
- dubbo源码解析五 --- 集群容错架构设计与原理分析
欢迎来我的 Star Followers 后期后继续更新Dubbo别的文章 Dubbo 源码分析系列之一环境搭建 博客园 Dubbo 入门之二 --- 项目结构解析 博客园 Dubbo 源码分析系列之 ...
随机推荐
- css3实现连续不断的波浪
给的波浪要比容器大,然后在左边准备一个相同的,注意,波浪头尾要能衔接起来,接着运动的长度为波浪的宽度,然后不断重复就好了
- win7中如何恢复UltraEdit的默认配置
自己win7上安装的UltraEdit 17.10.0.1015.由于编码格式不知道什么时候被改乱了,导致UE编写的java程序出现如下两种编译错误: D:\jcode>javac testco ...
- Yii查看(输出)当前页面执行的sql语句
在Yii框架下查看当前页面执行的所有sql语句的方法,主要是通过配置相关文件来达到调试sql的目的,具体方法如下: (1)修改 index.php 开启调试模式 在 index.php 文件内增加如下 ...
- CCCC L2-024 部落【并查集】
https://www.patest.cn/contests/gplt/L2-024 首先在一行中输出这个社区的总人数.以及互不相交的部落的个数.随后对每一次查询,如果他们属于同一个部落,则在一行中输 ...
- Unity3d Inspector面板实现set/get访问器
简单说一下属性和字段的区别:字段就是成员变量,而属性确实提供给外部访问内部成员变量的接口.之所以会有属性的出现,就是为了避免外部对类的成员的直接访问,通俗的说就是OOP中的封装思想. using Un ...
- MX
A mail exchanger record (MX record) is a type of resource record in the Domain Name System that spec ...
- CF768
Codeforces Round #406 (Div. 1) A.Berzerk 考虑先手必胜态,一定是先手移动到某一个位置以后,这个位置是后手的必败态 考虑先手必败态,一定是无论先手如何移动,先手所 ...
- mysql InnoDb存储引擎索引
B+树索引:使用B+树索引查找数据时,并不能找到一个给定键值的具体行,只是找到被查找数据行所在的页,然后数据库通过把页读取到内存,再在内存中进行查找,最后得到要查找的数据. 聚集索引:按照表中主键构造 ...
- Java中Javadoc的{@link}与@see的简单区别
{@link}与@see这两个Javadoc注解都可以直接链接类和方法.用法基本一致. 但是@see必须顶头写,而{@link可以任意地方},如下所示: 参考: http://blog.csdn.ne ...
- IntelliJ IDEA中Spring Boot项目使用spring-boot-devtools无法实现热部署/热更新的问题解决
这个设置真的和Eclipse有很大区别,Eclipse中只要运行之后就可实现修改文件自动重启.但IDEA不太一样,需要做如下配置: 前提: 1.添加spring-boot-devtools到POM. ...