☰
Accel-Sim仿真工作流全解:用run_simulations.py批量跑GPU仿真任务
2026/10/31 1:17:40 网站建设 项目流程

【免费下载链接】accel-sim-framework

This is the top-level repository for the Accel-Sim framework.

项目地址:https://gitcode.com/gh_mirrors/ac/accel-sim-framework
点击查看免费下载

Accel-Sim 是一个面向 GPU 体系结构研究的开源仿真框架(基于 GPGPU-Sim 4.0 性能模型 + AccelWattch 功耗模型),而 run_simulations.py 是它内置的工作负载批量启动管理器:一条命令即可把"多个基准测试 × 多种 GPU 配置"的任务矩阵自动拆分成成百上千个仿真任务,处理目录创建、trace 链接、配置文件拼装,并自动适配 Slurm / Torque / 本地多核调度。本文带你从零走通 Accel-Sim 仿真工作流 🚀

一、Accel-Sim 是什么?为什么需要批量跑?

做 GPU 仿真研究时,你通常要做这几件事:

  1. 拿一堆 benchmark(Rodinia、PolyBench、CutLASS 等)在多种配置(QV100、A100、TITANX……)下反复跑仿真;
  2. 确认所有任务都正确跑完,出错了能快速定位;
  3. 把结果聚合成论文里的统计表格(如 IPC、周期数对比)。

如果手动一个个跑accel-sim.out,不仅繁琐,还很容易因为参数、目录不一致导致结果无法对比。Accel-Sim 提供的 util/job_launching/ 脚本组就是为解决这个问题而生的,核心 4 个脚本:

脚本作用
run_simulations.py创建运行目录、拼装配置、批量提交仿真任务
monitor_func_test.py轮询任务状态,跑完后自动汇总结果
job_status.py打印所有任务的运行状态摘要表
get_stats.py解析仿真日志,输出 CSV 统计数据

💡 提示:所有 Python 脚本都支持--help查看详细参数说明。

二、仿真环境准备:3 步完成部署

批量跑仿真前,需要确认以下环境已就绪(详见 util/job_launching/README.md):

  1. 安装 CUDA Toolkit,且nvcc在PATH中;
  2. 已 source 模拟器环境脚本并完成编译;
  3. SASS 模式下:已生成或下载 trace 文件;PTX 模式下:已编译好应用。
# 1. 获取 Accel-Sim 框架代码 git clone https://gitcode.com/gh_mirrors/ac/accel-sim-framework # 2. 安装 Python 依赖并配置环境(设置 GPGPUSIM_ROOT 等变量) pip3 install -r requirements.txt source ./gpu-simulator/setup_environment.sh # 3. 编译模拟器,产出 gpu-simulator/bin/release/accel-sim.out make -j -C ./gpu-simulator/

没有 GPU 想跑 SASS trace?仓库提供了预生成 trace 的下载脚本:

./get-accel-sim-traces.py # 按提示选择要下载的预 trace 应用

三、run_simulations.py 批量启动仿真任务

1. SASS trace-driven 模式(推荐)

trace-driven 模式消费 SASS 指令 trace,仿真速度与真实应用规模无关,是 Accel-Sim 的主打用法:

./util/job_launching/run_simulations.py \ -B rodinia_2.0-ft \ -C QV100-SASS \ -T ./hw_run/traces/device-0/9.1/ \ -N myTest

参数拆解:

  • -B:要跑的 benchmark 套件名(可逗号分隔多个),定义在 util/job_launching/apps/define-*.yml 中,如rodinia_2.0-ft、GPU_Microbenchmark、parboil、cutlass_5_trace等;
  • -C:GPU 配置名(可逗号分隔多个),定义在 util/job_launching/configs/define-standard-cfgs.yml;
  • -T:trace 根目录,脚本会自动在其中的子目录里定位每个 benchmark 对应的traces/;
  • -N:本次启动的命名,后续查状态、收统计都靠它。

2. PTX 模式

