likwid

likwid

开源高性能计算性能分析工具

Likwid是一个开源的高性能计算性能分析工具套件,支持多种处理器和GPU,运行于Linux系统。它提供硬件拓扑分析、性能计数器监控、能耗测量等功能,帮助开发者分析和优化应用性能。Likwid以命令行工具和库的形式提供,使用简单,功能强大,是高性能计算领域重要的性能分析工具。

LIKWID性能分析硬件计数器多线程系统监控Github开源项目

简介

Likwid是一套简单易用的命令行应用程序和库,专为注重性能的程序员设计。它适用于运行Linux操作系统的Intel、AMD、ARMv8和POWER9处理器。此外还支持Nvidia和AMD GPU。虽然也支持ARMv7和POWER8/9,但目前我们没有测试机器来对它们进行适当测试。

LIKWID播放列表 (YouTube)

构建状态 LIKWID通用DOI

它包括以下组件:

  • likwid-topology:打印线程、缓存和NUMA拓扑
  • likwid-perfctr:在Intel、AMD、ARM和POWER处理器以及Nvidia GPU上配置和读取硬件性能计数器
  • likwid-powermeter:读取RAPL能耗信息并获取Turbo模式步骤信息
  • likwid-pin:将您的多线程应用程序(pthread、Intel和gcc OpenMP)固定到指定处理器
  • likwid-bench:CPU架构的微基准测试平台
  • likwid-features:打印和操作CPU特性,如硬件预取器(仅限x86)
  • likwid-genTopoCfg:将拓扑信息导出到文件
  • likwid-mpirun:启动MPI和混合MPI/OpenMP应用程序的包装器(支持Intel MPI、OpenMPI、MPICH和SLURM)
  • likwid-perfscope:likwid-perfctr时间线模式的前端,使用gnuplot实时绘制性能指标图表
  • likwid-memsweeper:扫描NUMA域内存并从最后一级缓存中逐出缓存行
  • likwid-setFrequencies:控制CPU和Uncore频率的工具(仅限x86)
  • likwid-sysFeatures:控制系统设置如频率、功耗上限和预取器的工具(实验性)

更多信息请查看Wiki或通过Matrix聊天LIKWID General联系我们。


支持的架构

Intel

  • Intel Atom
  • Intel Pentium M
  • Intel Core2
  • Intel Nehalem
  • Intel NehalemEX
  • Intel Westmere
  • Intel WestmereEX
  • Intel Xeon Phi (KNC)
  • Intel Silvermont & Airmont
  • Intel Goldmont
  • Intel SandyBridge
  • Intel SandyBridge EP/EN
  • Intel IvyBridge
  • Intel IvyBridge EP/EN/EX
  • Intel Xeon Phi (KNL, KNM)
  • Intel Haswell
  • Intel Haswell EP/EN/EX
  • Intel Broadwell
  • Intel Broadwell D
  • Intel Broadwell EP
  • Intel Skylake
  • Intel Kabylake
  • Intel Coffeelake
  • Intel Skylake SP
  • Intel Cascadelake SP
  • Intel Icelake
  • Intel Icelake SP
  • Intel Tigerlake (实验性)
  • Intel SapphireRapids

AMD

  • AMD K8
  • AMD K10
  • AMD Interlagos
  • AMD Kabini
  • AMD Zen
  • AMD Zen2
  • AMD Zen3
  • AMD Zen4

ARM

  • ARMv7
  • ARMv8
  • 对Marvell Thunder X2的特殊支持
  • Fujitsu A64FX
  • ARM Neoverse N1 (AWS Graviton 2)
  • ARM Neoverse V1
  • HiSilicon TSV110
  • Apple M1 (仅支持Linux)

POWER (实验性)

  • IBM POWER8
  • IBM POWER9

Nvidia GPU

AMD GPU


下载、构建和安装

您可以在以下地址获取LIKWID的发布版本: http://ftp.fau.de/pub/likwid/

有关构建和安装的提示,请参阅INSTALL文件或查看wiki中的构建说明页面 https://github.com/RRZE-HPC/likwid/wiki/Build

快速安装方法:

VERSION=stable wget http://ftp.fau.de/pub/likwid/likwid-$VERSION.tar.gz tar -xaf likwid-$VERSION.tar.gz cd likwid-* vi config.mk # 配置构建,例如更改安装前缀和架构标志 make sudo make install # 需要sudo权限以正确权限安装访问守护程序

对于ARM构建,需要将config.mk中的COMPILER标志更改为GCCARMv8ARMCLANG(实验性)。 对于POWER构建,需要将config.mk中的COMPILER标志更改为GCCPOWERXLC(实验性)。 要支持Nvidia GPU,请在config.mk中将NVIDIA_INTERFACE设置为true,并根据需要调整构建时变量。 要支持AMD GPU,请在config.mk中将ROCM_INTERFACE设置为true,并根据需要调整构建时变量。

使用示例

