AUTOSCRATCH: ML-OPTIMIZED CACHE MANAGEMENT FOR INFERENCE-ORIENTED GPUS
AUTOSCRATCH: ML-OPTIMIZED CACHE MANAGEMENT FOR INFERENCE-ORIENTED GPUS
- 文章标题:AUTOSCRATCH: 面向推理的GPU的机器学习优化缓存管理
- 作者/机构:Yaosheng Fu, Evgeny Bolotin, Aamer Jaleel, Gal Dalal, Shie Mannor, Jacob Subag, Noam Korem, Michael Behar, David Nellans
A1 主要贡献
本文针对现代GPU中计算性能与DRAM带宽增长不匹配导致DRAM成为性能瓶颈的问题,提出了一种名为AutoScratch的机器学习(ML)框架,旨在自动发现并优化面向推理的GPU的L2缓存驻留配置。NVIDIA Ampere架构引入的L2缓存驻留控制机制允许程序员将数据显式地“钉”在L2缓存中,防止被硬件替换策略逐出,从而弥合了硬件管理缓存的易用性与软件管理暂存器(scratchpad)内存的高效性之间的差距。然而,手动确定最优的L2驻留数据极具挑战性。AutoScratch框架通过移除优化循环中的人工干预,解决了这一难题。
核心问题与研究目标:
- 核心问题:GPU的计算能力增长远超DRAM带宽,导致DRAM成为性能瓶ED颈,尤其是在功耗受限的推理GPU上。同时,DRAM的功耗也日益显著。
- 研究目标:利用NVIDIA GPU新引入的L2缓存驻留控制功能,自动优化数据在L2缓存中的驻留,以减少片外DRAM流量,提升深度学习(DL)应用的性能,同时避免繁琐的人工调整。
主要贡献与创新点:
1. 设计了AutoScratch框架:该框架利用机器学习技术,为GPU应用自动生成优化的L2缓存驻留配置。本文设计并评估了两种ML技术:
* AutoScratch-RL:基于强化学习(Reinforcement Learning, RL)的优化器。
* AutoScratch-EA:基于正则化演化算法(Evolutionary Algorithm, EA)的优化器。
-
实现了与TensorRT的无缝集成:为了实现全自动化,AutoScratch与NVIDIA的TensorRT SDK集成。这使得任何经由TensorRT优化的推理负载都可以自动利用AutoScratch来发现并部署学习到的L2驻留配置,无需修改应用代码。
-
在真实硬件上进行了全面评估:在NVIDIA L4推理GPU上,使用MLPerf推理套件对AutoScratch进行了评估。实验结果表明,该框架取得了显著成效:
- 平均减少了29%的DRAM流量。
- 平均提升了9%的整体性能,最高可达22%。
- 与随机搜索和人工设计的启发式方法相比,AutoScratch表现出明显优势。
图1. GPU和深度学习加速器中末级缓存容量的趋势。
A3 背景知识/关键Observation/设计原则
DL推理工作负载的重要性与优化方向:深度学习(DL)推理应用是现代云服务提供商盈利模式的支柱,在谷歌、Meta等巨头的数据中心大规模运行。由于其持续运行的特性,推理的总拥有成本主要由功耗决定,而非硬件成本【Jouppi et al., Ten Lessons From Three Generations Shaped Google’s TPUv4i : Industrial Product, 2021, ISCA】。因此,在功耗受限的DL推理应用上实现最佳的DRAM带宽利用率至关重要。先前的工作如vDNN【Rhu et al., vDNN: Virtualized Deep Neural Networks for Scalable, Memory-Efficient Neural Network Design, 2016, MICRO】发现DL工作负载的数据流模式具有规律性,可以进行智能的数据移动管理。本文在此基础上,利用机器学习自动化数据管理过程,使程序员无需显式管理数据局部性或为每个应用重复构建解决方案。
DL推理的内存访问模式:典型的DL推理应用主要涉及两种类型的内存访问:权重(weights)和激活(activations)。权重是每层获取的输入,不同层通常有各自的权重集,因此在单次迭代中跨网络层的权重重用机会有限。而激活是上一层网络生成的中间数据,作为下一层的输入,存在明确的生产者-消费者关系,具有很强的时序局部性。由于激活在被消耗后即失效,缓存激活数据对于减少DRAM流量非常有益。理想情况下,片上缓存足以容纳所有激活数据,从而消除与激活相关的内存流量。
(a) 在硬件管理的缓存中,激活和权重通常会在L2缓存和DRAM之间来回移动,导致缓存干扰。
图2. 常见DL推理工作负载的内存访问模式,展示了权重和激活的不同重用模式。
(b) 理想的L2缓存容量重用情况是激活常驻缓存,只有不在层间共享的权重从DRAM中获取。
激活大小与缓存容量分析:以resnet50模型为例,虽然其总激活大小(457MB)远超NVIDIA L4 GPU的L2容量(48MB),但每层的最大激活大小小于37MB,大部分层甚至小于10MB。这表明有策略地缓存激活数据是可行的。
图3. resnet50推理中int8数据类型的每层激活大小(批量大小为48)。最大的每层激活大小小于37MB。
实时激活数据量的分析:在resnet50中,由于存在跳跃连接(skip connections),一些激活的重用超出了相邻层。因此,在任何时刻,内存系统中最多需要存储三种类型的激活:输入、输出和跳跃连接。对于resnet50,在一次推理迭代中的任意时间点,最多需要111MB的缓存来存储所有“存活”的激活数据,而对于大多数层,仅需30MB就足够了。因此,精心设计的缓存策略有可能最大化激活的片上数据重用。
共享激活缓冲区的管理策略:由于激活数据是临时存活的,一种常见的内存管理技术是分配一个能够存储网络中所有存活激活的单一共享激活内存缓冲区【NVIDIA, NVIDIA TensorRT SDK, 2021b, URL: https://developer.nvidia.com/tensorrt】。这个缓冲区在不同层之间被循环使用。因此,DL推理的L2驻留控制问题可以被形式化为:从这个共享激活缓冲区中选择一个内存地址子集,使其成为L2常驻数据。本文中,L2驻留配置在一次推理迭代中保持静态,以减少修改开销 。
图4. 共享激活缓冲区内的L2驻留选择。
问题复杂性与机器学习方法的引入:为了对共享缓冲区进行细粒度管理,本文提出将其划分为n个大小相等的内存片(slices)。每个片可以被提升为L2常驻,或由默认的硬件替换策略管理。假设一个100MB的共享缓冲区被划分为1MB的内存片,而最大L2常驻容量为30MB,那么寻找最优L2驻留配置的穷举搜索需要评估约 $10^{25}$ 种组合(C(100, 30)),这在计算上是不可行的。因此,本文利用强化学习和演化算法来自动学习一个优化的L2驻留配置。
A2 方法细节
3.1 AutoScratch软件架构
AutoScratch的整体架构与优化流程:AutoScratch的顶层架构如图5所示。首先,一个未经优化的推理应用被送入NVIDIA的TensorRT库进行编译和优化,并通过插入L2驻留控制API进行插桩,使其与AutoScratch兼容。然后,AutoScratch对这个兼容的应用执行基于机器学习的优化,最终生成一个优化的L2驻留配置。通过将AutoScratch作为TensorRT优化过程的一部分,我们无需对目标DL应用进行手动代码修改,极大地简化了其使用。
图5. AutoScratch的顶层架构和优化流程。
L2配置的表示方法:在实现中,应用的激活缓冲区地址范围被均匀划分为n个片(slices),每个片由n维L2配置向量(数学上为 $\{0, 1\}^n$)中的一个比特位表示。该向量映射到共享激活内存缓冲区的地址范围。虽然内存片的大小可以小至L2缓存行的大小,但本文发现在NVIDIA L4 GPU最大36MB的L2常驻容量下,使用1MB的较粗粒度足以捕获大部分AutoScratch的优势,而不会显著增加搜索空间的规模。编码方式为:“1”表示内存片是L2常驻的,不能被硬件逐出;“0”表示该内存片不是L2常驻的,遵循默认的硬件缓存替换机制。
优化循环的执行过程:优化循环从一个L2驻留被禁用的初始状态开始,这是L4 GPU的默认配置。优化通过在GPU硬件上使用不同的L2驻留配置迭代执行推理应用,并观察其性能来完成。我们关注单次推理迭代,这足以学习应用行为并获得优化的L2驻留配置,而不会使优化过程过长。
部署与优化模式:优化完成后,无论使用何种优化技术(RL或EA),最佳的L2驻留配置都会被应用于生产部署。集成到DL推理应用中只会产生一次性的微不足道的初始设置开销。这个过程类似于DL推理应用和底层硬件之间的配置文件引导优化(Profile-Guided Optimization, PGO)【Pettis & Hansen, Profile Guided Code Positioning, 1990, PLDI】。AutoScratch既可以离线部署(在应用发布到生产环境前),也可以在线部署(在生产环境中与DL应用并行地动态调整)。
两种优化器实现:本文实现并评估了两种ML优化算法:(i) AutoScratch-RL,基于强化学习(RL);(ii) AutoScratch-EA,基于最近提出的正则化演化算法【Real et al., Regularized Evolution for Image Classifier Architecture Search, 2019, AAAI】。
3.2 AutoScratch与RL优化器
基于强化学习的优化框架:在AutoScratch-RL中,我们利用强化学习(RL)作为AutoScratch的ML优化阶段的一种实现。RL【Puterman, Markov decision processes: discrete stochastic dynamic programming, 2014, John Wiley & Sons】中,一个智能体(agent)通过与模拟或真实环境持续互动,学习最大化一个效用函数(通常称为奖励)。
图6. 用于调整GPU L2驻留配置的AutoScratch-RL优化框架。
在策略(On-Policy)学习与PPO算法:AutoScratch-RL能够在真实的GPU硬件上进行训练和部署,这种直接在测试环境(GPU硬件)中训练RL算法的能力非常重要,被称为“在策略”(on-policy)。这避免了离策略(off-policy)场景可能带来的训练性能下降问题。我们采用近端策略优化(Proximal Policy Optimization, PPO)【Schulman et al., Proximal policy optimization algorithms, 2017, arXiv preprint】算法,它不仅是在策略的,而且其内置的“片段收集”和“智能体更新”两个阶段的分离设计,可以防止DL推理网络在RL环境中的执行与RL智能体在GPU上的训练之间产生干扰,从而确保从GPU推理工作负载向RL智能体更新传递更准确的奖励信号。
AutoScratch-RL训练循环的关键组件:我们开发并训练一个AutoScratch-RL智能体来寻找最大化工作负载性能的最佳L2驻留配置。其主要组件如下:
- 环境(Environment):由DL推理工作负载及执行它的特定GPU平台共同定义。环境接收一个动作并提供相应的奖励。
- 状态(State):定义为当前的L2驻留配置,表示为一个大小为n的比特向量,即 $s_t \in \{0, 1\}^n$。向量的每一位代表共享激活缓冲区中相应内存片的L2驻留状态。
- 动作(Action):定义为“提升”(promote)或“无动作”(no action)。“提升”是将单个内存片变为L2常驻,“无动作”则保持当前状态不变。动作由一个大小为n+1的独热(one-hot)比特向量表示,即 $a_t \in \{0, 1\}^{n+1}$。前n位代表对n个内存片之一的提升操作,最后一位表示无动作。这种设计使得状态之间的转换平滑,有助于RL训练收敛。
- 智能体(Agent):PPO算法中的智能体实际包含两个网络:行动者(actor)和评论者(critic)。两者都实现为多层感知器(MLP),共享大小为n的状态向量作为输入。行动者网络的输出是大小为n+1的动作向量,评论者网络的输出是用于评估动作质量的单个标量值。
- 奖励(Reward):我们将单次DL推理迭代的执行时间表示为 $T(s_t)$。从状态 $s_t$ 转换到 $s_{t+1}$ 时的奖励 $r_t$ 定义为 $r_t = T(s_t) - T(s_{t+1})$。简言之,奖励是当前RL动作带来的性能提升。
训练过程与终止条件:在训练过程中,一个片段(episode)总是从初始状态 $s_0 = (0, ..., 0)$ 开始。当一个片段达到最佳下一动作为“无动作”的状态时,它会保持在该状态,除非系统噪声意外导致新的动作。因此,当我们观察到最后连续k个状态相同时,就终止该片段。一个片段通常包含几十次迭代。
最终配置的选择:该片段的最终状态是AutoScratch在本片段中学到的L2驻留配置。一个片段的累积奖励是最终配置相比于无L2常驻缓存基线的执行时间改进。为了确保最终得到最佳的L2驻留配置,我们在整个训练过程中跟踪性能最佳的配置,并将其用作最终部署的配置。
3.3 AutoScratch与演化优化器
演化算法作为替代方案:虽然AutoScratch-RL在发现近乎最优的L2驻留配置方面非常成功,但其计算成本较高。演化算法(Evolutionary Algorithms, EA)作为一种计算强度较低的替代方案,在许多情况下性能可与RL媲美。EA实现更简单,无需训练独立的神经网络作为智能体,更易于在分布式环境中扩展,且需要调整的超参数更少。
AutoScratch-EA的实现:基于为神经架构搜索开发的正则化演化算法【Real et al., Regularized Evolution for Image Classifier Architecture Search, 2019, AAAI】,我们开发了AutoScratch-EA。该方法在整个学习过程中维护一个包含M个L2驻留配置向量的种群。种群由M个随机配置向量初始化,每个配置都在目标GPU上评估其适应度(执行时间),然后在一系列K个步骤中逐渐演化。
图7. 使用正则化演化优化调整GPU L2驻留配置的AutoScratch-EA。
子代生成与变异:在每一步中,从当前种群中随机选择一个包含S个配置向量的子集进行评估。然后,该子集中适应度最好(执行时间最短)的向量被选为父代。通过对父代配置向量应用变异操作来创建一个新的子代配置向量。在AutoScratch-EA中,变异操作定义为在随机位置进行单比特翻转。
种群更新与年龄机制:子代配置向量随后被评估,并添加到当前种群中。为保持种群大小恒定,必须丢弃一个旧的配置向量。与传统演化算法通常淘汰最差的配置向量不同,正则化演化算法引入了“年龄”的概念,持续丢弃种群中最老的配置。这种“老化”演化有助于更好地管理实验中的训练噪声,这在GPU上执行时间可能存在噪声的情况下非常有用。
终止与最终解:算法在完成K个步骤后终止,执行时间最短的配置向量被选为最终的最佳解决方案。在整个学习过程中,总共评估了M+K个配置向量(M个在初始化时,每个步骤评估一个)。
A4 实验环境
- 数据集/基准:使用MLPerf推理套件,涵盖了resnet50, ssd-resnet34, ssd-mobilenet, 3d-unet, bert, dlrm, rnnt等多种业界广泛使用的模型。
-
模型配置:为每个基准设置了特定的批量大小(Batch Size),使得共享激活缓冲区的大小略大于GPU的L2容量(48MB),以创造有意义的优化空间。具体配置见下表。
- bert 使用固定的128序列长度。
- rnnt 由于其持久化RNN实现,DRAM带宽需求较低,因此使用了较大的批量大小以最大化其利用率。
- 3d-unet 即使在最小批量大小为1时,激活缓冲区也远超L2容量。
表1. AutoScratch中的MLPerf推理基准设置。
-
硬件配置:
- GPU:NVIDIA L4 GPU。这是一款面向DL推理的最新GPU,拥有48MB的L2缓存,其中36MB可通过驻留控制API进行软件配置。其最大TDP为72W,内存带宽为300GB/s。
- 平台:由于L4 GPU的TDP较低,其性能可能因电源管理事件而波动。为解决此问题,实验中通过对多次连续迭代的执行时间进行平均来减少噪声。
-
软件配置:
- AutoScratch-RL:使用
stable-baselines3【Raffin et al., Stable baselines3, 2019, URL: https://github.com/DLR-RM/stable-baselines3】代码库实现,采用了开箱即用的PPO算法及其默认超参数。每个工作负载总共进行500,000个RL训练步骤,训练时间从几小时到13小时不等(bert) 。 - AutoScratch-EA:种群大小M=100,样本子集大小S=25。最大步数K=20,000,并设有早停机制(若5,000步内最佳解未改善则终止)。训练时间远短于RL版本。
- AutoScratch-RL:使用
A4 实验结果
5.1 DRAM流量减少和性能提升
- 实验内容:在NVIDIA L4 GPU上测量使用AutoScratch-RL (AS-RL) 和AutoScratch-EA (AS-EA) 优化后,与基线(仅硬件控制的缓存策略)相比的DRAM流量和整体应用执行时间。
- 实验结果:
- DRAM流量:如图8(a)所示,AS-RL和AS-EA均实现了显著的DRAM流量减少,几何平均值分别为29%和27%。AS-RL略优。DRAM写流量的减少通常比读流量更显著。
- 性能:如图8(b)所示,AS-RL和AS-EA同样取得了相似的性能提升,几何平均加速比分别为9.3%和8.8%,在bert上最高可达21-22%。
- 分析结论:
- 激活缓冲区大小与GPU L2容量越接近的工作负载,DRAM流量减少越明显。
- MLP-based的工作负载(bert, dlrm)比CNN-based的工作负载(resnet50等)获得了更高的加速比,因为前者对内存带宽更敏感。
- 多次随机种子训练的结果表明,两种方法的性能都非常稳定。
图8. 在NVIDIA L4 GPU上测得的AutoScratch-RL(AS-RL)和AutoScratch-EA(AS-EA)相对于基线(硬件控制的缓存策略)的DRAM流量和性能加速。(b)图的y轴从0.8开始以便于观察。
5.2 基于ML的优化开销
- 实验内容:比较AS-RL和AS-EA的训练时间。
- 实验结果:如表2所示,EA-based的优化方法比RL-based快得多,几何平均快58倍。AS-EA在多数工作负载上的训练时间为几分钟。
- 分析结论:AS-EA的训练时间足够短,使其成为一个可行的方案,可以集成到像TensorRT这样的DL编译框架中,作为一种可选的配置文件引导优化。
表2. AutoScratch在NVIDIA L4 GPU上对MLPerf推理工作负载的总训练时间(分钟),以及AutoScratch-EA相对于AutoScracth-RL实现的时间缩减。
5.3 对批量大小的敏感性
- 实验内容:在resnet50和bert上改变批量大小,观察AutoScratch的性能表现。
- 实验结果:如图9所示,AS-RL和AS-EA在很宽的批量大小范围内都表现良好。最佳绝对性能出现在批量大小范围的中间部分。
- 分析结论:
- 批量太小,大部分激活数据即使没有优化也能放入L2,优化空间有限。
- 批量太大,只有一小部分激活数据能被固定在L2中,优化效果受限。
- AutoScratch能够通过缓解DRAM带宽瓶颈,将最佳性能点的批量大小推向更大的值。这为未来联合优化批量大小和L2驻留配置的工作开辟了道路。
图9. 在NVIDIA L4 GPU上,resnet50和bert在不同批量大小下,基线、AutoScratch-RL和AutoScratch-EA的绝对端到端性能(每秒推理次数,IPS)。
5.4 与其他优化方法的比较
- 实验内容:将AutoScratch与随机搜索(Random Search, RS)和集成在TensorRT中的人工设计启发式(Human-Designed Heuristic, HDH)进行比较。
- 实验结果:如图10所示:
- RS:仅在搜索空间较小的工作负载(如resnet50)上表现尚可,但在大搜索空间下完全失败,有时甚至导致性能严重下降。其几何平均加速比接近于0。
- HDH:比RS有效,在最佳L2驻留预算(0.5)下可实现2.6%的几何平均加速。但最佳预算因工作负载而异,需要程序员手动调整。
- AutoScratch:无需额外参数调整即可自动发现最优解,并实现更大的整体性能加速。
图10. 在NVIDIA L4 GPU上,将AutoScratch-RL(AS-RL)和AutoScratch-EA(AS-EA)的性能加速与随机搜索(RS)和不同L2驻留预算下的人工设计启发式(HDH)进行比较。所有结果均相对于无L2驻留控制的基线。(b)图的y轴从0.6开始以便于观察。
A7 补充细节
5.5 讨论
黑盒方法的优势与局限性:AutoScratch将应用和GPU视为黑盒,这种方法实用、高效且适用于任意工作负载和GPU。然而,当工作负载、GPU配置或批量大小发生变化时,需要重新训练AutoScratch以获得最佳的L2驻留配置。尽管一个学习到的解决方案可能在多种配置下(非最优地)适用,但本文未研究这种泛化效果。
AutoScratch的适用场景:AutoScratch主要适用于工作负载性能受限于DRAM带宽或能耗,且配备了较大L2缓存的GPU硬件配置,NVIDIA L4 GPU是理想范例。在高端的NVIDIA A100 GPU上,尽管AutoScratch能显著减少DRAM流量(在降低HBM带宽的配置下,geomean减少44%),但这并未转化为性能提升,因为A100的推理性能不受HBM带宽或能耗的限制,但它确实提高了GPU的每瓦性能。
RL与EA优化器的比较与展望:EA优化器能以显著缩短的训练时间达到与RL相似的性能。这可以解释为,与EA不同,RL学习到的不仅仅是优化的驻留配置本身,而是一个能够达到近乎最佳配置的策略(policy)。这个特性可以在未来的工作中被利用,以实现跨神经架构、批量大小、缓存大小等参数搜索空间的泛化。例如,一个预训练的RL智能体可以无需重新训练就为任意推理应用生成优化的L2驻留配置。尽管这种通用方法可以省去数小时的单应用优化开销,但它也可能使预训练过程和收敛速度复杂化,可能导致结果不佳,因此本文将其作为未来工作。
6. 相关工作
显式缓存与暂存器控制:已有多种方法用于在CPU、GPU、异构系统和硬件加速器上显式控制缓存和暂存器内存。这些方法通常是劳动密集型的,需要手动控制和显式软件调优。相比之下,AutoScratch是一个自动化的过程。
用于缓存管理的ML技术:已有研究尝试将RL、EA或其他ML技术用于缓存管理,通常是直接应用于缓存替换策略或改进基于启发式的传统方案。与本文最接近的工作是【Khadka et al., Optimizing Memory Placement using Evolutionary Graph Reinforcement Learning, 2020, arXiv preprint】,它在Intel NNPI上使用RL、图神经网络和演化搜索的组合进行每层内存放置。但其优化目标和搜索空间与AutoScratch不同。AutoScratch专注于在所有层中选择共享激活内存片的最佳子集以固定在LLC中,其搜索空间仅依赖于内存地址范围大小和内存片粒度,与层数无关,因此更具通用性。
计算机体系结构中的其他RL/EA应用:研究人员已将RL和EA技术应用于计算机体系结构的其他问题,如硬件预取、片上网络(NoC)、内存控制器和硬件资源分配。这些工作虽然广义上相关,但与本文描述的问题和解决方案是正交的。
A5 结论
本文开发了AutoScratch框架,用于为DL推理工作负载发现并优化GPU的缓存驻留控制。在面向推理的NVIDIA L4 GPU上进行的基于真实硬件的评估显示,对于MLPerf推理工作负载,AutoScratch实现了29%的DRAM流量减少和9%的性能加速(几何平均值)。在比较EA和RL时,我们发现基于EA的优化器学习速度快58倍,同时提供了几乎相当的结果,使其成为实际部署的合适选择。
我们相信,未来体系结构创新的轨迹在于硬件机制和基于软件的ML调优的融合。在这项工作中,我们识别并探索了这样一个协同设计的机会,希望它能激励体系结构师设计额外的硬件钩子,以在其他体系结构领域实现这类优化机制。
A6 附录
A. 与基于硬件的缓存替换策略的比较
背景:为了进一步理解AutoScratch的有效性,本附录将其与先进的基于硬件的缓存替换策略SHiP【Wu et al., SHiP: Signature-based Hit Predictor for high performance caching, 2011, MICRO】以及理论最优的Belady算法【Belady, A study of replacement algorithms for a virtual-storage computer, 1966, IBM Systems Journal】进行比较。
A.1 基于硬件的替换策略
PC无关的策略选择:许多先进的硬件替换策略依赖于程序计数器(PC)信息,但在现代高性能GPU中,将PC信息从所有执行单元传递到所有LLC bank的成本很高。因此,本文选择与不依赖PC信息的SHiP进行比较。
Signature-Based Hit Predictor (SHiP):SHiP是一种细粒度的缓存替换策略,通过为每个缓存引用关联一个签名(signature)来对缓存插入进行分类。本文中使用4KB对齐的内存地址作为签名。SHiP维护一个名为签名历史计数器表(SHCT)的饱和计数器表来学习签名的重引用间隔。根据SHCT的计数值,与某个签名关联的缓存行被分类为L2常驻类或常规类。
Software-Assisted SHiP (SHiP-SW):传统的SHiP设计存在两个缺点:SHCT中的冲突干扰和对所有签名一视同仁。为了解决这些问题,本文提出了一种软硬件协同设计的缓存替换策略SHiP-SW。在该策略中,应用程序向SHiP硬件提供关键签名(例如,性能关键的内存地址区域)。SHiP-SW仅对这些关键签名的缓存行学习分类,而将所有非关键签名的缓存行视为常规类。
Belady算法:Belady算法是一种理论上的最优缓存替换策略,它总是驱逐未来最晚被重用的缓存行。由于需要预知未来,它在实际中无法实现,因此仅作为性能的理论上限进行比较。
A.2 附加结果
仿真环境:由于在多核系统中Belady算法难以定义,我们使用了一个类似于NVArchSim【Villa et al., Need for Speed: Experiences Building a Trustworthy System-Level GPU Simulator, 2021, HPCA】的基于踪迹的GPU模拟器。通过记录确定性的L2访问序列并将其输入一个功能的L2缓存模型,来进行各种替换策略的评估。
仿真器验证:首先,通过比较仿真和真实硬件上的DRAM流量减少,验证了仿真基础设施的保真度。如图11所示,仿真结果与硬件结果非常接近(几何平均差异在3%以内)。
图11. 硅片与仿真结果中基线、AutoScratch-RL和AutoScratch-EA的归一化DRAM流量对比。
仿真结果对比:如图12所示,仿真结果表明:
- AutoScratch-RL和AutoScratch-EA在除rnnt外的所有工作负载上都优于SHiP,整体流量减少分别额外多出11%和10%。
- SHiP-SW比SHiP的DRAM流量额外减少了2%,但仍无法弥合与AutoScratch的差距。
- 与理论最优的Belady算法相比,AutoScratch-RL和AutoScratch-EA在DRAM流量减少方面分别存在26%和27%的差距,表明仍有提升空间。
附录结论:仿真结果表明,AutoScratch优于最先进的硬件替换策略SHiP,并缩小了与理论最优Belady算法的差距。这证明了基于ML的软件控制缓存是一种有前途的新技术。
图12. AutoScratch-RL、AutoScratch-EA、SHiP、SHiP-SW和Belady算法的模拟DRAM流量,均相对于无L2驻留控制的基线进行归一化。
💬 评论讨论
欢迎在这里分享您的想法和见解!