3 releases
new 0.1.2 | Nov 19, 2024 |
---|---|
0.1.1 | Nov 14, 2024 |
0.1.0 | Nov 13, 2024 |
#524 in Hardware support
227 downloads per month
1MB
795 lines
Contains (WOFF font, 400KB) NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2, (WOFF font, 135KB) FiraSans-Medium-8f9a781e4970d388.woff2, (WOFF font, 130KB) FiraSans-Regular-018c141bf0843ffd.woff2, (WOFF font, 82KB) SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2, (WOFF font, 77KB) SourceSerif4-Regular-46f98efaafac5295.ttf.woff2, (WOFF font, 45KB) SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2 and 3 more.
Furiosa System Management Interface Python Binding
Overview
Furiosa System Management Interface, is a programmatic interface for managing and monitoring FuriosaAI NPUs.
The interface provides the following API modules, each designed to offer distinct functionalities for managing and monitoring NPU devices. These modules enable developers to access essential hardware information, topology details, system-wide information, and performance metrics.
The goal of the furiosa-smi-rs
crate is to provide wrappers around the C furiosa-smi API.
Device Module
Provides NPU device discovery and information.
- Features:
- Device Specifications
- Liveness
- Error Status
Topology Module
Provides the device topology status within the system.
- Features:
- Device-to-Device Link Type
System Module
Provides system-wide information about NPU devices.
- Features:
- Driver Information
Performance Module
Provides NPU device performance status and metrics.
- Features:
- Power Consumption
- Temperature
- Core Utilization
- Memory Utilization
- Performance Counter
Installation
Run the following Cargo command in your project directory:
cargo add furiosa-smi-rs
Or add the following line to your Cargo.toml:
furiosa-smi-rs = "0.1.0"
Usage example
To get started with Furiosa-smi-rs, simply import the test_smi_rs
crate and utilize its functions to interact with NPU devices. The package provides various methods to access the NPU device information and status.
use test_smi_rs::{Device, SmiResult};
fn main() -> SmiResult<()> {
// Retrieve a list of NPU devices in the system.
let devices: Vec<Device> = test_smi_rs::list_devices()?;
for device in devices.iter() {
// Acquire information about the NPU device.
let device_info = device.device_info()?;
println!("Device Info");
println!("\t\tDevice Arch: {:?}", device_info.arch());
println!("\t\tDevice Cores: {:?}", device_info.core_num());
}
// You can use other APIs. Please refer to the documentation.
Ok(())
}
The expected output is as below.
Device Info
Device Arch: Rngd
Device Cores: 8
...
Dependencies
~4–15MB
~163K SLoC