Furiosa-smi
Loading...
Searching...
No Matches
Furiosa System Management Interface Library

Overview

Furiosa System Management Interface Library, is a C-based programmatic interface for managing and monitoring FuriosaAI NPUs.

The library 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.

Each module provides the following features:

  • Initialize module handles initialization of the Furiosa SMI library.
  • Device module provides NPU device discovery and information including device specification and liveness.
  • Topology module provides the topology status within a system including device-to-device link type and p2p accessibility.
  • System module provides system-wide information of each NPU device, including firmware version and driver version.
  • Performance module provides the device performance metrics including power consumption, temperature, and utilization.

Example

The following example demonstrates how to use the Furiosa System Management Interface Library to access and monitor NPU device information.

Start by including the necessary header file.

You must initialize the library.

FuriosaSmiReturnCode
Represent a return status.
Definition furiosa_smi.h:64
FuriosaSmiReturnCode furiosa_smi_init(void)
Initialize Furiosa SMI library.

To manage or monitor NPU devices, you need to retrieve the device handles.

int handle = handles.device_handles[0];
FuriosaSmiReturnCode furiosa_smi_get_device_handles(FuriosaSmiDeviceHandles *out_handles)
Get all device handles of Furiosa NPU devices in the system.
Represent a device handle list in the system.
Definition furiosa_smi.h:106
FuriosaSmiDeviceHandle device_handles[FURIOSA_SMI_MAX_DEVICE_HANDLE_SIZE]
Definition furiosa_smi.h:108

With device handles, you can access the device information.

ret = furiosa_smi_get_device_info(handle, &device_info);
FuriosaSmiReturnCode furiosa_smi_get_device_info(FuriosaSmiDeviceHandle handle, FuriosaSmiDeviceInfo *out_device_info)
Get a device information of Furiosa NPU device.
Represent a device information.
Definition furiosa_smi.h:120

You can also monitor the device status.

ret = furiosa_smi_get_device_core_status(handle, &core_status);
bool liveness;
ret = furiosa_smi_get_device_liveness(handle, &liveness);
ret = furiosa_smi_get_device_temperature(handle, &temperature);
ret = furiosa_smi_get_device_power_consumption(handle, &power_consumption)
FuriosaSmiReturnCode furiosa_smi_get_device_liveness(FuriosaSmiDeviceHandle handle, bool *out_liveness)
Get a liveness of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_device_core_status(FuriosaSmiDeviceHandle handle, FuriosaSmiCoreStatuses *out_core_status)
Get a core status list of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_device_temperature(FuriosaSmiDeviceHandle handle, FuriosaSmiDeviceTemperature *out_temperature)
Get a power consumption of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_device_power_consumption(FuriosaSmiDeviceHandle handle, FuriosaSmiDevicePowerConsumption *out_power_consumption)
Get a power consumption of Furiosa NPU device.
Represent a core status list of device.
Definition furiosa_smi.h:153
Represent a power consumption of device.
Definition furiosa_smi.h:189
Represent a temperature information of device.
Definition furiosa_smi.h:194