#hwloc #硬件 #绑定 #局部性 #节点 #拓扑 #集合

sys hwloc2

Rust 对 2.x 版本 hwloc 硬件局部性库的绑定

1 个稳定版本

使用旧的 Rust 2015

2.2.0 2020 年 5 月 22 日

#246缓存

Download history 68/week @ 2024-03-11 109/week @ 2024-03-18 101/week @ 2024-03-25 108/week @ 2024-04-01 79/week @ 2024-04-08 91/week @ 2024-04-15 129/week @ 2024-04-22 51/week @ 2024-04-29 68/week @ 2024-05-06 70/week @ 2024-05-13 95/week @ 2024-05-20 25/week @ 2024-05-27 69/week @ 2024-06-03 20/week @ 2024-06-10 45/week @ 2024-06-17 41/week @ 2024-06-24

176 每月下载量
4 crates 中使用

MIT 许可证

98KB
1.5K SLoC

hwloc2-rs

MIT licensed

本项目是 daschl/hwloc-rs 的继承者,除了这个库支持 hwloc 的 2.x.x 版本。这个库试图维护与 daschl/hwloc-rs 相同的大部分 API 层。

Hwloc 是 Open MPI 的一个 C 库,用于检测现代架构的层次拓扑结构。这包括 NUMA 内存节点、插槽、共享数据 & 指令缓存、核心和同时多线程。

先决条件

安装了 hwloc 2.2.0 的系统。

请注意,这不是目前许多主流发行版包管理器默认安装的版本。您可能需要从源代码安装它

您可以从 https://www.open-mpi.org/projects/hwloc/ 下载源代码

用法

首先,将以下内容添加到您的 Cargo.toml

[dependencies]
hwloc2 = "2.2.0"

然后,将其添加到您的 crate 根目录

extern crate hwloc2;

以下是一个快速示例,它遍历 拓扑 并将其打印出来

extern crate hwloc2;

use hwloc2::Topology;

fn main() {
	let topo = Topology::new().unwrap();

	for i in 0..topo.depth() {
		println!("*** Objects at level {}", i);

		for (idx, object) in topo.objects_at_depth(i).iter().enumerate() {
			println!("{}: {}", idx, object);
		}
	}
}

如果您想运行它们,可以查看 更多示例

运行示例

该库附带示例,要运行它们,您需要克隆仓库,然后通过 cargo run --example= 运行它们。

$ git clone https://github.com/ichbinjoe/hwloc2-rs.git
$ cd hwloc-rs

要运行示例(这将下载依赖项并构建它),您可以使用 cargo run -example=

$ cargo run --example=walk_tree
   Compiling hwloc v2.2.0 (/directory/hwloc2-rs)
    Finished dev [unoptimized + debuginfo] target(s) in 0.54s
     Running `target/debug/examples/walk_tree`
*** Printing overall tree
Machine (): #0
 Package (): #0
  L3 (8192KB): #4294967295
   L2 (512KB): #4294967295
    L1d (32KB): #4294967295
     Core (): #0
      PU (): #0
      PU (): #8
   L2 (512KB): #4294967295
    L1d (32KB): #4294967295
     Core (): #1
      PU (): #1
      PU (): #9
   L2 (512KB): #4294967295
    L1d (32KB): #4294967295
     Core (): #2
      PU (): #2
      PU (): #10
   L2 (512KB): #4294967295
    L1d (32KB): #4294967295
     Core (): #3
      PU (): #3
      PU (): #11
  L3 (8192KB): #4294967295
   L2 (512KB): #4294967295
    L1d (32KB): #4294967295
     Core (): #4
      PU (): #4
      PU (): #12
   L2 (512KB): #4294967295
    L1d (32KB): #4294967295
     Core (): #5
      PU (): #5
      PU (): #13
   L2 (512KB): #4294967295
    L1d (32KB): #4294967295
     Core (): #6
      PU (): #6
      PU (): #14
   L2 (512KB): #4294967295
    L1d (32KB): #4294967295
     Core (): #7
      PU (): #7
      PU (): #15

许可证

本项目采用MIT许可证,请参阅LICENSE文件以获取更多信息。

依赖关系

~260–580KB