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 #局部性
846 每月下载次数
用于 14 个 crate (6 个直接使用)
85KB
1.5K SLoC
hwloc-rs
本项目是 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
最简单的方法是从网站上下载、构建和安装源代码。
- 下载 文件。
tar -xvzpfhwloc-1.11.5.tar.gz
cdhwloc-1.11.5
./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
- 下载并解压 64位 二进制文件。
- 将
/bin
文件夹添加到您的PATH
环境变量。 - 将
/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