反向移植 RISC-V 向量汇编

摘要:使用矢量化(vectorisation)是CPU同时应用操作于多个数据元素的能力,对于高性能工作负载至关重要。然而,在撰写本文时,商用可用的提供RISC-V矢量扩展(RVV)的物理RISC-V硬件仅支持不兼容的版本0.7.1,该版本与最新批准的版本1.0不兼容。挑战在于,上游编译器工具链(如Clang)仅针对批准的v1.0版本,并不支持较旧的v0.7.1版本。由于v1.0与v0.7.1不兼容,编写矢量化代码的唯一方法是使用供应商提供的较旧编译器。在本文中,我们介绍了rvv-rollback工具,该工具将使用矢量扩展v1.0指令生成的汇编代码转换为v0.7.1。我们利用这个工具来比较供应商提供的GNU 8.4编译器(支持v0.7.1)与LLVM 15.0(仅支持v1.0)的矢量化性能,在这里我们发现LLVM编译器能够自动矢量化更多的计算内核,并且在大多数情况下提供比GNU更好的性能,但并非所有情况都是如此。我们还测试了LLVM矢量化与矢量长度不可知和特定设置的情况,并观察到在性能上有显著差异的情况。

作者:Joseph K. L. Lee, Maurice Jamieson, Nick Brown

论文ID:2304.10324

分类:Distributed, Parallel, and Cluster Computing

分类简称:cs.DC

提交时间:2023-04-21

PDF 下载: 英文版 中文版pdf翻译中