<details> <summary><code>likwid-topology</code></summary> <pre> -------------------------------------------------------------------------------- CPU 名称: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz CPU 类型: Intel Skylake 处理器 CPU 步进: 3 ******************************************************************************** 硬件线程拓扑 ******************************************************************************** 插槽数: 1 每个插槽的核心数: 4 每个核心的线程数: 2 -------------------------------------------------------------------------------- 硬件线程 线程 核心 裸片 插槽 可用性 0 0 0 0 0 * 1 0 1 0 0 * 2 0 2 0 0 * 3 0 3 0 0 * 4 1 0 0 0 * 5 1 1 0 0 * 6 1 2 0 0 * 7 1 3 0 0 * -------------------------------------------------------------------------------- 插槽 0: ( 0 4 1 5 2 6 3 7 ) -------------------------------------------------------------------------------- ******************************************************************************** 缓存拓扑 ******************************************************************************** 级别: 1 大小: 32 kB 缓存组: ( 0 4 ) ( 1 5 ) ( 2 6 ) ( 3 7 ) -------------------------------------------------------------------------------- 级别: 2 大小: 256 kB 缓存组: ( 0 4 ) ( 1 5 ) ( 2 6 ) ( 3 7 ) -------------------------------------------------------------------------------- 级别: 3 大小: 8 MB 缓存组: ( 0 4 1 5 2 6 3 7 ) -------------------------------------------------------------------------------- ******************************************************************************** NUMA 拓扑 ******************************************************************************** NUMA 域数: 1 -------------------------------------------------------------------------------- 域: 0 处理器: ( 0 4 1 5 2 6 3 7 ) 距离: 10 可用内存: 318.203 MB 总内存: 7626.23 MB -------------------------------------------------------------------------------- </pre> </details> <details> <summary><code>likwid-perfctr</code></summary> <pre> $ likwid-perfctr -C 0 -g L2 hostname -------------------------------------------------------------------------------- CPU 名称: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz CPU 类型: Intel Skylake 处理器 CPU 时钟: 4.01 GHz -------------------------------------------------------------------------------- mytesthost -------------------------------------------------------------------------------- 组 1:L2 +-----------------------+---------+------------+ | 事件 | 计数器 | 硬件线程 0 | +-----------------------+---------+------------+ | INSTR_RETIRED_ANY | FIXC0 | 321342 | | CPU_CLK_UNHALTED_CORE | FIXC1 | 450498 | | CPU_CLK_UNHALTED_REF | FIXC2 | 1118900 | | L1D_REPLACEMENT | PMC0 | 6670 | | L1D_M_EVICT | PMC1 | 1840 | | ICACHE_64B_IFTAG_MISS | PMC2 | 9293 | +-----------------------+---------+------------+

+--------------------------------+------------+ | 指标 | 硬件线程 0 | +--------------------------------+------------+ | 运行时间 (RDTSC) [秒] | 0.0022 | | 非停顿运行时间 [秒] | 0.0001 | | 时钟 [MHz] | 1613.6392 | | 每指令周期数 (CPI) | 1.4019 | | L2D 加载带宽 [MBytes/秒] | 197.8326 | | L2D 加载数据量 [GBytes] | 0.0004 | | L2D 驱逐带宽 [MBytes/秒] | 54.5745 | | L2D 驱逐数据量 [GBytes] | 0.0001 | | L2 带宽 [MBytes/秒] | 528.0381 | | L2 数据量 [GBytes] | 0.0011 | +--------------------------------+------------+ </pre>

