Project Icon

likwid

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

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


简介

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,并根据需要调整构建时变量。

使用示例

likwid-topology
--------------------------------------------------------------------------------
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
--------------------------------------------------------------------------------
likwid-perfctr
$ 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 | +--------------------------------+------------+

likwid-pin
$ 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 上运行 ....
[...]
likwid-bench
$ 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
--------------------------------------------------------------------------------
likwid-mpirun
$ 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上运行
likwid-powermeter
$ 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瓦特
--------------------------------------------------------------------------------
likwid-features
$ likwid-features -c 0 -l
特性               硬件线程0	
硬件预取器         开启	
缓存行预取器       开启	
DCU预取器          开启	
IP预取器           开启	
快速字符串         开启	
热控制             开启	
性能监控           开启	
FERR多路复用       关闭	
分支跟踪存储       开启	
XTPR消息           关闭	
PEBS                开启	
变速步进           开启	
监控               开启	
变速步进锁定       关闭	
CPUID最大值        关闭	
XD位               开启	
动态加速           关闭	
睿频模式           开启	
TM2                关闭

文档

有关工具使用的详细文档,请查看使用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的资助。

BMBF标志
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号