交叉编译工具的使用问题

使用官网的编译器安装包,分别使用
GCC(riscv64-unknown-linux-gnu-gcc) 和LLVM(clang)
编译相同的代码,代码中有很多矩阵和向量运算,LLVM编译出的程序,和GCC编译的运行时间差别不大,代码中没有调用芯片中的扩展指令,请问官网的LLVM编译器没有自动向量化的功能吧?

如果要使用扩展指令,需要手动修改代码调用扩展单元的指令吗?

LLVM编译出的程序,和GCC编译的运行时间差别不大

正常,目前两个编译器并没有哪个具有绝对优势,要看具体的case了,应该是有些gcc更好有些llvm更好

代码中没有调用芯片中的扩展指令

那结果中就不会有了。目前只有进迭的指令只有汇编器支持。

请问官网的LLVM编译器没有自动向量化的功能吧?

有的,基于社区版本,而社区版本本身就已经有自动向量化功能。-O2以上就会默认启用。

如果要使用扩展指令,需要手动修改代码调用扩展单元的指令吗?

是的,要直接在代码中使用指令。论坛中有其他的相关话题的贴子可以参考下。例如 K1 IME拓展 矩阵乘 程序执行错误 - K1 - 进迭RISC-V论坛

1 个赞