5 个版本 (重大更改)

使用旧的 Rust 2015

0.5.0 2017 年 4 月 26 日
0.4.0 2016 年 11 月 30 日
0.3.0 2016 年 2 月 11 日
0.2.0 2015 年 12 月 28 日
0.1.0 2015 年 11 月 16 日

#12 in #局部性

Download history 308/week @ 2024-03-13 254/week @ 2024-03-20 417/week @ 2024-03-27 587/week @ 2024-04-03 359/week @ 2024-04-10 382/week @ 2024-04-17 378/week @ 2024-04-24 298/week @ 2024-05-01 316/week @ 2024-05-08 289/week @ 2024-05-15 260/week @ 2024-05-22 259/week @ 2024-05-29 203/week @ 2024-06-05 297/week @ 2024-06-12 161/week @ 2024-06-19 172/week @ 2024-06-26

846 每月下载次数
用于 14 个 crate (6 个直接使用)

MIT 许可证

85KB
1.5K SLoC

hwloc-rs

MIT licensed

Build Status Build status

本项目是 hwloc C 库 的 Rust 绑定,该库提供了现代架构分层拓扑的便携式抽象,包括 NUMA 内存节点、插槽、共享缓存、核心和同时多线程。

先决条件

由于此绑定依赖于 C 库,您需要安装它。最简单的方法是在系统范围内安装。

以下是我们要尝试测试的版本兼容性表

hwloc-rs libhwloc
0.5 1.11.5
0.4 1.11.5
0.3 1.11.2
0.2 1.11.1
0.1 1.11.1

在 OS X 上安装 hwloc

最简单的方法是从网站上下载、构建和安装源代码。

  1. 下载 文件。
  2. tar -xvzpfhwloc-1.11.5.tar.gz
  3. cdhwloc-1.11.5
  4. ./configure && make && sudomake install

您可以通过尝试 lstopo 命令来检查它是否工作。以下是 Mid 2012 MacBook Pro(16GB RAM)的示例输出

~ $ lstopo
Machine (16GB total) + NUMANode L#0 (P#0 16GB) + L3 L#0 (6144KB)
  L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
    PU L#0 (P#0)
    PU L#1 (P#1)
  L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1
    PU L#2 (P#2)
    PU L#3 (P#3)
  L2 L#2 (256KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2
    PU L#4 (P#4)
    PU L#5 (P#5)
  L2 L#3 (256KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3
    PU L#6 (P#6)
    PU L#7 (P#7)

在 Linux(Ubuntu 14.04)上安装 hwloc

在 Ubuntu 14.04 上,通过 apt 安装可能是最简单的。

~ $ sudo apt-get install hwloc libhwloc-dev

您还可以使用 lstopo 进行检查。以下是一个 2 核虚拟机

ubuntu-trusty-64:~$ lstopo
Machine (490MB)
  Socket L#0 + L2d L#0 (6144KB)
    L1d L#0 (32KB) + Core L#0 + PU L#0 (P#0)
    L1d L#1 (32KB) + Core L#1 + PU L#1 (P#1)
  HostBridge L#0
    PCI 80ee:beef
    PCI 8086:100e
      Net L#0 "eth0"
    PCI 8086:100e
      Net L#1 "eth1"
    PCI 8086:2829
      Block L#2 "sda"

在 Windows(Windows 10)上安装 hwloc

  1. 下载并解压 64位 二进制文件。
  2. /bin 文件夹添加到您的 PATH 环境变量。
  3. /lib 文件夹添加到您的 LIB 环境变量。

在重启您的 shell 之后,您应该能够启动 lstopo

用法

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

[dependencies]
hwloc = "0.5.0"

然后,将此内容添加到您的 crate 根目录

extern crate hwloc;

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

extern crate hwloc;

use hwloc::Topology;

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

	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/daschl/hwloc-rs.git
$ cd hwloc-rs

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

$ cargo run --example=walk_tree
   Compiling libc v0.2.3
   ...
   Compiling hwloc v0.2.0 (file:///vagrant/hwloc-rs)
     Running `target/debug/examples/walk_tree`
*** Printing overall tree
Machine (490MB): #0
 Socket (): #0
  L2d (6144KB): #4294967295
   L1d (32KB): #4294967295
    Core (): #0
     PU (): #0
   L1d (32KB): #4294967295
    Core (): #1
     PU (): #1

许可证

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

依赖项

~330–620KB