Closed cuipingzhang closed 2 years ago
- workload.bin is generated from objcopy. It is bare metal workload instead of elf.
- We run SPEC after booting Linux. If your want to take checkpoints for SPECCPU, you should run Linux and let Linux to start SPEC right after boot.
我想用riscv64-nemu-interpreter的--simpoint-profile来生成cpu2006某个测试项的BBV,比如400.perlbench,基于linux编译完成后用objcopy生成了bin文件,但是该测试项执行时后面会跟参数,cpu2006的测试我采用的和你们一样的方法,单独编译执行,不是用runspec指令,那我生成perlbench.bin后怎么写这条生成BBV的指令,perlbench执行需要的参数怎么添加进去
- workload.bin is generated from objcopy. It is bare metal workload instead of elf.
- We run SPEC after booting Linux. If your want to take checkpoints for SPECCPU, you should run Linux and let Linux to start SPEC right after boot.
针对第一条,确认一下,我的400.perlbench基于Linux生成的可执行文件,是可以用objcopy直接从该可执行文件转换来的吗
Most SPEC benchmarks depend on *nix environment. Bare metal environment is not enough for them. So you have to run them in Linux.
Most SPEC benchmarks depend on *nix environment. Bare metal environment is not enough for them. So you have to run them in Linux.
能针对我上面的两个问题具体回答吗
我就是在直接回答你啊。
跟你说了,裸机跑不起来perlbench,因为裸机没有运行时。
“perlbench执行需要的参数怎么添加进去?” 没有Linux、没有运行时,怎么传?
就算传进去了又怎么样?perlbench要用系统调用啊,你去给NEMU挨个实现系统调用?再虚拟一个文件系统?
那我这么问吧,可以用riscv64-nemu-interpreter生成cpu2006中400.perlbench的BBV文件吗
那这个400.perlbench的workload.bin是怎么生成的
这个400.perlbench的workload.bin是bbl + linux + perlbench
需要你自己去构建
这个400.perlbench的workload.bin是bbl + linux + perlbench
需要你自己去构建
这个workload.bin 我每测一个测试项都要重新生成一次,但里面除了具体的测试项还包含bbl+linux 也就是说每生成一个测试项的BBV,执行一次riscv64-nemu-interpreter workload.bin,每次的执行中bbl+linux都跟着跑了一遍?
这个400.perlbench的workload.bin是bbl + linux + perlbench
需要你自己去构建
连接中文档介绍的bbl.bin和Checkpoint的生成.md文档中“workload (非 可执行文件格式,需使用 objcopy 命令进行处理)”的workload是一个东西吗 看链接文档bbl.bin应该包括bbl + linux + perlbench,用objcopy生成的workload是什么,再哪用
这个400.perlbench的workload.bin是bbl + linux + perlbench 需要你自己去构建 https://github.com/OpenXiangShan/XiangShan-doc/blob/main/tutorial/others/Linux%20Kernel%20%E7%9A%84%E6%9E%84%E5%BB%BA.md
连接中文档介绍的bbl.bin和Checkpoint的生成.md文档中“workload (非 可执行文件格式,需使用 objcopy 命令进行处理)”的workload是一个东西吗 看链接文档bbl.bin应该包括bbl + linux + perlbench,用objcopy生成的workload是什么,再哪用
NEMU称呼的workload为全系统的内存镜像,需要自己用objcopy制作成binary以便加载入内存中等待启动 测试某个程序如perlbench时称呼其为运行在linux上的某个workload,是ELF文件
这条指令我还用执行吗 ,只是想在NEMU上生成BBV文件。
3.修改rootfs,我是不是得把自己想测试的CPU2006 copy到riscv-rootfs/apps目录下,然后还得修改 initramfs-autorun.txt 和 inittab 中的内容,使linux再NEMU上启动后跑cpu2006
emu_defconfig menuconfig fpga_defconfig这三个config分别是配置什么的
emu_defconfig menuconfig fpga_defconfig这三个config分别是配置什么的
这三个其中有一个不是config,这是编译linux的基本知识,请自行了解
前两个有什么区别吗,还是就是一个工具链,只不过前缀不同
emu_defconfig menuconfig fpga_defconfig这三个config分别是配置什么的
这三个其中有一个不是config,这是编译linux的基本知识,请自行了解
我可以这样理解吗,如果用emu_defconfig,则linux自启动的配置在initramfs-emu.txt文件里,如果使用fpga_defconfig,则linux自启动的配置在initramfs-autorun.txt文件里?
NOOP_HOME是哪个
这步怎么操作,修改哪个文件
前两个有什么区别吗,还是就是一个工具链,只不过前缀不同
是不同的工具链,请参考https://xiangshan-doc.readthedocs.io/zh_CN/latest/compiler/gnu_toolchain/
另外,请到XiangShan主repo下进行提问,请勿在doc中提问技术问题
前两个有什么区别吗,还是就是一个工具链,只不过前缀不同
是不同的工具链,请参考https://xiangshan-doc.readthedocs.io/zh_CN/latest/compiler/gnu_toolchain/
另外,请到XiangShan主repo下进行提问,请勿在doc中提问技术问题
该问题中我问的时前两个riscv64-linux-gnu-,riscv64-unknown-linux-gnu-,你给的链接是后两个。 另:这些问题都是文档看的,都是针对文档的介绍提的问题。
你问的一些问题不是香山specific的问题,而是通用问题。这些问题你应该自己去搜索,网上有现成答案,我们没有义务给这些通用问题做QA。
例如,这个问题:
软链接到noop.dtsi 这步怎么操作,修改哪个文件
再例如
riscv64-linux-gnu-,riscv64-unknown-linux-gnu- 有什么区别
针对后一个问题,根据我搜索的结果,unknown-linux-gnu和linux-gnu应该没有什么区别:https://unix.stackexchange.com/questions/206410/why-gcc-show-unknown-in-target-x86-64-unknown-linux-gnu-in-arch-linux
这个答案也说明,这个问题不是xiangshan specific的,甚至不是RISC-V specific的,并且是在互联网上存在现成答案的。
原因是其中的
前两个有什么区别吗,还是就是一个工具链,只不过前缀不同
是不同的工具链,请参考https://xiangshan-doc.readthedocs.io/zh_CN/latest/compiler/gnu_toolchain/ 另外,请到XiangShan主repo下进行提问,请勿在doc中提问技术问题
该问题中我问的时前两个riscv64-linux-gnu-,riscv64-unknown-linux-gnu-,你给的链接是后两个。 另:这些问题都是文档看的,都是针对文档的介绍提的问题。
这里指定成两个工具链的原因是,香山相关仓库以及应用中有些编译指定了riscv64-linux-gnu-工具链,另一些指定了riscv64-unknown-linux-gnu-,因此在这里说明了两个工具链以方便一键编译各个应用,实际上你软链接他们两个为同一个工具链也没有问题。 另:若使用Ubuntu类发行版,可以apt快速安装riscv64-linux-gnu-工具链
针对后一个问题,根据我搜索的结果,unknown-linux-gnu和linux-gnu应该没有什么区别:https://unix.stackexchange.com/questions/206410/why-gcc-show-unknown-in-target-x86-64-unknown-linux-gnu-in-arch-linux
这个答案也说明,这个问题不是xiangshan specific的,甚至不是RISC-V specific的,并且是在互联网上存在现成答案的。
我只是不确认,因为你们的工具链有的是自己编译出来的,和通版有区别,为避免这方面的误解我觉得我还是问一下比较好。
社区应该是用来反馈那些真实存在的问题, 而且需要给出确切的证据证明问题的存在.
你这个问题纯粹是你自己不想动手, 所以找社区开发者来问: 你完全可以自己试着跑, 跑出错误之后尝试自己解决, 实在解决不了才带着错误来提问. 比如工具链的版本, 你就试一下, 一个错了换另一个, 两个都错再来问. 你说"问一下比较好", 也只是说明你不想花时间去自己解决这个问题.
另外, 不要把开源社区当做你学习的课堂, 社区开发者不是你的老师, 你的某些提问不仅不能给社区带来价值, 而且你也并没有为这些提问向社区开发者支付任何报酬, 大家没有义务教你学习. 基础不牢固, 就先自己补好功课再进社区.
checkpoint的生成中,该“Checkpoint的生成.md文件”文档中采用riscv64-nemu-interpreter的--simpoint-profile来生成用于simpoint的BBV文件, riscv64-nemu-interpreter workload.bin -D /home/user/spec_cpt -w workloadName -C run_spec -b --simpoint-profile --interval 100000000 1.该命令行中workload.bin是可执行文件吗,虽然后缀是bin,应该是类似elf的该执行文件吧 2.如果该可执行文件执行时需要后面跟输入参数,如一个文件,该怎么添加参数,如cpu2006中的某一个测试项,
这个bin文件使用OBJCOPY从可执行文件生成的吗