dyweb / papers-notebook

:page_facing_up: :cn: :page_with_curl: 论文阅读笔记(分布式系统、虚拟化、机器学习)Papers Notebook (Distributed System, Virtualization, Machine Learning)
https://github.com/dyweb/papers-notebook/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+-label%3ATODO-%E6%9C%AA%E8%AF%BB
Apache License 2.0
2.12k stars 244 forks source link

Fractional GPUs: Software-based Compute and Memory Bandwidth Reservation for GPUs #190

Open gaocegege opened 4 years ago

gaocegege commented 4 years ago

http://www.andrew.cmu.edu/user/sakshamj/papers/FGPU_RTAS_2019_Fractional_GPUs_Software_based_Compute_and_Memory_Bandwidth_Reservation_for_GPUs.pdf

来源:https://github.com/kubernetes/kubernetes/issues/52757#issuecomment-525141057

gaocegege commented 4 years ago

这篇文章比较 research 也比较 hack。首先介绍下背景,Nvidia 为了更好地支持在 HPC 或者深度学习场景下,对 GPU 的共享和隔离,在 Volta 架构中引入了硬件级别的 MPS 实现,跟之前 pre-Volta 的软件级别的实现,有非常多的优化,在 QoS 等方面都有提高,具体可以看 Volta 的白皮书

而这篇文章说,MPS 无论软件还是硬件实现,都不是开源的(原文说 MPS 是一个闭源的 Kernel Module)。而且,更不好的地方在于,MPS 的隔离,还是不够的。因为没有在整个内存的 Hierarchy 都进行隔离。因此这篇文章提出了 FGPU,首先利用逆向工程的方式获得了关于 GPU 的内存 Hierarchy 的信息,然后基于逆向得到的信息,发现 Hierarchy 非常适合用 Page Coloring 的方式对 Cache 进行优化。另外,对于算力,这篇文章也提出了一种新的隔离方式(基于 SM),能够比 MPS 更好。所以综合来讲,就是 Page Coloring 做显存(Cache)隔离,基于 SM 的隔离方式做算力隔离。

gaocegege commented 4 years ago

对于算力的隔离,是通过修改 Kernel 实现的。

Screenshot from 2019-11-06 12-15-46

gaocegege commented 4 years ago

后面文章详细介绍了逆向得到的 Nividia GPU 内存 Hierarchy 的信息。然后利用 Page Coloring 来给不同的用户分配物理页,来限制他们之间的互相影响。因为感觉用处不大,没细读。

gaocegege commented 4 years ago

显存在 Cache 级别的隔离性,在现在 GPU 隔离和限制都很原始的情况下,是否真的重要,值得思考,但作为研究是非常有价值的。