</details> <details> <summary><code>likwid-pin</code></summary> <pre> $ likwid-pin -c 0,1,2 ./a.out [pthread 包装器] [pthread 包装器] 主线程 -> 0 [pthread 包装器] 固定掩码:0->1 1->2 [pthread 包装器] 跳过掩码:0x0 线程ID 140566548539136 -> 硬件线程 1 - 成功 线程ID 140566540146432 -> 硬件线程 2 - 成功 请求的线程数 = 3 线程 0 在处理器 0 上运行 .... 线程 1 在处理器 1 上运行 .... 线程 2 在处理器 2 上运行 .... [...] </pre> </details> <details> <summary><code>likwid-bench</code></summary> <pre> $ likwid-bench -t triad_avx -W N:2GB:3 警告:将向量长度调整为循环步长16和线程数3的倍数,从62500000个元素(500000000字节)调整为62499984个元素(499999872字节) 分配:进程在硬件线程0(域N)上运行 - 向量长度62499984/499999872 偏移量0 对齐512 分配:进程在硬件线程0(域N)上运行 - 向量长度62499984/499999872 偏移量0 对齐512 分配:进程在硬件线程0(域N)上运行 - 向量长度62499984/499999872 偏移量0 对齐512 分配:进程在硬件线程0(域N)上运行 - 向量长度62499984/499999872 偏移量0 对齐512 初始化:域中的每个线程初始化自己的流块 -------------------------------------------------------------------------------- LIKWID微基准测试 测试:triad_avx -------------------------------------------------------------------------------- 使用1个工作组 使用3个线程 -------------------------------------------------------------------------------- 在没有Marker API的情况下运行。在命令行中使用-m激活Marker API。 -------------------------------------------------------------------------------- 组:0 线程1 全局线程1在硬件线程4上运行 - 向量长度20833328 偏移量20833328 组:0 线程0 全局线程0在硬件线程0上运行 - 向量长度20833328 偏移量0 组:0 线程2 全局线程2在硬件线程1上运行 - 向量长度20833328 偏移量41666656 -------------------------------------------------------------------------------- 周期: 22977763263 CPU时钟: 4007946861 周期时钟: 4007946861 时间: 5.733051e+00 秒 迭代次数: 96 每线程迭代次数: 32 内部循环执行次数: 1302083 大小(字节): 1999999488 每线程大小: 666666496 浮点运算次数: 3999998976 MFlops/s: 697.71 数据量(字节): 63999983616 MByte/s: 11163.34 每次更新的周期数: 11.488885 每缓存行的周期数: 91.911077 每次更新的加载次数: 3 每次更新的存储次数: 1 每元素加载字节数: 24 每元素存储字节数: 8 加载/存储比率: 3.00 指令数: 2374999408 微操作数: 3749999040 -------------------------------------------------------------------------------- </pre> </details> <details> <summary><code>likwid-mpirun</code></summary> <pre> $ likwid-mpirun -mpi slurm -np 4 -t 2 ./a.out MPI已启动 等级为0的进程在节点f0846.nhr.fau.de的核心0上运行 等级为2的进程在节点f0859.nhr.fau.de的核心0上运行 等级为3的进程在节点f0859.nhr.fau.de的核心36上运行 等级为1的进程在节点f0846.nhr.fau.de的核心36上运行 进入OpenMP并行区域 启动OpenMP线程 等级0线程0在节点f0846.nhr.fau.de的核心0上运行 等级0线程1在节点f0846.nhr.fau.de的核心1上运行 等级1线程0在节点f0846.nhr.fau.de的核心36上运行 等级1线程1在节点f0846.nhr.fau.de的核心37上运行 等级2线程0在节点f0859.nhr.fau.de的核心0上运行 等级2线程1在节点f0859.nhr.fau.de的核心1上运行 等级3线程0在节点f0859.nhr.fau.de的核心36上运行 等级3线程1在节点f0859.nhr.fau.de的核心37上运行 </pre> </details> <details> <summary><code>likwid-powermeter</code></summary> <pre> $ likwid-powermeter -------------------------------------------------------------------------------- CPU名称: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz CPU类型: Intel Skylake处理器 CPU时钟: 4.01 GHz -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 运行时间:2.00019秒 在CPU 0上测量插座0 PKG域: 能耗:7.47705焦耳 功耗:3.73817瓦特 PP0域: 能耗:5.42047焦耳 功耗:2.70998瓦特 PP1域: 能耗:0.0872803焦耳 功耗:0.043636瓦特 DRAM域: 能耗:1.02612焦耳 功耗:0.513013瓦特 PLATFORM域: 能耗:0焦耳 功耗:0瓦特 -------------------------------------------------------------------------------- </pre> </details> <details> <summary><code>likwid-features</code></summary> <pre> $ likwid-features -c 0 -l 特性 硬件线程0 硬件预取器 开启 缓存行预取器 开启 DCU预取器 开启 IP预取器 开启 快速字符串 开启 热控制 开启 性能监控 开启 FERR多路复用 关闭 分支跟踪存储 开启 XTPR消息 关闭 PEBS 开启 变速步进 开启 监控 开启 变速步进锁定 关闭 CPUID最大值 关闭 XD位 开启 动态加速 关闭 睿频模式 开启 TM2 关闭 </pre> </details>

文档

有关工具使用的详细文档,请查看使用doxygen构建的html文档。执行

make docs

或在安装后查看man页面。

GitHub页面上还有一个wiki: https://github.com/rrze-likwid/likwid/wiki

如果您有问题或建议,请在likwid邮件列表上告诉我: http://groups.google.com/group/likwid-users

或者如果是bug,请在以下位置添加问题: https://github.com/rrze-likwid/likwid/issues 你也可以通过Matrix与我们聊天:


附加内容


调查

我们在用户邮件列表中发起了一项调查,以了解谁在使用LIKWID以及如何使用。 此外,我们也想知道你是否觉得LIKWID缺少某些功能,或者在使用LIKWID时有什么让你感到不便的地方。 调查链接: https://groups.google.com/forum/#!topic/likwid-users/F7TDho3k7ps


资金支持

LIKWID的开发得到了德国联邦教育与研究部(BMBF)在FEPA项目下的资助,资助号为01IH13009。自2017年起,开发工作继续得到BMBF在SeASiTe项目下的资助,资助号为01IH16012A。2022年,EE-HPC项目在GreenHPC资助计划下获得BMBF的资助。

<div align=center><img src="https://yellow-cdn.veclightyear.com/835a84d5/dd98867e-b30d-4ec1-9295-61e7800963ad.png" alt="BMBF标志" width="150"/></div>

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多