不带-T即进入 PTX 模式,直接仿真编译后的可执行文件:

./util/job_launching/run_simulations.py -B rodinia_2.0-ft -C QV100-PTX -N myTest-PTX

3. 它背后帮你做了什么?

run_simulations.py 并不是简单地"提交 N 个任务",它会自动完成 7 件事:

  1. 把已编译的accel-sim.out复制到按 git commit 版本隔离的gpgpu-sim-builds/目录——测试跑一半时重新编译模拟器,也不会影响在跑的任务;
  2. 按运行目录/应用名/参数目录/配置名创建每个任务独立的运行目录;
  3. 把仿真所需的.ptx、.icnt、.csv、.xml等文件复制进目录;
  4. 为每个目录软链接它需要的data/和traces/;
  5. 拼装最终gpgpusim.config(base 配置 + 扩展参数 + benchmark 专属选项 + SASS 模式的 trace.config);
  6. 通过任务管理器(Slurm/Torque/本地)提交任务;
  7. 在logfiles/下生成启动日志,供后续脚本收集状态和统计。

默认运行目录是sim_run_<CUDA版本>/(如sim_run_12.8),可用-r自定义。想调试某个任务?进入对应目录后执行gdb --args ./justrun.sh即可。

四、看懂配置命名:QV100-SASS 是怎么拼出来的?

配置名采用"基础配置 - 扩展配置"的可组合命名(解析逻辑见 common.py 中的get_config)。基础配置对应一块真实 GPU 的 gpgpusim.config:

基础配置对应 GPU
QV100/GV100/TITANVVolta 系列
A100Ampere
RTX3070Ampere RTX 3070
RTX2060/RTX2060_STuring
TITANXPascal
TITANKKepler
GTX480Fermi

后面跟的扩展配置是"开关"式追加参数,例如:

  • QV100-SASS/QV100-PTX:标记驱动方式(官方强烈建议命名里带上,方便区分);
  • L1ON/L1OFF:开/关 L1 数据缓存;
  • FRFCFS/FCFS:DRAM 调度器切换;
  • PWR_ENABLE、Accelwattch_SASS_SIM等:启用 AccelWattch 功耗仿真;
  • 64SM:把 SM 数翻倍成假设架构,用于"what-if"探索。

一条命令对比多种配置,逗号分隔即可:

./util/job_launching/run_simulations.py -B rodinia_2.0-ft \ -C QV100-SASS,RTX2060-SASS,A100-SASS -T ./hw_run/traces/... -N cmp-test

想跑自己的配置或应用?按 define-all-apps.yml / define-standard-cfgs.yml 的格式新建define-myapps.yml即可,脚本启动时会自动加载目录里所有define-*.yml,互不干扰。

五、监控任务与收集统计:闭环工作流

1. 查状态

# 随时查看任务状态(运行中/等待/完成 + 基本仿真指标) ./util/job_launching/job_status.py -N myTest # 阻塞式监控:任务没跑完不返回,跑完自动调 get_stats.py 汇总 ./util/job_launching/monitor_func_test.py -v -N myTest

job_status.py的输出是一张直观的状态表,包含节点、应用、参数、运行时长、内存占用,以及完成后自动抓取的SIMRATE、TOT_IPC、TOT_INSN等指标。

2. 收统计数据

# 按本次启动收集每应用统计 ./util/job_launching/get_stats.py -N myTest | tee stats.csv # 按每个 kernel 实例聚合(论文对比常用) ./util/job_launching/get_stats.py -K -k -B rodinia_2.0-ft -C QV100-SASS | tee per-kernel.csv # 输出可直接喂给自动绑图脚本 ./util/job_launching/get_stats.py -R -B rodinia_2.0-ft -C QV100-SASS,QV100-PTX | tee autoplot.csv

想收集哪些指标由 util/job_launching/stats/example_stats.yml 中的正则定义,默认包含gpu_ipc、gpu_occupancy、L2_BW、仿真速率等常用指标。

3. 一键快速验证

如果只想快速确认整个工作流能跑通,仓库根目录的 short-tests.sh 就演示了完整闭环:编译模拟器 → 下载 rodinia trace → 用run_simulations.py跑QV100-SASS→ 用monitor_func_test.py等待并汇总。

六、常用参数速查表

参数说明典型取值
-Bbenchmark 套件列表rodinia_2.0-ft、parboil
-C配置列表QV100-SASS、A100-PTX
-Ttrace 根目录(SASS 模式)./hw_run/traces/device-0/9.1/
-N本次启动命名myTest
-M单任务内存限制70G、4G
-l任务管理器sbatch/qsub/local
-c本地模式并行核数默认吃满本机核数
-r自定义运行目录./my_sim_runs
-n只建目录不提交(本地试跑配置用)开关
-aAccelWattch HW/HYBRID 模式传应用名开关

关于任务管理器:脚本会自动探测sbatch→qsub→ 本地 procman.py。procman是一个零依赖的单机"穷人版 Slurm",把任务排队后按核数持续并发执行,单机多核跑几十个任务非常顺手:

# 明确指定本地调度并限制用 8 核 ./util/job_launching/run_simulations.py -B rodinia_2.0-ft -C QV100-SASS \ -T ./hw_run/rodinia_2.0-ft/9.1/ -N myTest -l local -c 8

七、让效率翻倍的进阶技巧 ⚡

  1. 大 workload 记得限内存:跑全量验证集(数百个应用)时加-M 70G,避免单任务内存撑爆节点;
  2. 功耗仿真顺手开:把-C换成GV100-Accelwattch_SASS_SIM即可在性能仿真同时输出功耗,结果按 kernel 存放在运行目录的accelwattch_power_report.log中,详见 AccelWattch.md;
  3. 先小后大:先用rodinia_2.0-ft这类短跑功能测试验证新配置(-n只建目录不提交,方便先手动检查gpgpusim.config),再上大规模 sweep;
  4. 目录可安全清理:运行目录在每次新启动时会重建,确认结果已收集后可以直接删除。

八、常见问题 FAQ

Q1:报错 "ERROR - Please run setup_environment before running this script"?说明当前 shell 没有 source 过 setup_environment.sh,重新执行source ./gpu-simulator/setup_environment.sh再启动即可。

Q2:报错 "ERROR - Cannot find nvcc PATH"?把CUDA_INSTALL_PATH/bin加进PATH,保证nvcc可被找到。

Q3:提示找不到 trace?-T应指向 trace 树的根目录(脚本会在其中自动匹配<应用_参数>/traces结构),路径写法参考 short-tests.sh 中的-T ./hw_run/rodinia_2.0-ft/9.1。

Q4:配置名里写了 SASS 却报退出?SASS 配置必须配合-T指定 trace 目录,否则脚本会直接退出提醒你。

Q5:想只手动跑单个 workload 怎么办?可以直接调用可执行文件:accel-sim.out -trace ./traces/kernelslist.g -config .../gpgpusim.config -config .../trace.config。但官方建议优先使用run_simulations.py,目录结构和统计收集全都对得上,生产力差距明显。

总结

Accel-Sim 的仿真工作流可以用一句话概括:run_simulations.py负责"发任务",job_status.py/monitor_func_test.py负责"盯任务",get_stats.py负责"收数据"。掌握-B、-C、-T、-N四个核心参数和"基础配置 + 扩展配置"的命名规则,你就能像官方 CI 一样标准化地批量执行 GPU 仿真,并把结果一键聚合成可直接绑图的 CSV 📊

【免费下载链接】accel-sim-framework

This is the top-level repository for the Accel-Sim framework.

项目地址:https://gitcode.com/gh_mirrors/ac/accel-sim-framework
点击查看免费下载

相关推荐

上一篇:终极指南:Merlin代理从编译到部署的完整教程 🚀
下一篇:Futurerestore终极指南:iOS固件降级与恢复的完整解决方案

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询