使用Intel Vtune分析MPI应用时触发aps错误求助
问题场景
执行以下命令尝试用Intel VTune分析MPI版VASP应用时出错:
- 命令1:
export I_MPI_DEBUG=5 mpirun -np 4 aps ~/binary/vasp_std_2022
- 命令2:
mpirun -genv I_MPI_DEBUG=5 -np 4 aps ~/binary/vasp_std_2022
收到的错误及警告信息:
vtune: 警告:虚拟机内不支持内存带宽收集,因无法采集uncore事件。如需完整功能,请使用裸机环境。
vtune: 警告:当前平台不支持CPU频率数据收集。
vtune: 错误:amplxe-perf:
Using CPUID GenuineIntel-6-6A-6
both cgroup and no-aggregation modes only available in system-wide mode
Usage: perf stat [] []
-G, --cgroup monitor event in cgroup name only
-A, --no-aggr disable CPU count aggregation
-a, --all-cpus system-wide collection from all CPUs
--for-each-cgroup expand events for each cgroup
vtune: 错误:请求事件的初步验证失败。
aps Error: 无法运行采集任务。
aps Error: 无法处理configs目录。
aps Error: 无法处理configs目录。
aps Error: 无法处理configs目录。
错误原因
- 虚拟机环境限制:VTune的内存带宽、CPU频率采集功能依赖裸机硬件的uncore事件支持,虚拟机无法提供,会触发警告,但这不是核心错误。
- perf采集模式冲突:核心问题是
amplxe-perf检测到同时启用了cgroup和no-aggregation模式,但这两种模式仅支持system-wide(全系统)采集模式,当前MPI任务未启用该模式,导致事件验证失败,进而引发采集任务和configs目录处理错误。 - 权限问题:configs目录读写权限不足,导致VTune无法访问配置文件。
解决方案
1. 启用system-wide采集模式
修改命令,给aps添加-a参数开启全系统采集:
mpirun -genv I_MPI_DEBUG=5 -np 4 aps -a ~/binary/vasp_std_2022
也可以通过配置文件指定:
创建vtune_config.cfg文件,写入:
[global] system-wide=yes
然后执行:
mpirun -genv I_MPI_DEBUG=5 -np 4 aps -c vtune_config.cfg ~/binary/vasp_std_2022
2. 禁用虚拟机不支持的采集项(可选)
如果无法切换到裸机,可关闭内存带宽和CPU频率采集,避免警告干扰:
mpirun -genv I_MPI_DEBUG=5 -np 4 aps -collect hotspots -knob enable-memory-bandwidth=no -knob enable-cpu-frequency=no ~/binary/vasp_std_2022
3. 修复configs目录权限
查找VTune的configs目录并赋予读写权限:
# 查找configs目录路径 find /opt/intel -name "configs" -type d # 调整权限(替换为实际路径) sudo chmod -R 755 /opt/intel/oneapi/vtune/latest/configs
内容的提问来源于stack exchange,提问作者Aishwarya

