LIKWID性能分析工具全面解析与使用指南

LIKWID性能分析工具全面解析与使用指南

【免费下载链接】likwid Performance monitoring and benchmarking suite 【免费下载链接】likwid 项目地址: https://gitcode.com/gh_mirrors/li/likwid

项目概述

LIKWID(Like I Knew What I'm Doing)是一套专为Linux系统设计的高性能、易用性强的性能分析工具集。最初专注于x86架构处理器,现已扩展支持ARM、POWER架构处理器,并在5.0版本后加入了对NVIDIA GPU的支持,通过Rocmon后端也实现了对AMD GPU的监控。

核心设计理念

LIKWID遵循四个基本原则:

  1. 简单性:提供直观易用的命令行工具和API接口
  2. 高效性:最小化性能开销,确保测量结果准确
  3. 可移植性:支持多种处理器架构和操作系统环境
  4. 可扩展性:模块化设计便于功能扩展和定制

主要工具组件

系统信息工具

  • likwid-topology:显示多核/多插槽计算机的线程和缓存拓扑结构
  • likwid-genTopoCfg:生成系统拓扑配置文件,加速LIKWID启动

性能监控工具

  • likwid-perfctr:硬件性能计数器测量工具,支持x86/ARM/POWER处理器及NVIDIA/AMD GPU
  • likwid-powermeter:访问Intel处理器的RAPL计数器并查询Turbo模式状态
  • likwid-features:控制预取器并显示CPU特性

资源管理工具

  • likwid-pin:无需修改代码即可实现线程绑核,支持pthreads和OpenMP
  • likwid-setFrequencies:管理CPU硬件线程和Uncore的时钟频率
  • likwid-memsweeper:清理ccNUMA域和LLC缓存,为基准测试提供干净环境

基准测试工具

  • likwid-bench:基于汇编实现的流式基准测试内核框架

高级功能组件

辅助工具

  • likwid-accessD:高权限执行MSR和PCI读/写操作的守护进程
  • likwid-setFreq:设置CPU频率的守护进程
  • likwid-bridge:容器环境下使用LIKWID的代理应用

封装脚本

  • likwid-mpirun:简化MPI和MPI/线程混合应用绑核的封装脚本
  • likwid-perfscope:基于gnuplot的实时性能数据可视化前端

编程接口支持

C/C++接口

提供丰富的API模块,包括:

  • 标记API(Marker API):精确测量代码特定部分
  • 性能监控:硬件计数器访问
  • 拓扑信息:CPU/NUMA拓扑结构查询
  • 电源/温度监控:RAPL和温度传感器访问

Lua接口

通过Lua脚本实现灵活的自动化性能分析,支持:

  • 系统信息查询
  • 性能计数器配置
  • 电源/温度监控
  • 定时器功能

Fortran90接口

专门为科学计算领域提供的Fortran接口,包括:

  • 基础性能监控接口
  • ROCm GPU接口
  • NVIDIA GPU接口

支持的硬件架构

x86架构

  • Intel处理器:从Pentium M到最新的Granite Rapids全系列支持
  • AMD处理器:从K8到最新的Zen4c架构全覆盖

ARM架构

支持包括:

  • Cortex-A15/A57
  • ThunderX2
  • Fujitsu A64FX
  • Apple M1等主流ARM处理器

POWER架构

完整支持POWER8和POWER9处理器

GPU支持

  • NVIDIA GPU:基于CUPTI事件API和性能分析API
  • AMD GPU:支持ROCm 5.0及以上版本的GPU

构建与安装指南

基本配置

LIKWID使用GNU make构建系统,主要配置文件为config.mk,关键配置项包括:

  • PREFIX:安装路径
  • COMPILER:针对不同架构选择相应编译器
  • ACCESSMODE:设置硬件访问模式(direct/accessdaemon/perf_event)

特殊功能配置

  • GPU支持:通过NVIDIA_INTERFACEROCM_INTERFACE启用
  • 共享库:设置SHARED_LIBRARY构建动态链接库
  • Fortran接口:通过FORTRAN_INTERFACE启用
  • 系统Lua:配置相关路径变量使用系统Lua而非内置版本

构建目标

  • make:完整构建
  • make clean:清理中间文件
  • make docs:生成HTML文档
  • make install:安装到指定目录

安全配置建议

MSR设备访问

硬件性能监控需要访问MSR寄存器,建议配置:

  1. 加载msr内核模块
  2. 设置适当的设备文件权限(/dev/cpu/*/msr
  3. 对于多用户系统,建议:
    • 创建专用用户组
    • 设置setgid权限
    • 或使用likwid-accessD守护进程

能力设置

新内核可能需要设置能力标志:

sudo setcap cap_sys_rawio+ep /path/to/likwid-executable

应用场景示例

性能热点分析

使用Marker API标记关键代码区域:

#include <likwid.h>
...
LIKWID_MARKER_INIT;
LIKWID_MARKER_START("COMPUTE");
// 关键计算代码
LIKWID_MARKER_STOP("COMPUTE");
LIKWID_MARKER_CLOSE;

MPI应用绑核

使用likwid-mpirun优化混合并行应用:

likwid-mpirun -np 4 -pin "S0:0-3" ./mpi_app

基准测试

使用likwid-bench评估内存带宽:

likwid-bench -t load_avx -w S0:1GB

LIKWID工具集为高性能计算提供了从底层硬件监控到上层应用优化的完整解决方案,其跨平台特性和丰富的接口使其成为性能分析和调优的强大工具。

【免费下载链接】likwid Performance monitoring and benchmarking suite 【免费下载链接】likwid 项目地址: https://gitcode.com/gh_mirrors/li/likwid

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

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值