在GEM5 se模式运行SPEC2017的520.omnetpp_r时出现Network未找到错误
SPEC2017 520.omnetpp_r在GEM5 SE模式下运行报错的解决方法
问题背景
在x86环境下编译SPEC2017的520.omnetpp_r基准测试后,本地主机执行./omnetpp_r_base.wkx-x86-m64 -c General -r 0可正常运行;但在GEM5系统调用仿真(SE)模式下执行对应命令时,出现错误提示:
<!> Error: Network `largeNet' not found, check .ini and .ned files.
两种运行方式均处于SPEC默认的XXX/run路径下,相关信息如下:
工作目录
# wangkaixuan @ user-PowerEdge-T640 in ~/SPEC2017/benchspec/CPU/520.omnetpp_r/run/run_base_refrate_wkx-x86-m64.0000 [16:36:45] $ ls General-0.sca.cmp compare.err compare.stdout ned omnetpp.General-0.out omnetpp_r_base.wkx-x86-m64 speccmds.err speccmds.stdout compare.cmd compare.out control omnetpp.General-0.err omnetpp.ini speccmds.cmd speccmds.out
主机本地运行情况
执行命令:
$ ./omnetpp_r_base.wkx-x86-m64 -c General -r 0
输出结果:
OMNeT++ Discrete Event Simulation (C) 1992-2008 Andras Varga, OpenSim Ltd. Version: 4.0, build: 090310-10709, edition: Academic Public License -- NOT FOR COMMERCIAL USE See the license for distribution terms and warranty disclaimer Setting up Cmdenv... Loading NED files from a SPEC directory 13 Preparing for running configuration General, run #0... Scenario: $repetition=0 Assigned runID=speccpu-runid Setting up network `largeNet'... Initializing... Running simulation... ** Event #1 T=0 Elapsed: 0.000s (0m 00s) 0% completed ev/sec=0
GEM5 SE模式运行情况
执行命令:
$ /home/data/userhome/wangkaixuan/Workspace/gem5-for-debug/build/X86_MESI_Two_Level/gem5.opt \ --outdir=/home/data/userhome/wangkaixuan/Workspace/gem5-for-debug/mydebug \ /home/data/userhome/wangkaixuan/Workspace/gem5-for-debug/configs/example/se.py \ --num-cpus=1 --mem-size=8GB --cpu-type=DerivO3CPU --caches --l2cache --l1i_size=64kB --l1d_size=64kB \ --fast-forward=10000000000 --maxinsts=1000000000 \ -c /home/data/userhome/wangkaixuan/SPEC2017/benchspec/CPU/520.omnetpp_r/run/run_base_refrate_wkx-x86-m64.0000/omnetpp_r_base.wkx-x86-m64 \ --option="-c General -r 0"
输出结果:
OMNeT++ Discrete Event Simulation (C) 1992-2008 Andras Varga, OpenSim Ltd. Version: 4.0, build: 090310-10709, edition: Academic Public License -- NOT FOR COMMERCIAL USE See the license for distribution terms and warranty disclaimer Loading NED files from a SPEC directory 0 Preparing for running configuration General, run #0... Scenario: $repetition=0 Assigned runID=speccpu-runid <!> Error: Network `largeNet' not found, check .ini and .ned files. End.
解决方案
从输出差异可看出,本地运行时加载了13个NED文件,而GEM5中加载了0个,核心原因是程序在GEM5环境下无法找到NED文件所在目录,可通过以下步骤解决:
1. 指定GEM5运行的工作目录
GEM5默认不会切换到目标程序的所在目录执行,需通过--cwd参数将工作目录设置为SPEC的run路径,确保程序能找到ned文件夹和omnetpp.ini:
/home/data/userhome/wangkaixuan/Workspace/gem5-for-debug/build/X86_MESI_Two_Level/gem5.opt \ --outdir=/home/data/userhome/wangkaixuan/Workspace/gem5-for-debug/mydebug \ /home/data/userhome/wangkaixuan/Workspace/gem5-for-debug/configs/example/se.py \ --num-cpus=1 --mem-size=8GB --cpu-type=DerivO3CPU --caches --l2cache --l1i_size=64kB --l1d_size=64kB \ --fast-forward=10000000000 --maxinsts=1000000000 \ --cwd=/home/data/userhome/wangkaixuan/SPEC2017/benchspec/CPU/520.omnetpp_r/run/run_base_refrate_wkx-x86-m64.0000 \ -c /home/data/userhome/wangkaixuan/SPEC2017/benchspec/CPU/520.omnetpp_r/run/run_base_refrate_wkx-x86-m64.0000/omnetpp_r_base.wkx-x86-m64 \ --option="-c General -r 0"
2. 强制指定NED文件路径
如果指定工作目录后仍有问题,可在--option中添加-n ./ned参数,直接告诉OMNeT++加载当前目录下的ned文件夹:
--option="-c General -r 0 -n ./ned"
3. 检查文件权限
确保GEM5运行用户对ned文件夹及内部文件有读取权限,执行以下命令修改权限:
chmod -R 755 /home/data/userhome/wangkaixuan/SPEC2017/benchspec/CPU/520.omnetpp_r/run/run_base_refrate_wkx-x86-m64.0000/ned
内容的提问来源于stack exchange,提问作者Kaixuan Wang
相关产品推荐
相关产品推荐

