ArdxWe / intern

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

rvv1.0的测试报错:clang-13: error: invalid arch name 'rv64gcv1p0'

mollybuild opened this issue · comments

执行make vector时报错如下:

cxo@3a5cae203b0b:~/test/riscv-vectorized-benchmark-suite/_axpy$ make vector
/home/cxo/repos/llvm-project/build/install/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR  -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/bin/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64/bin  -c -o src/utils.o src/utils.c
clang-13: error: invalid arch name 'rv64gcv1p0', unsupported version number 1.0 for experimental extension (this compiler supports 0.10) 'v'
make: *** [Makefile:18: vector] Error 1

llvm的源码仓库是: https://github.com/llvm/llvm-project
branch : main
commit: 14da287e18846ea86e45b421dc47f78ecc5aa7cb
(可能是代码太老了,我更新重试一下)

_axpy/Makefile配置如下:

#makefile
GCC_TOOLCHAIN_DIR := /home/cxo/opt/rv64/bin
SYSROOT_DIR := $(GCC_TOOLCHAIN_DIR)/riscv64-unknown-elf

LLVM := /home/cxo/repos/llvm-project/build/install
SPIKE := /home/cxo/opt/bin/spike
PK := /home/cxo/opt/rv64/riscv64-unknown-elf/bin/pk

target = bin/rvv-test

