hwloc安装(无root权限不联网不配置环境变量)

简介

可移植硬件位置(hwloc)软件包提供了现代体系结构(包括NUMA内存节点,套接字,共享缓存,内核和同步多线程)的分层拓扑的可移植抽象(跨OS,版本,体系结构等)。它还收集各种系统属性(例如缓存和内存信息)以及I / O设备(例如网络接口,InfiniBand HCA或GPU)的位置。 hwloc的主要目的是帮助应用程序收集有关日益复杂的并行计算平台的信息,从而相应地并有效地利用它们。例如,紧密协作的两个任务可能应该放在共享缓存的内核上。但是,最好将两个独立的内存密集型任务分散到不同的套接字上,以最大程度地提高其内存吞吐量。如本文所述,必须根据其亲和力和硬件特性来放置OpenMP线程。MPI实现采用了类似的技术,同时还按照本文或本白皮书中的描述将其通信策略调整为适合网络位置。 仅通过提供便携式CPU和内存绑定API 以及一种可靠的方法来找出有多少个内核和/或硬件线程可用,hwloc还可为许多应用程序提供帮助 。

安装Hwloc-1.11.1软件 详细步骤 (一)、hwloc-1.11.1 支持版本号:1.11.1及以上 源码包位置: /home/pct13/Hwloc 已经安装好的版本链接位置: /home/pct13/Hwloc/hwloc-1.11.1 安装步骤: 涉及到的源码安装包: Hwloc-1.11.1.tar.gz 1、编译安装hwloc-1.11.1 解压缩

tar -zxvf hwloc-1.11.1.tar.gz

进入解压缩后的文件夹

cd hwloc-1.11.1

安装路径设置

./configure --prefix=/home/pct13/Hwloc/hwloc-1.11.1

编译

make

安装

make install

查看hwloc信息

hwloc-ls

2、成功判断条件

[pct13@sn01 hwloc-1.11.1]$ hwloc-info
depth 0:	1 Machine (type #1)
depth 1:	2 NUMANode (type #2)
depth 2:	2 Package (type #3) 
depth 3:	2 L3Cache (type #4)
depth 4:	56 L2Cache (type #4)
depth 5:	56 L1dCache (type #4)
depth 6:	56 L1iCache (type #4)
depth 7:	56 Core (type #5)
depth 8:	56 PU (type #6)
Special depth -3:	9 Bridge (type #9)
Special depth -4:	7 PCI Device (type #10)
Special depth -5:	10 OS Device (type #11)

3、命令行示例

[pct13@sn01 hwloc-1.11.1]$ hwloc-ls
 Machine (191GB total)
 NUMANode L#0 (P#0 95GB)
 Package L#0 + L3 L#0 (39MB)
 L2 L#0 (1024KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 + PU L#0 (P#0)
 L2 L#1 (1024KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 + PU L#1 (P#1)
 L2 L#2 (1024KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2 + PU L#2 (P#2)
 L2 L#3 (1024KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3 + PU L#3 (P#3)
 L2 L#4 (1024KB) + L1d L#4 (32KB) + L1i L#4 (32KB) + Core L#4 + PU L#4 (P#4)
 HostBridge L#0
 PCI 8086:2827
 Block(Disk) L#0 "sda"
 Block(Disk) L#1 "sdb"
 PCI 8086:a182
 PCIBridge
 PCIBridge
 PCI 1a03:2000
 GPU L#2 "card0"
 GPU L#3 "controlD64"
 HostBridge L#3
 PCIBridge
 PCI 8086:10fb
 Net L#4 "enp26s0f0"
 PCI 8086:10fb
 Net L#5 "enp26s0f1"
 HostBridge L#5
 PCIBridge
 PCI 15b3:101b
 Net L#6 "ib0"
 OpenFabrics L#7 "mlx5_0"
 NUMANode L#1 (P#1 96GB)
 Package L#1 + L3 L#1 (39MB)
 L2 L#28 (1024KB) + L1d L#28 (32KB) + L1i L#28 (32KB) + Core L#28 + PU L#28  (P#28) 
 L2 L#29 (1024KB) + L1d L#29 (32KB) + L1i L#29 (32KB) + Core L#29 + PU L#29 (P#29)
 L2 L#30 (1024KB) + L1d L#30 (32KB) + L1i L#30 (32KB) + Core L#30 + PU L#30 (P#30)
 L2 L#31 (1024KB) + L1d L#31 (32KB) + L1i L#31 (32KB) + Core L#31 + PU L#31 (P#31)
 L2 L#32 (1024KB) + L1d L#32 (32KB) + L1i L#32 (32KB) + Core L#32 + PU L#32 (P#32)
 HostBridge L#7
 PCIBridge
 PCI 15b3:101b
 Net L#8 "ib1"
 OpenFabrics L#9 "mlx5_1"

Hwloc软件算例

详细步骤 (一)、编写Makefile文件 在hwloc-1.11.1/doc/examples文件中编写Makefile文件

[pct13@sn01 examples]$ vim Makefile
 CFLAGS+=$ (shell pkg-config --cflags hwloc)
 LDLIBS+=$ (shell pkg-config --libs hwloc)
 hwloc-hello: hwloc-hello.c
 $(CC) hwloc-hello.c $(CFLAGS) -o hwloc-hello $(LDLIBS)

(二)、执行 提交make命令,编译完成后,会生成hwloc-hello可执行文件 执行hwloc-hello,运行结果如图

经验分享 程序员 微信小程序 职场和发展