Nvidia Pascal GP100 架构
一:介绍
本文是 参考Nvidia 的Pascal Whitepaper 总结了 Pascal 架构的新特性。
Nvidia 最新的加速卡
Tesla P100 使用了 GP100 核心,GP100采用了最新Pascal架构。

Tesla P100 的关键特性:
1、极强的性能,半精度浮点性能达到21.2Tflops,单精度浮点性能达到10.6Tflps,双精度浮点性能达到5.3Tflops
2、NVlink技术
3、HBM2内存接口
4、统一内存、计算优先、新的AI算法
5、16nm工艺
二:新特性
2.1 性能
半精度浮点性能达到21.2Tflops,
单精度浮点性能达到10.6Tflps,
双精度浮点性能达到5.3Tflops
NVLink 是连接GPU-GPU 和 GPU-CPU 的新的接口,
其带宽可达
160 Gigabytes/second (双向),是PCIe3x16的5倍。
HBM2 是高速的GPU内存架构技术,H
BM2 的内存带宽是
Maxwell GM200 GPU. 的3倍,达到了720GB/s
。
- 统一内存寻址简化了GPU的编程,GP100 是首次支持硬件页错技术(hardware page faulting),49-bit (512 TB) 的虚拟地址空间。
- 计算优先(compute preemption)也是GP100的新的特性,在指令级的粒度上计算任务可以被抢占,在之前的架构(Maxwell和kepler)则是线程块级的。计算优先可以阻止长时间独占系统或超时的应用。
GP100有60个SM,但是Tesla P100使用了56个SM
A full GP100 consists of :
- 6个GPC( Graphics Processing Clusters),每个GPC包含10个SM,每个SM包括64个CUDA核 和4个纹理单元,
- 60个 Pascal SMs (SM units in GP100 are called SM units), (总共3840单精度CUDA核)
- 30 TPCs (Texture Processing Clusters )每个TPC包含2个 SMs
- 8个 512-bit 内存控制器 (总共4096 bits ).,每个内存控制单元连接512KB的L2 cache,(总共4096KB的L2 cache)
- 每个SM有64个单精度的CUDA核心(上图绿色块),而Maxwell的SM是128的单精度CUDA核,kepler是192个CUDA核。
- GP100的SM被分为了两个处理器块,每个处理器块包含了32个单精度CUDA核、一个指令缓存、一个warp调度、两个分发单元。
- GP100 单精度的 CUDA Cores 可以处理单精度和半精度,处理半精度的带宽是单精度的两倍。
GP100的每个SM包含了32个双精度的CUDA核心(上图黄色块),数量是单精度CUDA核的一半,这个GP100 共有1920个双精度CUDA核心。
Note: In GP100, two FP16 operations can be performed using a single paired-operation instruction.
3.5、原子操作
atomicAdd()函数作支持 32位和64的整型和浮点型数据原子加操作。对浮点数的原子加操作的舍入模式是
round-to-nearest-even,之前的32位浮点加操作的舍入模式是 round-to-zero。
3.6、L1/L2 Cache
从Maxwell架构开始cache的层次已经改变,每个SM 有独立的64KB的share Memory,L1 cache 也可以作为 texture cache,统一的
L1/texture cache可以合并一些内存访问。
GP100有4096 KB L2 cache。
Note: One CUDA Thread Block cannot allocate 64 KB of shared memory by itself, but two Thread Blocks could use 32 KB each, etc.
GPUdirect 可以使得在一个服务器节点内或者不同的服务器节点通过网络 GPU之间数据传输,不需要通过CPU/系统 内存。GPUdirect中RDMA允许第三方设备例如 IB网卡,网卡(NIC)、SSD 直接访问GPU内存,减去了系统内存带宽、及不需要GPU的DMA的参与。GP100的RDMA的带宽增加了一倍(通过PCIe 从GPU内存读数据 写到NIC的内存)。
GP100 支持最新的计算能力 6.0
Tesla P100的内存
是
HBM2
16
GB内存,内存带宽是760GB/s。
HBM2内存支持ECC(
error correcting code
)
GK110 Kepler 架构的GPUs为GDDR5内存 提供ECC保护是通过为ECC分配一些内存。GDDR5需要为ECC比特为预留6.25%的内存。例如:如果打开ECC,则12GB内存的Kepler K40 需要为ECC预留750MB,导致只有11.25GB的内存可被使用。 另外,访问ECC bits也会导致内存带宽降低12~15%。HBM2内存支持ECC不说这些影响。 Tesla P100 加速卡的 HBM2 内存保护 (a Single‐Error Correct Double‐Error Detect (SECDED) ECC code).
NVLink提高了GPU之间和GPU访问系统内存的性能。使用NVLink连接的GPU可以直接访问另外一个GPU的本地内存。单路连接双向带宽可达40GB/s。Tesla P100 支持4路,因此双向的带宽可达160GB/s。
上图8个GPU的混合立方体结构,GPU之间通过NVLink连接,没4个GPU通过PCIe与各自的CPU连接。
CPU与GPU直接也可通过NVLink连接,如上图的Figure16 和 Figure17
相比与CUDA6的统一内存,Pascal GP100的统一内存加入两个新的硬件特性:支持更大的内存空间和页错误能力( page faulting apability.)
GP100 的虚拟地址空间扩展到了 49-bit。GP100统一内存的程序可以访问在统一虚拟内存空间中所有GPU内存和系统内存,不受任何处理器的物理内存的限制。(这个好处就是GPU使用的内存不在受限于它自己的本地的物理内存,之前的架构是不允许的。)
页错误(page faulting)是一个新的特性,优点:1、可以使CUDA系统软件不必在启动kernel前,同步所有已经在GPU上分配的内存。如果运行在GPU上的kernel要访问的内存页不在GPU内存上,则出现页错误,会自动的将所需要的内存页加载到GPU内存中。当然也可将需要的页映射到GPU的内存地址空间中,GPU则可以通过PCIe或者NVLink访问。 映射 有时 会比 加载内存页 速度更快。这个需要映射或加载的内存有 可以在CPU系统内存中或是在其他的GPU内种。 新的页错误,保证了在统一内存中 全局数据一致性,这就不需要程序员保证CPU和GPU的数据一致性了(在之前的架构则不是不可以的)。
Note: As with any parallel application, developers need to ensure correct synchronization to avoid data hazards between processors.
如果你使用了系统的分配器
(for
example, malloc or new),则操作系统需要做一些修改。
Pascal GP100 的计算优先(Compute Preeemption)特性,运行在GPU上的计算任务在指令级被中断,并且上下文被切换到GPU DRAM.
计算优先解决了 长时间运行 或者 因为某个非法行为的应用 独占系统 的问题 。
计算优先解决了 长时间运行 或者 因为某个非法行为的应用 独占系统 的问题 。
计算优先可以在一块GPU系统中,调试kernel。
.