RTSS-2022: Making Powerful Enemies on NVIDIA GPUs
目录
环境实现(A. Environment Implementation)
敌人程序的实现(B. Enemy Implementation)
计算敌人模板(Compute Enemy Template)
通用实验结构(D. Generic Experiment Structure)
一、文章核心
这篇文章的核心是提出了一种基于“敌人程序”的方法,用于更准确地估计GPU任务在并发执行时的最坏情况执行时间(WCET)。文章主要解决了GPU并发任务之间的资源争夺导致的执行时间不确定性问题。通过实验驱动的方法,设计了能够最大化干扰GPU资源的敌人程序,并通过大量实际GPU基准程序验证了这些程序的有效性。文章的主要贡献包括提出了一种新的实验方法论,识别和定义了多种GPU干扰通道,并提供了详细的实验结果,证明这些敌人程序在增加任务执行时间方面比现有基线方法更有效。
二、文章背景
背景介绍
现代图形处理器(GPU)由于其强大的并行计算能力,越来越多地被用于安全关键的实时系统中,比如自动驾驶车辆。这些系统中的任务通常需要高性能计算,因此GPU成为了理想的计算资源。但是,在同一个GPU上并行执行多个计算任务(称为“内核”)会导致资源争夺问题,进而使得任务的执行时间变得不确定,这种现象被称为“干扰通道”。
干扰通道
干扰通道是指多个并发任务可能共享的硬件资源,例如计算单元、缓存和寄存器。这些资源的共享会使得一个任务的执行时间受到其他任务的影响,增加了实时系统中执行时间分析的复杂性。
研究问题
在实时系统中,确定任务的最坏情况执行时间(WCET)是至关重要的。现有的方法大多依赖于静态分析或测量的方法,但这些方法在面对GPU时通常显得过于保守或复杂。
文章的创新点
为了更准确地估计GPU任务的最坏情况执行时间,这篇文章提出了一种基于“敌人程序”的方法。敌人程序的设计旨在通过故意争夺GPU资源,最大化受害者程序的干扰,从而更可靠地估计最坏情况执行时间。
方法论
- 设计敌人程序:敌人程序需要针对特定的干扰通道进行优化,以最大化对受害者程序的干扰。
- 实验驱动方法:通过实验确定不同干扰通道的有效参数,设计出能够有效干扰这些通道的敌人程序。
- 性能评估:通过大量实际的GPU基准程序进行评估,比较敌人程序对任务执行时间的影响。
三、必要知识与相关工作
A 背景知识
CUDA 基础
CUDA 是为 NVIDIA GPU 编写程序的 C/C++ 编程接口。执行在 GPU 上的代码称为“内核”。编写 CUDA 程序时,程序员需要指定执行内核时使用的并行 GPU 线程数量。GPU 线程被组织成块(blocks),每个块包含多个线程。在启动内核时,需要指定每个块中的线程数量以及总块数。
每个内核都关联一个 CUDA 上下文(CUDA context),该上下文包含使用 GPU 时所需的状态信息。通常,每个 CPU 进程由 CUDA 运行时创建一个这样的上下文,不同上下文的内核不会同时在 GPU 上执行。
GPU 硬件
文章使用 NVIDIA GTX 1080 GPU 作为测试平台。这个 GPU 包含多个流式多处理器(SMs),每个 SM 能够执行大量的 GPU 线程。图1展示了 GTX 1080 的硬件布局。
- CUDA 核心:主要用于执行计算任务。
- L1 缓存:每个 SM 都有自己的本地 L1 数据缓存,用于存储最近使用的数据。
- L2 缓存:所有 SM 共享的全局 L2 缓存。
- DRAM:全局内存,所有 SM 都可以访问。
流式多处理器(SMs)是NVIDIA GPU并行计算能力的核心,通过包含多个CUDA核心、warp调度器、特殊功能单元和加载/存储单元,SM能够高效地执行大量并行任务。SM的设计允许GPU在面对复杂并行计算任务时,能够高效利用硬件资源
并发和干扰通道
GPU 上的并发可能比 CPU 上的并发更复杂。多个内核可以在不同的 CUDA 上下文中“并发”启动,但实际上它们可能不会同时执行。默认情况下,CUDA 强制时间片轮转,每次只允许一个上下文访问 GPU 硬件。
干扰通道
干扰通道是指多个并发内核可能共享的硬件资源。例如:
- L2 缓存:多个内核共享的缓存,可能会导致缓存冲突,增加缓存未命中率和内存延迟。
- MSHRs(缺失状态保持寄存器):用于处理缓存未命中的寄存器,如果这些寄存器被占满,会导致等待时间增加。
- DRAM:GPU 的全局内存,不同内核对 DRAM 的访问可能导致内存冲突和延迟。
SM 内部干扰通道
如果内核共享一个 SM,它们可能会争夺该 SM 内的硬件资源,包括:
- 计算单元(如 CUDA 核心):多个内核可能同时需要使用这些单元,导致延迟。
- L1 缓存和共享内存:这些都是 SM 本地的内存资源,共享这些资源可能导致互相干扰。