serial:
        ${LLVM}/bin/clang  -Wall --target=riscv64-unknown-elf -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=$(SYSROOT_DIR) --gcc-toolchain=$(GCC_TOOLCHAIN_DIR)  -c -o src/axpy.o src/axpy.c
        ${LLVM}/bin/clang  -Wall --target=riscv64-unknown-elf -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=$(SYSROOT_DIR) --gcc-toolchain=$(GCC_TOOLCHAIN_DIR) -c -o src/main.o src/main.c
        ${LLVM}/bin/clang  -Wall --target=riscv64-unknown-elf  -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=$(SYSROOT_DIR) --gcc-toolchain=$(GCC_TOOLCHAIN_DIR) -c -o src/utils.o src/utils.c
        ${LLVM}/bin/clang  -Wall --target=riscv64-unknown-elf -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=$(SYSROOT_DIR) --gcc-toolchain=$(GCC_TOOLCHAIN_DIR)  -O2 -o $(target) src/*.o -lm

vector:
        ${LLVM}/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR  -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=$(SYSROOT_DIR) --gcc-toolchain=$(GCC_TOOLCHAIN_DIR)  -c -o src/utils.o src/utils.c
        ${LLVM}/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=$(SYSROOT_DIR) --gcc-toolchain=$(GCC_TOOLCHAIN_DIR)  -c -o src/axpy.o src/axpy.c
        ${LLVM}/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR  -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=$(SYSROOT_DIR) --gcc-toolchain=$(GCC_TOOLCHAIN_DIR) -c -o src/main.o src/main.c
        ${LLVM}/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=$(SYSROOT_DIR) --gcc-toolchain=$(GCC_TOOLCHAIN_DIR) -o $(target) src/*.o -lm

runspike :
        $(SPIKE) --isa=rv64gcv $(PK) $(target) 256
~                                                      

更新llvm-project到最新commit:31859f896cf90d64904134ce7b31230f374c3fcc (Jun 10)
还是报相同的error:

$ make vector
/home/cxo/repos/llvm-project/build2/install/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR  -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/bin/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64/bin  -c -o src/utils.o src/utils.c
clang-13: error: invalid arch name 'rv64gcv1p0', unsupported version number 1.0 for experimental extension (this compiler supports 0.10) 'v'
make: *** [Makefile:18: vector] Error 1

LLVM你应该使用 rvv-iscas分支

repo: https://github.com/isrc-cas/rvv-llvm.git
branch: rvv-iscas
commit: c360b611314ec39777487d050af6daa24eae811c
我会更新文档 抱歉我没写清楚

LLVM你应该使用 rvv-iscas分支

repo: https://github.com/isrc-cas/rvv-llvm.git
branch: rvv-iscas
commit: c360b611314ec39777487d050af6daa24eae811c
我会更新文档 抱歉我没写清楚

这个repo的地址现在已经发生了变化,现在是https://github.com/plctlab/llvm-project。

现在代码换到指定的commit(c360b6113),执行make vector,会报下面的错误:

$ make vector
/home/cxo/opt/llvm/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR  -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64  -c -o src/utils.o src/utils.c
/home/cxo/opt/llvm/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64  -c -o src/axpy.o src/axpy.c
/home/cxo/opt/llvm/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR  -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64 -c -o src/main.o src/main.c
/home/cxo/opt/llvm/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64 -o bin/rvv-test src/*.o -lm
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: src/axpy.o: can't link double-float modules with soft-float modules
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: failed to merge target specific data of file src/axpy.o
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: src/main.o: can't link double-float modules with soft-float modules
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: failed to merge target specific data of file src/main.o
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: src/utils.o: can't link double-float modules with soft-float modules
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: failed to merge target specific data of file src/utils.o
clang-12: error: ld command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:21: vector] Error 1

我的Makefile配置如下:

$ make vector
/home/cxo/opt/llvm/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR  -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64  -c -o src/utils.o src/utils.c
/home/cxo/opt/llvm/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64  -c -o src/axpy.o src/axpy.c
/home/cxo/opt/llvm/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR  -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64 -c -o src/main.o src/main.c
/home/cxo/opt/llvm/bin/clang  -Wall --target=riscv64-unknown-elf -DUSE_RISCV_VECTOR -march=rv64gcv1p0 -menable-experimental-extensions -O2  --sysroot=/home/cxo/opt/rv64/riscv64-unknown-elf --gcc-toolchain=/home/cxo/opt/rv64 -o bin/rvv-test src/*.o -lm
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: src/axpy.o: can't link double-float modules with soft-float modules
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: failed to merge target specific data of file src/axpy.o
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: src/main.o: can't link double-float modules with soft-float modules
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: failed to merge target specific data of file src/main.o
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: src/utils.o: can't link double-float modules with soft-float modules
/home/cxo/opt/rv64/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../bin/riscv64-unknown-elf-ld: failed to merge target specific data of file src/utils.o
clang-12: error: ld command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:21: vector] Error 1

看着似乎是链接的问题,测试代码你切换到指定分支了吗?
repo : https://github.com/RALC88/riscv-vectorized-benchmark-suite.git
branch : rvv-1.0

看着似乎是链接的问题,测试代码你切换到指定分支了吗?
repo : https://github.com/RALC88/riscv-vectorized-benchmark-suite.git
branch : rvv-1.0

是的,是这个分支没错的

可能是我的gnu 工具链支持的arch不匹配,我再看看

可能是我的gnu 工具链支持的arch不匹配,我再看看

$ git clone https://github.com/riscv/riscv-gnu-toolchain
$ cd riscv-gnu-toolchain
$ ./configure --prefix=/opt/riscv
$ make

这是我的方法 你可以试试

可能是我的gnu 工具链支持的arch不匹配,我再看看

应该就是GNU工具链的问题引起的,我重新编译了GNU工具链,就可以成功make vector,并且可以成功运行rvv-test,运行的结果如下:

$ /home/cxo/repos/plct-qemu/build/qemu-riscv64 -cpu plct-u64,x-v=true ./rvv-test
init_vector time: 0.000767
doing reference axpy
axpy_reference time: 0.000270
doing vector axpy
axpy_intrinsics time: 0.004088
done
Result ok !!!

重新编译GNU工具链的命令是:

$ cd riscv-gnu-toolchain
$ mkdir build && cd build
$ ../configure --prefix=$RISCV64/Base/ --with-arch=rv64gc --with-abi=lp64d --with-multilib-generator="rv64gc-lp64d--"
$ make -j $nproc