如何使用clang自动向量化编译

Q0:怎么用clang自动向量化C代码?
clang可以添加以下选项实现自动向量化:

-O2/3/fast -march=rv64gcv1p0 -fvectorize -fvectorize-slp

Q1:clang要加哪些编译参数会有比较好的向量化效果?
X60的硬件VLEN=256,因此推荐:-mllvm --riscv-v-vector-bits-min=256可能会产生更高性能的向量化代码,但是现在工具链的自动向量器生成的性能水平仍然远远不及人工手写和intrinsic,而且循环的实现方式对于自动向量化产生的代码性能影响也很大,这方面可以参考这个帖子:Almost same execution time when enabling auto-vectorization or not
因此对于Q1我们仍在探索实验阶段,后续可能为用户推出一系列spacemit硬件相关的自动向量化性能优化的选项建议。

Q3:spacemit工具链GitHub上开源的工具链有哪些区别?
前者支持了我们自定义的ai指令,添加了更细粒度的调度模型以及其他一些有益于性能的优化改动(clang通过-mcpu选项自动开启)。

1 个赞