大数跨境
0
0

从CUDA到DPU,Nvidia背后的秘密

从CUDA到DPU,Nvidia背后的秘密 Socnoc
2021-08-17
1
导读:今天我们借Nvidia GPU或者高性能计算,聊一聊Nvidia DPU的秘密。为什么Nvidia要做DPU,未来Nvidia会如何打通的DPU和GPU,DPU和GPU如何协同计算?同时在这中间XPU

    上篇文章我们主要谈了成本问题,于是有大厂问我们性能问题,问我们XPU能不能做“高性能计算”,能不能做Data Fabric,做资源池化。同时还有些没有搞明白系统架构的“技友”认为数据芯片必须是网络芯片才行。


    今天我们借Nvidia GPU或者高性能计算,聊一聊Nvidia DPU的秘密。为什么Nvidia要做DPU,未来Nvidia会如何打通的DPU和GPU,DPU和GPU如何协同计算?同时在这中间XPU能起到什么作用?

 

一、数据处理

 

    之前我们介绍了,数据从网络到设备是要经过CPU的。详细路径是网络、系统内存、设备内存。在整个过程中虽然CPU由于content switch的原因会增加中断和延迟,但实际高性能网络计算中,我们都会选用独占计算核心的方式加速网络处理。比如在DPDK软件架构中我们可以做两个优化来提升网络处理能力:

  1. 独占式CPU核心处理网络计算 + AVX指令

  2. 让L3缓存地址(hot memory)和网卡(NIC)的设备内存(device memory)重合,提升I/O性能

第一点是Intel CPU和现在arm CPU都开始支持的特点,在smartNIC、DPU中都利用了这一点来提升网络处理能力,技术趋势应该是增加AVX位宽或者干脆放一个阉割的GPU进来加强处理。

第二点比较难,基本除了Intel其他公司很难利用这一个特点,未来Intel肯定会在这一块上做文章,提升Intel低端CPU的网络处理能力。其他几家的技术趋势是提升内存的吞吐率,也就是将DDR4升级成HBM或者HBM2、HBM3。当DPU系统的RAM升级到HBM2之后,CPU L3的优势将不再存在,未来CPU的架构会进一步变革(GPU的性能提升除了计算核心多,另外一大原因就是显存速率极大)。

    通过设计数据结构和系统架构,流量处理可以直接利用L3,数据到计算核心的路径非常短。如果每个核心可以处理10G流量,那么16个核心就可以处理160G的流量了。于是ARM多核心架构对于网络流量处理具备先天优势。所以我们可以总结如下:

  • 高速IO有利于流量处理,直接到CPU L3或者配备HBM2高速内存最好

  • 多核心并行处理,每个核心处理一个网络VF流量最佳

 

二、GPU高性能计算

 

“冯诺伊曼架构下的高性能计算的核心是结构化管理多host、多GPU的内存”


    由于DDR4和HBM的速率是远远超过SSD等存储介质的。所以大部分SmartNIC面临的尴尬在于,如果仅仅由于网络流量加速和存储加速应用场景,Intel DPDK + FPGA是具备足够竞争力的。Intel DPDK降低网络路径,FPGA增加算力。在传统的存储加速市场,Intel的问题是要不要开放高级功能给低端CPU。因为这样会挤压Intel高端CPU的利润空间。现在Intel推出的IPU应该是沿着这一条技术路线调整,通过封装技术进一步降低成本,通过增加功能提升价格,从而提升解决方案的利润率。

 

    真正对网络数据延迟非常敏感的行业是GPU集群技术,比如GPU集群ML训练等专用计算领域。



    传统高性能计算架构中,网卡设备和GPU设备都属于CPU的PCIe设备树(Device Tree)下的一个节点。在现代操作系统中,每个设备在系统内存中存在一个缓存区域(device memory space)用于CPU和设备DMA的数据系统作用。一般来说当数据从网卡中流入系统的时候,数据包先,1)到NIC内存(NIC DMA处理),然后2)driver(系统级别)将数据搬移到GPU内存中,3)GPU的DMA再将数据从GPU内存同步到GPU显存中(GPU卡上的onboard内存)。如果网卡和GPU之间的driver开发不优化的话,可能数据还要从kernel space到user space走一圈。总结来说,在传统高性能计算中,数据流量优化主要有以下4条:


1. Bar Transfer 避免数据在host 内存中的多次读写,但一般至少得一到两次

