目前,项目支持ubuntu22.04和centos7.9两个版本,其他系统版本可能会出现工具版本不兼容等问题;环境构建的方法如下:
单个warp中thread的数目num_thread,默认为32;在工具链使用之前,用户若有硬件需求,采用“export NUM_THREAD=指定数字”的方式,设置预期的num_thread;(num_thread的设置会影响.metadata文件中自动生成的nWarps的大小,建议num_thread尽量小)
可以结合构建说明的第3部分和用户的测试套使用说明,设置相应的环境变量,编译并运行测试用例;用例运行完,会生成对应的.metadata以及.data文件;
注:软件工具链中包含的仿真器是spike指令级仿真;
具体以仓库THU-DSP-LAB/ventus-gpgpu的README.md说明为主。
下面以高斯在ubuntu22.04中为例,进行说明。
git clone https://github.com/THU-DSP-LAB/ventus-gpgpu.git
依赖工具
终端执行:
sudo apt-get install verilator openjdk-11-jdk
mill
进入ventus-gpgpu目录,目录下已存在可执行文件mill;终端执行以下命令:
cd ventus-gpgpu
make init
make test (此时测试的是默认的用例)
安装 idea(可选)
进入ventus-gpgpu目录,终端执行
cd ventus-gpgpu
make idea
工具下载链接: https://www.jetbrains.com/zh-cn/idea/download
硬件运行用例,只需要在ventus/txt下,将用例的.metadata以及.data文件放到新建文件夹下,并在_cases.ini补充对应信息,即可硬件运行用例;
以在硬件下执行gaussian为例:
step 1:
在./ventus/txt目录下创建文件夹“last_gaussian”,
cd ./ventus/txt
mkdir last_gaussian
将.metadata以及.data拷贝过来,如图:
注:文件.metadata和.data是一一对应的;
step 2:
在./ventus/txt/_cases.ini文件中增加以下信息,
[last_gaussian]
nWarps=4
SimCycles=25000
Files=Fan1_0,Fan2_0,Fan1_1,Fan2_1,Fan1_2,Fan2_2
分别是文件夹名、预期单个workgroup下的warp数、预期运行的周期数以及.metadata(或.data)文件对应的名;
在./ventus/txt/_cases.ini文件,修改指定执行的程序为last_gaussian:
Default=last_gaussian
注:nWarps是可以自动从.metadata中获取的,若用户有预期的warp数可以在这里手动设置,硬件最终会在手动设置与自动获取的warp数中取最大值;
SimCycles的大小由用户依据用例自行设置;
step 3:
回到ventus-gpgpu的目录下,终端运行以下命令,开始硬件执行用例:
make test
若出现如下情况,表明用例运行完毕;
step 4:(可选)
ventus-gpgpu的目录下,终端执行:
gtkwave
打开./test_run_dir/adv_test2/GPGPU_SimWrapper.fst,即可看波形,如下: