【免费下载链接】accel-sim-framework
This is the top-level repository for the Accel-Sim framework.
Accel-Sim 是一个面向 GPU 体系结构研究的开源仿真框架(基于 GPGPU-Sim 4.0 性能模型 + AccelWattch 功耗模型),而 run_simulations.py 是它内置的工作负载批量启动管理器:一条命令即可把"多个基准测试 × 多种 GPU 配置"的任务矩阵自动拆分成成百上千个仿真任务,处理目录创建、trace 链接、配置文件拼装,并自动适配 Slurm / Torque / 本地多核调度。本文带你从零走通 Accel-Sim 仿真工作流 🚀
一、Accel-Sim 是什么?为什么需要批量跑?
做 GPU 仿真研究时,你通常要做这几件事:
- 拿一堆 benchmark(Rodinia、PolyBench、CutLASS 等)在多种配置(QV100、A100、TITANX……)下反复跑仿真;
- 确认所有任务都正确跑完,出错了能快速定位;
- 把结果聚合成论文里的统计表格(如 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):
- 安装 CUDA Toolkit,且
nvcc在PATH中; - 已 source 模拟器环境脚本并完成编译;
- 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-PTX3. 它背后帮你做了什么?
run_simulations.py 并不是简单地"提交 N 个任务",它会自动完成 7 件事:
- 把已编译的
accel-sim.out复制到按 git commit 版本隔离的gpgpu-sim-builds/目录——测试跑一半时重新编译模拟器,也不会影响在跑的任务; - 按
运行目录/应用名/参数目录/配置名创建每个任务独立的运行目录; - 把仿真所需的
.ptx、.icnt、.csv、.xml等文件复制进目录; - 为每个目录软链接它需要的
data/和traces/; - 拼装最终
gpgpusim.config(base 配置 + 扩展参数 + benchmark 专属选项 + SASS 模式的 trace.config); - 通过任务管理器(Slurm/Torque/本地)提交任务;
- 在
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/TITANV | Volta 系列 |
A100 | Ampere |
RTX3070 | Ampere RTX 3070 |
RTX2060/RTX2060_S | Turing |
TITANX | Pascal |
TITANK | Kepler |
GTX480 | Fermi |
后面跟的扩展配置是"开关"式追加参数,例如:
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 myTestjob_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等待并汇总。
六、常用参数速查表
| 参数 | 说明 | 典型取值 |
|---|---|---|
-B | benchmark 套件列表 | rodinia_2.0-ft、parboil |
-C | 配置列表 | QV100-SASS、A100-PTX |
-T | trace 根目录(SASS 模式) | ./hw_run/traces/device-0/9.1/ |
-N | 本次启动命名 | myTest |
-M | 单任务内存限制 | 70G、4G |
-l | 任务管理器 | sbatch/qsub/local |
-c | 本地模式并行核数 | 默认吃满本机核数 |
-r | 自定义运行目录 | ./my_sim_runs |
-n | 只建目录不提交(本地试跑配置用) | 开关 |
-a | AccelWattch 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七、让效率翻倍的进阶技巧 ⚡
- 大 workload 记得限内存:跑全量验证集(数百个应用)时加
-M 70G,避免单任务内存撑爆节点; - 功耗仿真顺手开:把
-C换成GV100-Accelwattch_SASS_SIM即可在性能仿真同时输出功耗,结果按 kernel 存放在运行目录的accelwattch_power_report.log中,详见 AccelWattch.md; - 先小后大:先用
rodinia_2.0-ft这类短跑功能测试验证新配置(-n只建目录不提交,方便先手动检查gpgpusim.config),再上大规模 sweep; - 目录可安全清理:运行目录在每次新启动时会重建,确认结果已收集后可以直接删除。
八、常见问题 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.
相关推荐
GPGPU-Sim:终极GPU仿真平台完全指南
GPGPU Sim:终极GPU仿真平台完全指南 想要深入了解GPU内部工作原理却苦于没有真实硬件?GPGPU Sim就是你的完美解决方案!这个强大的开源工具让你
科研高性能计算硬件仿真Magicoder与主流代码模型的终极对决:HumanEval、MBPP基准测试结果分析
Magicoder与主流代码模型的终极对决:HumanEval、MBPP基准测试结果分析 Magicoder是一款基于开源指令(OSS Instruct)的AI
OpenScholar终极指南:5步构建你的AI科研助手,让文献调研效率提升10倍 🚀
OpenScholar终极指南:5步构建你的AI科研助手,让文献调研效率提升10倍 🚀 在科研领域,每天都有数百万篇论文发表,传统的人工文献筛选方式已经无法满
人工智能大模型RAGAI 应用微调
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考