题目:Accel-Sim: An Extensible Simulation Framework for Validated GPU Modeling
时间:2020
会议/期刊:isca
研究机构:普渡大学
在计算机架构中,重要的创新经常来自于工业界。然而,工业界使用的模拟工具往往不被公开使用,即使被公开,工业设计的确切细节也不会被披露。因此,架构领域的研究必须确保关于当代处理器设计的假设保持真实。
为了帮助弥合不透明的工业创新和公共研究之间的差距,我们引入了三种机制,使GPU模拟器更容易跟上工业的步伐。首先,我们引入了一个新的GPU模拟器前端,通过对英伟达原生machine ISA的trace-driven simulation,最大限度地减少了模拟不同machine ISAs所需的努力,同时仍然支持execution-driven simulation of the virtual ISA。其次,我们广泛地更新了GPGPU-Sim的性能模型,以提高其细节水平、可配置性和准确性。最后,围绕着新的前端和灵活的性能模型的是一个能够快速、详细验证的基础设施。一套全面的微观基准和自动相关图谱简化了建模过程。
我们利用这三个新机制建立了Accel-Sim,这是一个详细的模拟框架,在由1945个内核实例组成的80个工作负载的广泛范围内,将周期误差降低了79个百分点。我们进一步证明,Accel-Sim能够模拟其他开源模拟器所不能模拟的基准套件。特别是,我们用Accel-Sim模拟了另外60个工作负载,包括11,440个内核实例,来自机器学习基准套件Deepbench。Deepbench使用的是闭源的、手工调整的内核,没有虚拟ISA实现。利用严格的逐个计数器分析,我们对Accel-Sim与当代GPU进行了验证。
最后,为了强调落后于工业界的影响,本文提出了两个案例研究,说明不正确的baseline assumptions是如何隐藏新的机会领域并导致潜在的错误设计决策。
Index Terms: GPGPU, Modeling and Simulation
如果研究的基线假设太过落后,就无法展望未来。为了跟上工业界的步伐,最先进的学术和公共研究必须了解并适应当代设计的变化。在计算机架构领域,跟上专有的工业机器是一个挑战。这在处理器行业的所有领域都是一个问题,但在可编程加速器领域可能是一个更尖锐的挑战,在那里,并行性的快速扩展、新处理管道的引入(即张量核心[10])以及微架构和指令集架构(ISA)的无记录变化在每一代新产品中都是常见的。GPU架构已经广泛接受了虚拟ISA(vISA)的使用,这为硬件供应商提供了巨大的灵活性,可以在保持二进制兼容性的同时进行机器ISA(mISA)的改变。像英伟达这样的供应商对这些ISA的运行情况保密,而像AMD这样的供应商则记录了每一个新的机器ISA,但却可以自由地做出巨大的改变,然后开源模拟器必须实现这些改变。
这种情况带来了三个独立但相关的挑战:(1)学术研究人员如何快速模拟每一年半的新的、通常没有记录的ISA?(2) 一旦功能正确,如何检测和模拟架构的变化? (3) 什么是可持续的、严格的验证机制,以确保新的基线仍然跟踪工业设计?我们提出了一个新的仿真框架,Accel-Sim,旨在解决所有这三个挑战。
Accel-Sim引入了一个灵活的前端,使其能够以跟踪或执行驱动的模式trace- or execution-driven mode
运行。Accel-Sim包括一个跟踪生成工具(使用NVBit[70]二进制工具构建),它可以从任何CUDA二进制文件中生成machine ISA指令跟踪,包括那些使用闭源库的文件,如cuDNN[43]。然后,这些机器ISA traces被转换为独立于ISA的中间表示,输入到性能模型。这个trace-driven前端允许Accel-Sim在新卡中模拟machine ISA,而不需要实现ISA的功能模型,并且比执行virtual ISA增加了模拟器的准确性。然而,基于跟踪的仿真也有其缺点。Evaluating new designs that rely on the data values stored in registers or memory [72] and global synchronization mechanisms are either not possible or very difficult to study without emulation-based execution-driven simulation. 由于Accel-Sim是基于独立于ISA的性能模型,因此它也能够使用NVIDIA相对稳定、记录良好的virtual ISA——PTX来运行emulation-based execution-driven simulation。Accel-Sim是第一个支持当代CUDA应用、现代源码和汇编(SASS)机器ISA的学术仿真框架,并能在封闭源码的GPU二进制文件中模拟手工调整的汇编。
表一是对开源GPU仿真空间的调查。在过去十年中,已经开发了几个GPU模拟器,每个模拟器都有不同的目的。MacSim[28]是一个早期的GPU模拟器,它对NVIDIA的vISA进行trace-based simulation,并包括一个类似Fermi的微架构模型。最近关于MacSim的工作将该模拟器扩展到执行Intel GPU的traces[14]。Multi2-Sim是一个多功能的GPU模拟器,对the virtual ISA and a subset of older machine ISAs from both AMD and NVIDIA都有基于仿真的功能模拟。GPGPU-Sim[5]是一个以CUDA为中心的模拟器,能够在功能上执行NVIDIA’s virtual ISA and a subset of an older machine ISA。最近,Gem5得到了增强,支持AMD的virtual and machine ISA的APU性能模型[6]。MGPU-Sim[67]是针对AMD的虚拟和机器ISA的并行GPU模拟器。所有支持execution-driven machine ISAs的模拟器的主要缺点之一是难以跟上changes to the mISAs functional model(此处的functional model应该是指新显卡的mISA具体是怎么在GPU上跑的)
。因此,只有有限的指令集子集(and hence applications)被完全支持。这对于支持优化的库尤其重要,这些库经常使用外来的、手工调整的机器代码来提高性能,例如英伟达的cuDNN。尽管最近的工作增强了GPGPU-Sim[31],以实现这些库的虚拟ISA执行,但该功能仅适用于Volta之前的GPU。对于Volta和Turing,cuDNN执行手工调整的SASS内核,没有虚拟ISA的实现。Accel-Sim对machine ISA traces的支持绕过了所有这些问题。此外,现有的GPU仿真框架缺乏一种系统的方法来快速验证和模拟新的架构设计。
将重点从实现an undocumented functional model转移到性能模型上,使Accel-Sim能够专注于性能模型。我们广泛地修改了GPGPU-Sim的性能模型(作为GPGPU-Sim 4.0的一部分发布),以提高其详细程度、可配置性和准确性。为了便于进行严格的验证,除了只能由模拟提供的详细统计数据外,性能模型还输出一组与NVIDIA剖析器发出的硬件数据1:1等效的计数器。然后,这些计数器值被送入一个自动调整框架,该框架生成相关图并修改模拟器的配置文件,从而更容易为新的GPU创建一个经过验证的性能模型。
利用我们新的前端和验证基础设施,我们进行了广泛的建模工作,在GPGPUSim[5]性能模型的基础上,创建了一个更灵活、可扩展的GPU模拟器。通过仔细的逐个计数器的验证,我们暴露了当代GPU硬件的几个变化。我们通过对从开普勒到图灵的四代NVIDIA GPU进行验证,证明了Accel-Sim的灵活性和准确性,对Accel-Sim和GPGPU-Sim 3.x在Volta V100上的建模进行了广泛的并排对比[46]。
在这个分析过程中,我们发现了一些关于当代硬件工作原理的有趣的见解。我们利用每一个公开可用的资源来构建性能模型,捕捉到其他人已经披露或发现的细节[26], [34], [37], [73]。在关联内存系统的过程中,我们发现并模拟了几个未被记录的特征,例如:流式、自适应L1数据缓存的细节,L1和L2的扇区,一个以扇区为中心的内存凝聚策略,以及一个在存在子扇区读取时节约内存带宽的L2写入策略。
最后,本文进行了两个案例研究,以突出当代GPU上的新研究机会,并展示了通过拥有一个更容易验证的模拟基础设施而减轻的陷阱。特别是,我们证明了失序内存访问调度,这在使用旧模型时似乎是相对无效的,但当内存系统的详细程度提高到更接近硬件时,会产生明显的性能改善。我们还证明,GPU中存在的L1缓存吞吐量瓶颈在当代硬件中不再存在,从而降低了出于吞吐量原因选择性绕过L1的技术的有效性。
本文有以下贡献。
它介绍了Accel-Sim,一个明确设计的仿真框架,使建模和验证未来的GPU更容易。通过利用一个灵活的前端,能够在执行驱动的vISA仿真和跟踪驱动的mISA仿真之间进行切换,我们能够从英伟达二进制文件中模拟手工调整的机器代码,而不放弃在适当时候执行执行驱动仿真的选项。我们通过对从开普勒到图灵的GPU进行建模来证明Accel-Sim的灵活性。
在为NVIDIA Volta卡建模时,它对我们的新性能模型与最先进的仿真进行了严格的、逐个计数器的比较,将误差减少了79个百分点。通过这一分析,我们发现并模拟了当代GPU中几个以前没有记录的架构特征。
它引入了一套全面的验证基础设施,包括:一套有针对性的GPU微测试,一个自动参数调整器和一个自动相关的可视化工具,这对调整Accel-Sim以快速为新设计建模很有用。- 它进行了一组案例研究,具体展示了落后于工业界的影响,并使用Accel-Sim为GPU的未来新研究领域提出建议。