FLASH 1.0:一种用于异构计算中快速并行部署和增强主机代码可移植性的软件框架
FLASH 1.0: A Software Framework for Rapid Parallel Deployment and Enhancing Host Code Portability in Heterogeneous Computing
AI总结:
本文提出 FLASH 1.0 框架,通过硬件无关前端接口和代码组织分离实现异构计算中主机代码的高可移植性与快速并行部署,实验表明可实现高达 99.72% 的代码可移植性和 4 倍代码缩减。
摘要:
本文介绍了 FLASH 1.0,一个基于 C++ 的软件框架,旨在实现异构计算中的快速并行部署并增强主机代码的可移植性。FLASH 采用了一种新颖的方法来描述内核,并以硬件无关的方式动态调度它们。FLASH 具有真正硬件无关的前端接口,这些接口统一了编译期控制流,并强制实施一种可移植性优化的代码组织方式,该组织方式在主机应用程序中划分了计算型(性能关键型)代码与功能型(非性能关键型)代码之间的界限,并实现了硬件特定代码与硬件无关代码的分离。我们使用静态代码分析来测量十二个流行 HPC 应用程序的硬件独立性比率,结果表明使用 FLASH 可以实现高达 99.72% 的代码可移植性。同样,我们测量并比较了最先进的可移植编程模型的复杂性,结果表明,对于两个常见的 HPC 内核,FLASH 可以实现高达 4.0 倍的代码缩减,同时保持 100% 的代码可移植性,且归一化框架开销介于内核总运行时间的 1% 到 13% 之间。代码可在 https://github.com/PSCLab-ASU/FLASH 获取。
英文摘要:
This paper presents FLASH 1.0, a C++-based software framework for rapid parallel deployment and enhancing host code portability in heterogeneous computing. FLASH takes a novel approach in describing kernels and dynamically dispatching them in a hardware-agnostic manner. FLASH features truly hardware-agnostic frontend interfaces, which unify the compile-time control flow and enforce a portability-optimized code organization that imposes a demarcation between computational (performance-critical) and functional (non-performance-critical) codes as well as the separation of hardware-specific and hardware-agnostic codes in the host application. We use static code analysis to measure the hardware independence ratio of twelve popular HPC applications and show that up to 99.72% code portability can be achieved with FLASH. Similarly, we measure and compare the complexity of state-of-the-art portable programming models to show that FLASH can achieve a code reduction of up to 4.0x for two common HPC kernels while maintaining 100% code portability with a normalized framework overhead between 1% - 13% of the total kernel runtime. The codes are available at https://github.com/PSCLab-ASU/FLASH.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。