操作系统论文导读(二十):Making Powerful Enemies on NVIDIA GPUs

RTSS-2022: Making Powerful Enemies on NVIDIA GPUs

目录

一、文章核心

二、文章背景

背景介绍

干扰通道

研究问题

文章的创新点

方法论

三、必要知识与相关工作

A 背景知识

CUDA 基础

GPU 硬件

并发和干扰通道

干扰通道

SM 内部干扰通道

B 相关工作

CPU时间分析

GPU时间分析

GPU共享

四、生成方法 

目标

方法论介绍

实验设置框架

受害者选择

具体步骤

环境实现(A. Environment Implementation)

实施细节

敌人程序的实现(B. Enemy Implementation)

计算敌人模板(Compute Enemy Template)

内存敌人模板(Memory Enemy Template)

敌人程序的评估(C. Enemy Evaluation)

占用内核(Occupation Kernels)

灵敏度(Sensitivity)

通用实验结构(D. Generic Experiment Structure)


一、文章核心

这篇文章的核心是提出了一种基于“敌人程序”的方法,用于更准确地估计GPU任务在并发执行时的最坏情况执行时间(WCET)。文章主要解决了GPU并发任务之间的资源争夺导致的执行时间不确定性问题。通过实验驱动的方法,设计了能够最大化干扰GPU资源的敌人程序,并通过大量实际GPU基准程序验证了这些程序的有效性。文章的主要贡献包括提出了一种新的实验方法论,识别和定义了多种GPU干扰通道,并提供了详细的实验结果,证明这些敌人程序在增加任务执行时间方面比现有基线方法更有效。

二、文章背景

背景介绍

现代图形处理器(GPU)由于其强大的并行计算能力,越来越多地被用于安全关键的实时系统中,比如自动驾驶车辆。这些系统中的任务通常需要高性能计算,因此GPU成为了理想的计算资源。但是,在同一个GPU上并行执行多个计算任务(称为“内核”)会导致资源争夺问题,进而使得任务的执行时间变得不确定,这种现象被称为“干扰通道”。

干扰通道

干扰通道是指多个并发任务可能共享的硬件资源,例如计算单元、缓存和寄存器。这些资源的共享会使得一个任务的执行时间受到其他任务的影响,增加了实时系统中执行时间分析的复杂性。

研究问题

在实时系统中,确定任务的最坏情况执行时间(WCET)是至关重要的。现有的方法大多依赖于静态分析或测量的方法,但这些方法在面对GPU时通常显得过于保守或复杂。

文章的创新点

为了更准确地估计GPU任务的最坏情况执行时间,这篇文章提出了一种基于“敌人程序”的方法。敌人程序的设计旨在通过故意争夺GPU资源,最大化受害者程序的干扰,从而更可靠地估计最坏情况执行时间。

方法论

  1. 设计敌人程序:敌人程序需要针对特定的干扰通道进行优化,以最大化对受害者程序的干扰。
  2. 实验驱动方法:通过实验确定不同干扰通道的有效参数,设计出能够有效干扰这些通道的敌人程序。
  3. 性能评估:通过大量实际的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 本地的内存资源,共享这些资源可能导致互相干扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D了一天bug忘了编译

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值