目录
二、下载parsec源码并生成可执行文件提供给gem5进行仿真。
2.2 下载PARSEC-2.1 Disk Image并解压:
2.3 下载PARSEC script生成包并解压,然后将其移动至实验根目录下:
三、修改gem5文件夹下SysPaths.py来配置parsec的路径:
五、新开一个终端窗口,使用telnet与gem5模拟系统进行交互
一、打开终端,建立一个实验文件夹
mkdir experiment
cd experiment
1.1 参考gem5官网教程,安装依赖
1.2 下载gem5源码并build
git clone https://gem5.googlesource.com/public/gem5
cd gem5
scons build/X86/gem5.opt -j<n>
Note: 我们使用X86为例,后面的全系统仿真也使用X86,其可以替换成ARM、RISCV,ALPHA等。
注意: scons build/X86/gem5.opt -j<n> X大写, n表示调用的逻辑核个数。第一次build需要一段时间,没有报错耐心等待即可。
Q:如何查询及其核心数量?
A: cat /proc/cpuinfo| grep "processor"| wc -l
显示以下,即为build成功
二、下载parsec源码并生成可执行文件提供给gem5进行仿真。
2.1 下载parsec二进制文件:
wget -P ../full_system_images/binaries http://www.cs.utexas.edu/~parsec_m5/x86_64-vmlinux-2.6.28.4-smp
wget -P ../full_system_images/binaries http://www.cs.utexas.edu/~parsec_m5/tsb_osfpal
2.2 下载PARSEC-2.1 Disk Image并解压:
wget -P ../full_system_images/disks http://www.cs.utexas.edu/~parsec_m5/x86root-parsec.img.bz2
bzip2 -d ../full_system_images/disks/x86root-parsec.img.bz2
2.3 下载PARSEC script生成包并解压,然后将其移动至实验根目录下:
wget -P .. http://www.cs.utexas.edu/~parsec_m5/TR-09-32-parsec-2.1-alpha-files.tar.gz
tar -zxvf ../TR-09-32-parsec-2.1-alpha-files.tar.gz
mv TR-09-32-parsec-2.1-alpha-files/ ../
2.4 生成script命令:
命令格式:./writescripts.pl <benchmark> <nthreads>
例如:
cd ../TR-09-32-parsec-2.1-alpha-files
./writescripts.pl blackscholes 4
注意:此处必须切换到writescripts.pl所在文件夹下运行,否则,尽管不报错,但是不会产生对应的script;避坑!避坑!避坑!
其中,有以下13种benchmark:
2.5 查看full_system_images文件架构:
ls -R ../full_system_images/
三、修改gem5文件夹下SysPaths.py来配置parsec的路径:
vim ./configs/common/SysPaths.py
修改前:
paths = ["/dist/m5/system", "/n/poolfs/z/dist/m5/system "]
修改后:
paths = ["/dist/m5/system", "< full_system_images 绝对路径>"]
例:
四、根据生成的script文件运行gem5:
M5_PATH=../full_system_images/ ./build/X86/gem5.opt configs/example/fs.py -n2 --script=../TR-09-32-parsec-2.1-alpha-files/blackscholes_4c_test.rcS --disk-image=x86root-parsec.img --kernel=x86_64-vmlinux-2.6.28.4-smp
显示:
五、新开一个终端窗口,使用telnet与gem5模拟系统进行交互
telnet localhost 3456
显示:
至此,parsec benchmark suite 内的blackscholes 4 线程执行脚本已经在gem5中仿真成功。
总结:如果想运行其他benchmark,基本大同小异;起初本来想按照官方给的gem5art教程进行并行仿真的,可是一直调不通,心态快要爆炸了,后来又看了太多博主的教程,总是有更种小bug,最后集各家所长,避其bug,成功run起来,并看到了理想的output file!!! 开心!
若果按照教程跑通,请点赞加评论;赠人玫瑰,手留余香!有什么问题也很欢迎在评论区交流!