2. 从GPU host 内存到GPU显存时,对数据进行压缩,这样充分利用PCIe的高吞吐率,但会增加系统延迟,一般根据应用来优化

3. CUDA核心读取读取显存数据的时候,一次读取整条,比如1024B,或者2048B等,提升GPU显存的吞吐量

4. 利用软件优化CUDA核心的IO和计算时间,需要对应用非常了解,同时利用GPU的scheduler特色

    根据我个人多年经验来看,基本上当前采用的优化方法为1和3,2和4比较难,需要对应用和系统都非常了解。

    在GPU核心数量已经达到3000+以上的今天,内存IO的问题更加明显,主要发生在网卡系统内存、和PCIe吞吐量和GPU显存上。

高性能计算系统优化方法:GPU and CUDA


 三、Nvidia为什么要收购Mellanox?

 

    前些天和一位Fungible的高管交谈中,对方说黄教主收购Mellanox做DPU得到了Fungible的很多启发。的确从名字看来Nvidia的确抄袭了Fungible,但从解决的问题出发,Nvidia的目标不在流量卸载。虽然由于技术来源Mellanox,所以当代DPU或者SmartNIC有明显的卸载和云管理特色。但从长远来看,Nvidia需要或者正在解决的是,数据如何高速从DPU“直接”到达GPU。

    为什么Nvidia要收购Mellanox而不是其他网络公司呢?在硅谷和以色列存在大量的网络芯片公司,唯独Mellanox吸引了Nvidia的兴趣。原因是什么呢?

    笔者从网络协议层考虑,Nvidia收购Mellanox的本质原因其实不是网络技术,而是为了IB和RDMA协议。

基于不同协议的内存管理方案


    “RDMA是基于IB技术的一种远程类总线协议(共享内存)”。在HPC行业MPI对IB的支持非常悠久和成熟。所以Nvidia又开始了GPU的老套路,从HPC行业入手。所以大家看到在黄教主GPU的ppt中一般都会出现MPI,现在在DPU的ppt中也出现了MPI。笔者认为,一是因为黄教主对HPC情有独钟,二是的确HPC行业不缺钱,三是因为HPC行业对GPU和Mellanox都不陌生,基本上做HPC应用的人都知道Nvidia和Mellanox,市场切入非常快。所以笔者认为如果不在IP协议(L3层)之下创新,DPU公司无法面对Nvidia+Mellanox的竞争。

 

四、XPU的创新


    在之前我们介绍过,XPU是一个基于PCIe技术的数据芯片,我们基于传统北桥技术,开发自己的协议和架构,构建专注于L2数据转发。从CPU为中心的架构中重新释放北桥的中心地位,构建下一代,“解耦合、可组合、高速、低成本”的计算架构。


在XPU架中,数据转发完全不需要host CPU参与,数据可以直接传递到GPU或者SSD中。

基于PCIe Fabric的RDMA协议将实现多设备数据互联互通。由于不需要经过状态转换,XPU实现更高的数据传输效率。


XPU将彻底释放PCIe能力,无需CPU即可以构建网络和可组合基础设施


最后我们用一个动图总结当前高性能计算系统优化方法

High Performance Computing for All!



One More Thing


    由于data本身的特色(参考网络通讯设备市场),数据芯片未来会分为L2/L3(交换芯片XPU)、L3以上(计算芯片DPU)、和可能的控制器(Controller,IPU)几种。我们专注于交换和软件:

  • XPU专注高速交换

  • DPU专注数据处理

  • IPU专注集群管理


    写到最后,笔者认为,计算架构的创新是一个螺旋式发展的过程,从集中到分布,从聚合到接偶,从云到边缘,技术的主线是围绕着计算和IO的平衡来发展,驱动力却是性能和价格的平衡。在摩尔定律失效的时代,通过工艺提升来降低成本的优势不在存在,给新计算架构带来了巨大机会!

【声明】内容源于网络
0
0
Socnoc
边缘智芯是一家创新型芯片和系统架构设计公司。边缘智芯的技术理念为利用超低延迟的组网芯片构建低功耗、多并发、高性能、一机多卡、一芯多机的可组合的服务器和服务器集群。
内容 24
粉丝 0
Socnoc 边缘智芯是一家创新型芯片和系统架构设计公司。边缘智芯的技术理念为利用超低延迟的组网芯片构建低功耗、多并发、高性能、一机多卡、一芯多机的可组合的服务器和服务器集群。
总阅读8
粉丝0
内容24