lab1报告
Setup:
依照下发文档,依次执行
创建一个名为lab1的容器,其内搭载了chaselab/archlab镜像,并将一个镜像内的一个文件夹挂载到本地文件夹。
为了方便,我使用了vscode的dev container插件进入容器内部,执行命令
获得编译gem5环境所需代码,并将文件夹名改为gem5
随后进行编译:
忽略掉pre-commit库的安装,并通过修改.wslconfig文件将swap空间开到16G后成功编译,编译结果如图:
Part1:
依据文档创建proj1文件夹并编写simple.py文件,编译测试程序后,运行结果如图:
Part2:
没有要提交的内容
Part3:
依据文档内容修改simple.py文件,使得我们可以通过命令行参数设置CPU以及内存类型。
通过脚本并行执行数个任务,如:
通过
chmod +x <文件路径>
给脚本加以可运行权限。由于我的CPU可用核心数只有8个,所以我将所需执行的任务写到数个脚本中,分别执行,每个脚本中会并行执行8个任务。注:下发文档中由于
# add `&` after the command to let it run in background
这行注释的位置在--cpu $c --mem $m --clock 2GHz &
的上方,导致脚本识别命令错误,无法正常设置参数,更换两行位置后成功。下面是测试结果:
测试一:CPU:simple , MEM:DDR3
ㅤ | binary_search | gemm | shell_sort | spfa |
IPC | 0.007432 | 0.007027 | 0.006922 | 0.007423 |
测试二:MEM:DDR3
ㅤ | simple | minor | o3 |
IPC/binary_search | 0.007432 | 0.028561 | 0.060861 |
IPC/gemm | 0.007027 | 0.040222 | 0.134024 |
IPC/shell_sort | 0.006922 | 0.029715 | 0.084223 |
IPC/spfa | 0.007423 | 0.033755 | 0.077882 |
测试三:
1、CPU:simple
ㅤ | DDR3 | DDR4 | DDR5 |
IPC/binary_search | 0.007432 | 0.007591 | 0.005831 |
IPC/gemm | 0.007027 | 0.007169 | 0.005560 |
IPC/shell_sort | 0.006922 | 0.007064 | 0.005490 |
IPC/spfa | 0.007423 | 0.007591 | 0.005885 |
2、CPU:minor
ㅤ | DDR3 | DDR4 | DDR5 |
IPC/binary_search | 0.028561 | 0.029458 | 0.020917 |
IPC/gemm | 0.040222 | 0.041212 | 0.029536 |
IPC/shell_sort | 0.029715 | 0.030593 | 0.022559 |
IPC/spfa | 0.033755 | 0.034906 | 0.027700 |
3、CPU:o3
ㅤ | DDR3 | DDR4 | DDR5 |
IPC/binary_search | 0.060861 | 0.064613 | 0.043615 |
IPC/gemm | 0.134024 | 0.150984 | 0.105573 |
IPC/shell_sort | 0.084223 | 0.089350 | 0.050822 |
IPC/spfa | 0.077882 | 0.081861 | 0.053528 |