
GPU发展之初,是作为集成单元与其他硬件聚合在一起,也就是我们所熟知的显卡。1999年,NVIDIA发布Geforce256,正式提出GPU概念;2006年,NVIDIA发布GeForce8800,发布CUDA,一种后面得到广泛使用的GPU编程语言;2011年,NVIDIA发布Tesla系列,形成计算产品线,GPU开始更多地应用于科学计算领域。2011年至今,GPU快速发展,主要被NVIDIA和AMD所垄断,一些国产公司也开始研发一些替代品。
现在,GPU在CUDA语言的基础上,提供了对于多种语言如C++、python的支持,并且有很多现成的算法库用来进行深度学习,矩阵乘法,通用计算等等。这些很大程度上降低了GPU编程的门槛,使得GPU的进一步广泛应用成为了可能。
目前GPU的主要应用有三个领域:
1) 通用高性能计算,例如自动驾驶、智慧医疗、生命科学、云计算、数据处理、金融等方面。
2) 人工智能计算。
3) 图形计算。
2021图灵奖于近日揭晓,高性能计算先驱Jack Dongarra获奖,以表彰他在高性能计算领域所做出的突出贡献。他曾经说“未来的计算结构会是CPU和GPU的结合。”可见GPU正越来越受到大家的关注和认可。
提到GPU的发展,我们就不得不提NVIDIA一年一度的技术大会(GTC),每次都会发布最近的技术或产品。GTC 2022于3月22日召开,发布了NVIDIA的最新一代GPU H100。它采用的是台积电4nm工艺, 拥有800亿晶体管;对比A100,有300%~600%的性能提升;一块 H100 的 IO 带宽就是 40 terabyte 每秒。
“为了形象一点说明这是个什么数字,20块英伟达 H100 带宽就相当于全球的互联网通信。”黄仁勋说道。
同时,NVIDIA宣布基于 H100 芯片即将自建一个名叫 EoS 的超级计算机,其由 18 个DGX POD 组成,一共 4608 个 H100 GPU,从 AI 计算的角度来看,EoS 输出18.4 Exaflops,是当今全球第一超算富岳的四倍。NVIDIA表示,阿里云、亚马逊AWS、谷歌云和微软Azure等大公司都将采用英伟达的新芯片。此外,戴尔和惠普企业等计算机制造商将提供基于这些新芯片的计算机。除此之外,新一代的H100也提供了许多新特性,例如支持机密计算、加速动态编程算法、新一代NVLink等等。
可以看出H100相比较于上一代的A100,有巨大的性能优势,是NVIDIA发布的又一个里程碑式的产品。
近年来,国产GPU也有了长足的发展。3月30日下午,北京GPU创企摩尔线程推出基于架构MUSA的首款GPU苏堤,以及基于苏堤的首款台式机显卡MTT S60、首款服务器产品MTT S2000。摩尔线程创始人兼CEO张建中为前英伟达全球副总裁、中国区总经理。苏堤是摩尔线程的全功能GPU,有图形、智能多媒体、AI、物理四大引擎,在此之上有各种编译工具及平台,并支持OpenCL、SYCL、CUDA、Vulkan、DirectX、OpenGL/GLES等主流编程接口,还有针对具体应用的各类行业解决方案。特别地,基于苏堤的首款台式机显卡MTT S60,据张建中介绍,是第一款能打英雄联盟游戏的国产显卡,支持所有主流国产PC操作系统。苏堤对于GPU全功能的实现,对于各种主流编程接口的支持,使得它在各种服务器或数据中心中有一席之地;而对于主流游戏的支持,也使得它出现在个人PC上成为可能。总之,这是国产GPU发展的一个重要里程碑,虽然比NVIDIA的旗舰GPU还有一些性能差距,但是国产GPU首次发布出来,并且在商业市场上有一定的竞争力。
图2:摩尔线程发布会现场
二.GPU架构的简单介绍
图3:H100的架构示意图
图4:GPU和CPU的架构比较
图5:硬件层面和软件层面的GPU架构
图6:warp中线程访存的几种方式Warp的并行和访存特性,决定了GPU更加适合处理规则的,简单的任务,也是“GPU不适合处理复杂逻辑”的原因。因而我们在算法设计的时候,必须注意到这一点,充分考warp的特性,尽量避免线程发散,尽量让线程进行合并访存,这是GPU上进行程序设计的基本原则。
三.两个GPU上的工作
接下来我们将通过levelDB和RocksDB上的两个例子,介绍GPU在基于LSM-tree的数据库上可以做什么。
(一)LUDA--利用GPU加速LSM-tree的compaction操作[1]
1. 动机
图7:rocksDB在不同CPU overhead下的性能2. compaction的实现
图8: CPU上的compaction操作流程
图9:使用GPU加速的compaction流程GPU在进行数据的编码和解码的同时,也会进行其他一些计算密集型的操作,例如构建bloom filter和checksum检查等等,有效地减少了GPU的工作量。
在图9中的步骤二和步骤四中,也就是GPU和CPU之间进行数据传输时,采用的是异步的数据传输,可以有效地提高计算和数据传输的并行性,掩盖数据传输延迟。
3. 实验
图10:不同CPU负载下的吞吐量
图11:不同CPU负载下的运行时间(二)OurRocks:利用GPU加速LSM-tree的SCAN操作[2]
1. 动机
基于NVMe协议的SSD最高能够实现GB/s的数据传输带宽,但是目前基于CPU的LSM-tree数据库对于SSD的带宽应用非常有限,哪怕考虑上多线程技术,AVX技术,异步IO等等,如图11所示,哪怕是在8-client的环境下,在实际业务场景中SSD的真实带宽也仅仅有十几GB/s或者几十GB/s,仅仅是理论SSD最高带宽的几十分之一。

