1. 程式人生 > 其它 >hwloc安裝(無root許可權不聯網不配置環境變數)

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、成功判斷條件

[[email protected] 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、命令列示例

[[email protected] 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檔案

[[email protected] 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,執行結果如圖
在這裡插入圖片描述
在這裡插入圖片描述