- Python
$\geqslant$ 3.10 - *nix 系统
- pip 第三方库:
pip install -r requirements.txt- 交叉编译工具链与 Qemu (Ubuntu)
- 更新存储库
sudo apt update- 安装交叉编译器
sudo apt install gcc-riscv64-linux-gnu- 安装 Qemu
sudo apt install qemu-user- 安装高版本 LLVM (Ubuntu)
- 获取安装脚本
wget https://apt.llvm.org/llvm.sh
sudo chmod u+x llvm.sh- 安装 18 版本
sudo ./llvm.sh 18- 检查安装情况
llvm-link-18 --version
lli-18 --version
clang-18 --version根目录下放置 config.yaml,注意使用 UTF-8 编码(如果涉及中文的话)。
一个参考配置如下,请注意修改里面的路径:
paths.storage/paths.names.cache文件夹每次运行会清空paths.storage中会存放每次运行结果的记录paths.base/paths.names.functional存放功能测试用例paths.base/paths.names.performance存放性能测试用例
envs:
java: java
clang: clang-18
llvm-link: llvm-link-18
llvm-lli: lli-18
riscv-gcc: riscv64-linux-gnu-gcc
riscv-qemu: qemu-riscv64
params:
time-limit:
compile: 30
run:
functional: 30
performance: 60
paths:
jar: /home/swkfk/compiler/compiler2024-x/out/artifacts/compiler2024_x_jar/compiler2024-x.jar
base: /home/swkfk/compiler/testcase
storage: /home/swkfk/compiler/testcase/storage
names:
functional: 2023_sy_functional_140
performance: 2023_sy_performance_71
cache: .cache
history: .history
sy-libs:
ll: /home/swkfk/compiler/testcase/sylib.ll
c: /home/swkfk/compiler/testcase/sylib.c
h: /home/swkfk/compiler/testcase/sylib.h运行如下命令查看程序帮助:
python main.py -h-j N或--jobs N并行数,默认单线程。
关于参数格式,可以使用
-j4或者-j 4或者--jobs 4或者--jobs=4等。
-
--filter prefix只有名字以prefix开头的样例会被测试 -
-- [ARGS ...]位于--后的参数会被直接传递给编译器 -
-n N或--nums N在进行 benchmark 时重复执行 N 次取平均值
下述三个参数互不兼容:
-f或--func运行功能测试(默认)-p或--perf运行性能测试-a或--all运行全部测试
下述两个参数互不兼容:
s或--asm测试生成的 RISCV 汇编代码(默认)r或--ir测试生成的 LLVM IR
下述四个参数互不兼容:
-O0或--no-opt不开启编译器优化(默认)-O1或--opt开启编译器优化-t或--timeit在是否开启编译器优化之间进行速度比较-b或--benchmark在开启编译器优化与 LLVM clang 开启 O2 之间进行速度比较
运行 python view.py 即可。
直接回车可以浏览更多的历史记录,输入编号可以查看具体的结果。
使用键盘中断(Ctrl-C) 或者向程序传递 EOF 可以正常退出程序。