图13.Myrocks中处理每个分析性查询时CPU每个核的利用率所以MyRocks想利用GPU和SSD之间直接进行数据通信的特性,辅助CPU进行SCAN操作,减少CPU的访存开销和计算代价。
2. 背景知识
LSM-tree中的读操作,由于LSM-tree本身的特性,会带来额外的代价,称为读放大。
NVIDIA GPUDirect RDMA(remote direct memory access)为GPU和其他第三方设备(例如网卡,SSD等)的直接数据传输提供了可能,而不是仅仅通过PCIe总线,这大大减轻了CPU的数据传输负担。
图14: DMA传输的吞吐量3. 利用过滤下压使GPU进行预扫描

原本的LSM-tree数据库包括SQL执行引擎和数据存储引擎,MyRocks增加了一个GPU manager,利用GPU进行计算任务的部分预计算。具体过程如下:SQL执行引擎首先对查询语句解析,将其中的谓词(过滤条件)传给GPU Manager;随后数据从SSD传输到CPU,再通过异步方式传输GPU;GPU有了谓词和数据,预先进行数据的筛选,将通过筛选后有用的数据块的位置记录下来,传给CPU;这样CPU就可以省去大量的SCAN操作,直接处理GPU传输上来的过滤之后的数据,大大减少了CPU的工作量。
4. 利用DMA(Direct memory access)加快GPU和SSD之间的数据传输

上一个设计中的问题是GPU仍然通过CPU获取SSD的数据,这样一方面导致不必要的数据传输延迟,另一方面也增加了CPU的负担。于是在考虑了GPU DMA的特性之后,将原来的架构修改如上。原来通过CPU传输到GPU的数据,不再是大块的数据,而是对于数据块进行描述的元数据,记录数据块的位置和大小等信息,这部分数据的大小相比较于原来数据的大小可以忽略不计。然后GPU可以直接与SSD进行数据的通信,对得到的数据进行扫描。
可以看出DMA的使用大大减少了数据传输的代价,也解放了CPU。
5. 实验
图17: 在YCSB数据集上的实验结果在TPC-H数据集上执行带有SCAN操作的典型查询,性能比原来提升了6.2倍。
图18: TPC-H的scan操作中各个时间阶段所占据的比例四.总结与展望
我们介绍了如何利用GPU高带宽和高并行的特点,帮助减少CPU或者内存的压力,从而实现性能提升的例子。原本GPU更加适合计算密集的workload,但是GPU direct RDMA的引入,使得GPU在访存型任务上也获得了很大的发挥空间,很大程度上缓解了CPU的数据传输压力。但是,卸载给GPU的工作做好能够完全跟CPU解耦,否则任务运行过程中依赖CPU实施产生的数据等会导致性能大幅降低。
GPU在各种对性能有需求的场景下的使用是未来的发展趋势。在基于LSM-tree数据库的优化上也有很多潜在的方向。例如利用DMA对于LUDA的改进,encoding过程和decoding过程摆脱对于内存的依赖;在compaction过程的encoding中加一些计算密集型任务,对每个数据块中数据特性进行预计算,方便后续查询时的快速获取;GPU的使用给很多之前被有缺陷的数据库架构设计也带来了一些新的可能,例如Wisckey[3]提出KV分离的设计思路,可以大大减少合并过程中的写放大,但是会带来范围查询性能下降,并且GC过程中存在大量点查的问题,但是合并和GC都是不在数据库查询相应路径上的,GPU可以作为专门的合并或者GC单元。
参考文献
[1] LUDA: Boost LSM- Key Value Store Compactions with GPUs, arXiv Peng Xu et.al
[2] OurRocks: Offloading Disk Scan Directly to GPU in Write-Optimized Database System,Won Gi Choi, IEEE TRANSACTIONS ON COMPUTERS, 2021
[3] WiscKey: Separating Keys from Values in SSD-conscious Storage, Lanyue Lu et.al , FAST 2016


欢迎关注北京大学王选计算机研究所数据管理实验室微信公众号“图谱学苑“
实验室官网:https://mod.wict.pku.edu.cn/
微信社区群:请回复“社区”获取
gStore官网:http://www.gstore.cn/
GitHub:https://github.com/pkumod/gStore
Gitee:https://gitee.com/PKUMOD/gStore





