中文

从 ARM NEON 到 RISC-V 向量扩展的 SIMD Everywhere 自动化迁移优化

分布式、并行与集群计算 2023-09-29 v1 编程语言

摘要

许多库(如 OpenCV、FFmpeg、XNNPACK 和 Eigen)利用 Arm 或 x86 的 SIMD 内建函数(Intrinsics)来优化程序性能。随着 RISC-V 向量扩展(RVV)的出现,需要将这些遗留的高性能代码迁移到 RVV。目前,将 NEON 代码迁移到 RVV 代码需要手动重写,这是一个耗时且容易出错的过程。在本工作中,我们使用开源工具“SIMD Everywhere”(SIMDe)来实现迁移自动化。我们的主要任务是增强 SIMDe,使其能够将给定的 ARM NEON 内建函数类型与函数转换为对应的 RVV 内建函数类型与函数。对于类型转换,我们考虑向量长度无关(vla)架构,设计了将 Neon 内建函数类型转换为 RVV 内建函数类型的策略。在函数转换方面,我们分析了 SIMDe 中常用的转换方法,并根据 RVV 代码生成的结果为每个函数开发了定制化的转换。在使用 Google XNNPACK 库的实验中,我们增强后的 SIMDe 相比原始 SIMDe(未利用定制化的 RVV 实现进行转换)实现了 1.51 倍至 5.13 倍的加速。

关键词

引用

@article{arxiv.2309.16509,
  title  = {SIMD Everywhere Optimization from ARM NEON to RISC-V Vector Extensions},
  author = {Ju-Hung Li and Jhih-Kuan Lin and Yung-Cheng Su and Chi-Wei Chu and Lai-Tak Kuok and Hung-Ming Lai and Chao-Lin Lee and Jenq-Kuen Lee},
  journal= {arXiv preprint arXiv:2309.16509},
  year   = {2023}
}