Ubuntu 22.04下PAPI 7.1.0无法检测预设处理器事件求助
解决PAPI无法检测预设处理器事件的步骤
从你的输出可以看到,perf_event组件已激活且支持165个原生事件,但预设事件为0,以下是具体解决操作:
1. 针对Ice Lake架构重新编译PAPI(推荐)
你的CPU是11th Gen Intel i7-1165G7(Ice Lake架构),包管理器安装的PAPI可能未包含对应架构的预设事件映射,建议源码编译:
- 下载PAPI 7.1.0源码:
wget https://github.com/icl-utk-edu/papi/releases/download/papi-7.1.0/papi-7.1.0.tar.gz - 解压并进入源码目录:
tar xzf papi-7.1.0.tar.gz && cd papi-7.1.0/src - 配置时指定Ice Lake架构:
./configure --with-icelake - 编译并安装:
make && sudo make install - 重新运行
papi_avail -a检查预设事件
2. 临时调整内核perf权限
检查内核perf事件限制参数:
sysctl kernel.perf_event_paranoid
如果值≥2,修改为1(降低限制):
sudo sysctl -w kernel.perf_event_paranoid=1
若需永久生效,编辑/etc/sysctl.conf,添加一行:
kernel.perf_event_paranoid=1
之后用sudo重新运行命令测试:
sudo papi_avail -a
3. 直接使用原生事件
既然perf_event组件已支持165个原生事件,可通过以下命令查看所有原生事件:
papi_native_avail
在代码中直接使用原生事件的名称或代码,同样可以完成性能检测需求。
4. 查看组件加载详情
运行以下命令获取更详细的组件加载日志,排查是否有架构识别问题:
papi_component_avail -v
内容的提问来源于stack exchange,提问作者Tomás Torres
相关产品推荐
相关产品推荐

