论坛发帖精简版(RVV 1.0 版)
标题:Bianbu 2.3.3 Spacemit K1 实例 RVV 1.0 编译报错求助
【环境】
【问题】
平台宣称支持 RVV 1.0,但编译标准 RVV 1.0 代码时报错:
【已排查】
-
编译参数正确:-march=rv64gcv_zvl256b -mabi=lp64d
-
手动补全头文件/宏定义仍无法链接
-
编译器无 RVV 相关宏输出,疑似工具链/硬件未启用 RVV 1.0
【极简复现代码】
#include <riscv_vector.h>
int main() {
size_t vl = vsetvl_e64m1(4);
return 0;
}
编译:
riscv64-linux-gnu-gcc -march=rv64gcv_zvl256b -mabi=lp64d test.c -o test
【求助】
-
确认 K1 是否真正开放 RVV 1.0 指令集
-
求 Bianbu 2.3.3 下 RVV 1.0 正确环境配置/工具链
-
有无官方 RVV 1.0 开发说明
感谢大佬指点!
riple
2
交叉编译的工具链:
https://www.spacemit.com/community/resources-download
Bianbu里面本地编译工具链:
apt install gcc-14
1 个赞
K1,我好像也遇到了这样的问题,我在bianbu下手写汇编,使用了vslideup指令,结果报非法指令错误,我查询了标准确认指令写的没问题,这个指令不是rvv1.0标准里的吗?芯片上也明确写了支持rvv1.0标准所有指令.
看起来是使用了旧版api
使用如下RVV Intrinsic v1.0 API 验证通过(k1本机使用gcc14工具链)
#include <riscv_vector.h>
int main() {
size_t vl = __riscv_vsetvl_e64m1(4);
return 0;
}
riscv64-linux-gnu-gcc -march=rv64gcv_zvl256b -mabi=lp64d test.c -o test
为了更好的兼容性,在k1本机建议升级到gcc14:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 100
sudo update-alternatives --set gcc /usr/bin/gcc-14
sudo update-alternatives --set g++ /usr/bin/g++-14
sudo update-alternatives --install /usr/bin/riscv64-linux-gnu-gcc riscv64-linux-gnu-gcc /usr/bin/riscv64-linux-gnu-gcc-14 100
sudo update-alternatives --install /usr/bin/riscv64-linux-gnu-g++ riscv64-linux-gnu-g++ /usr/bin/riscv64-linux-gnu-g++-14 100
sudo update-alternatives --set riscv64-linux-gnu-gcc /usr/bin/riscv64-linux-gnu-gcc-14
sudo update-alternatives --set riscv64-linux-gnu-g++ /usr/bin/riscv64-linux-gnu-g++-14
参考资料:
RVV 官方规范文档的 URL:
最新正式版本(v1.0):https://github.com/riscv/riscv-v-spec
PDF 直接下载: https://lists.riscv.org/g/tech-vector-ext/attachment/691/0/riscv-v-spec-1.0.pdf
在线阅读版本: RISC-V Vector Extension Web Page — RVV-web-page documentation
这是 RISC-V International 官方维护的 Vector Extension 规范,v1.0 是已冻结的正式版本。
1 个赞