Furiosa-smi
Loading...
Searching...
No Matches
furiosa_smi.h
Go to the documentation of this file.
1#ifndef __furiosa_smi_h__
2#define __furiosa_smi_h__
3
4#include <stdarg.h>
5#include <stdbool.h>
6#include <stdint.h>
7#include <stdlib.h>
8
9#define FURIOSA_SMI_MAX_PATH_SIZE 256
10
11#define FURIOSA_SMI_MAX_DEVICE_FILE_SIZE 64
12
13#define FURIOSA_SMI_MAX_CORE_STATUS_SIZE 128
14
15#define FURIOSA_SMI_MAX_PE_SIZE 64
16
17#define FURIOSA_SMI_MAX_DEVICE_HANDLE_SIZE 64
18
19#define FURIOSA_SMI_MAX_CSTR_SIZE 96
20
32
40
54
62
102
103typedef uint32_t FuriosaSmiDeviceHandle;
104
110
112typedef struct {
113 uint32_t major;
114 uint32_t minor;
115 uint32_t patch;
118
133
135typedef struct {
136 uint32_t core_start;
137 uint32_t core_end;
140
146
151
157
158typedef struct {
159 uint32_t core;
160 uint32_t frequency;
162
168
170typedef struct {
171 uint32_t frequency;
173
175typedef struct {
177 uint32_t core;
178 uint64_t cycle_count;
181
187
189typedef struct {
190 double rms_total;
192
194typedef struct {
195 double soc_peak;
196 double ambient;
198
200
205
207typedef struct {
208 uint16_t device_id;
211 uint8_t revision_id;
212 uint8_t class_id;
215
224
226typedef struct {
230
232typedef struct {
233 uint16_t domain;
234 uint8_t bus;
236
238typedef struct {
239 uint16_t domain;
240 uint8_t bus;
241 uint8_t device;
242 uint8_t function;
244
248
253
255
259
264
271 FuriosaSmiDeviceHandle *out_handle);
272
279 FuriosaSmiDeviceHandle *out_handle);
280
287 FuriosaSmiDeviceHandle *out_handle);
288
295 FuriosaSmiDeviceInfo *out_device_info);
296
303 FuriosaSmiDeviceFiles *out_device_files);
304
311 FuriosaSmiCoreStatuses *out_core_status);
312
319 bool *out_liveness);
320
322
326
335 FuriosaSmiDeviceToDeviceLinkType *out_link_type);
336
345 bool *out_accessible);
346
348
352
359
366 FuriosaSmiCoreFrequency *out_core_frequency_info);
367
374 FuriosaSmiMemoryFrequency *out_memory_frequency_info);
375
383 FuriosaSmiDevicePerformanceCounter *out_performance_counter_info);
384
391 FuriosaSmiDevicePowerConsumption *out_power_consumption);
392
399 FuriosaSmiDeviceTemperature *out_temperature);
400
407 FuriosaSmiGovernorProfile *out_governor_profile);
408
415 FuriosaSmiGovernorProfile governor_profile);
416
422
428
434
441 FuriosaSmiPcieDeviceInfo *out_pcie_device_info);
442
449 FuriosaSmiPcieLinkInfo *out_pcie_link_info);
450
457 FuriosaSmiSriovInfo *out_sriov_info);
458
465 FuriosaSmiPcieRootComplexInfo *out_root_complex_info);
466
473 FuriosaSmiPcieSwitchInfo *out_pcie_switch_info);
474
476
477
478
479#endif /* __furiosa_smi_h__ */
#define FURIOSA_SMI_MAX_DEVICE_HANDLE_SIZE
Definition furiosa_smi.h:17
char FuriosaSmiBdf[FURIOSA_SMI_MAX_CSTR_SIZE]
Definition furiosa_smi.h:199
FuriosaSmiArch
Represent an architecture type of device.
Definition furiosa_smi.h:22
@ FURIOSA_SMI_ARCH_RNGD_S
RNGD-S architecture.
Definition furiosa_smi.h:30
@ FURIOSA_SMI_ARCH_WARBOY
Warboy architecture.
Definition furiosa_smi.h:24
@ FURIOSA_SMI_ARCH_RNGD
RNGD architecture.
Definition furiosa_smi.h:26
@ FURIOSA_SMI_ARCH_RNGD_MAX
RNGD-Max architecture.
Definition furiosa_smi.h:28
#define FURIOSA_SMI_MAX_PE_SIZE
Definition furiosa_smi.h:15
FuriosaSmiGovernorProfile
Represent a governor profile.
Definition furiosa_smi.h:56
@ FURIOSA_SMI_GOVERNOR_PROFILE_PERFORMANCE
'performance' governor profile
Definition furiosa_smi.h:58
@ FURIOSA_SMI_GOVERNOR_PROFILE_POWER_SAVE
'powersave' governor profile
Definition furiosa_smi.h:60
FuriosaSmiReturnCode
Represent a return status.
Definition furiosa_smi.h:64
@ FURIOSA_SMI_RETURN_CODE_DEVICE_LOST_ERROR
When a device is lost.
Definition furiosa_smi.h:76
@ FURIOSA_SMI_RETURN_CODE_UNKNOWN_ERROR
When a reason is unknown.
Definition furiosa_smi.h:92
@ FURIOSA_SMI_RETURN_CODE_NOT_SUPPORTED_ERROR
When a certain operation is not supported.
Definition furiosa_smi.h:100
@ FURIOSA_SMI_RETURN_CODE_INCOMPATIBLE_DRIVER_ERROR
When a driver is incompatible.
Definition furiosa_smi.h:86
@ FURIOSA_SMI_RETURN_CODE_UNKNOWN_ARCH_ERROR
When an arch is unknown.
Definition furiosa_smi.h:84
@ FURIOSA_SMI_RETURN_CODE_UNINITIALIZED_ERROR
When the system is not initialized.
Definition furiosa_smi.h:96
@ FURIOSA_SMI_RETURN_CODE_INVALID_ARGUMENT_ERROR
When an invalid argument is given.
Definition furiosa_smi.h:68
@ FURIOSA_SMI_RETURN_CODE_PERMISSION_DENIED_ERROR
When a certain operation is failed by a permission deny.
Definition furiosa_smi.h:82
@ FURIOSA_SMI_RETURN_CODE_PARSE_ERROR
When a certain parsing operation is failed.
Definition furiosa_smi.h:90
@ FURIOSA_SMI_RETURN_CODE_DEVICE_NOT_FOUND_ERROR
When a device is not found with the given option.
Definition furiosa_smi.h:74
@ FURIOSA_SMI_RETURN_CODE_OK
When a function call is successful.
Definition furiosa_smi.h:66
@ FURIOSA_SMI_RETURN_CODE_UNEXPECTED_VALUE_ERROR
When a retrieved value is invalid.
Definition furiosa_smi.h:88
@ FURIOSA_SMI_RETURN_CODE_MAX_BUFFER_SIZE_EXCEED_ERROR
When a data exceeds the maximum buffer size.
Definition furiosa_smi.h:72
@ FURIOSA_SMI_RETURN_CODE_DEVICE_BUSY_ERROR
When a device state is busy.
Definition furiosa_smi.h:78
@ FURIOSA_SMI_RETURN_CODE_IO_ERROR
When a certain operation is failed by an unexpected io error.
Definition furiosa_smi.h:80
@ FURIOSA_SMI_RETURN_CODE_CONTEXT_ERROR
When a context cannot be captured.
Definition furiosa_smi.h:98
@ FURIOSA_SMI_RETURN_CODE_NULL_POINTER_ERROR
When a null pointer is given to output buffer.
Definition furiosa_smi.h:70
@ FURIOSA_SMI_RETURN_CODE_INTERNAL_ERROR
When an internal operation is failed.
Definition furiosa_smi.h:94
#define FURIOSA_SMI_MAX_PATH_SIZE
Definition furiosa_smi.h:9
uint32_t FuriosaSmiDeviceHandle
Definition furiosa_smi.h:103
#define FURIOSA_SMI_MAX_CORE_STATUS_SIZE
Definition furiosa_smi.h:13
#define FURIOSA_SMI_MAX_CSTR_SIZE
Definition furiosa_smi.h:19
FuriosaSmiCoreStatus
Represent a core status.
Definition furiosa_smi.h:34
@ FURIOSA_SMI_CORE_STATUS_AVAILABLE
Device is available.
Definition furiosa_smi.h:36
@ FURIOSA_SMI_CORE_STATUS_OCCUPIED
Device is occupied.
Definition furiosa_smi.h:38
FuriosaSmiDeviceToDeviceLinkType
Represent a device link type.
Definition furiosa_smi.h:42
@ FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_CPU
Link type under same cpu.
Definition furiosa_smi.h:48
@ FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_NOC
Link type under same socket.
Definition furiosa_smi.h:52
@ FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_BRIDGE
Link type under same switch.
Definition furiosa_smi.h:50
@ FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_INTERCONNECT
Link type under same machine.
Definition furiosa_smi.h:46
@ FURIOSA_SMI_DEVICE_TO_DEVICE_LINK_TYPE_UNKNOWN
Unknown link type.
Definition furiosa_smi.h:44
FuriosaSmiReturnCode furiosa_smi_get_device_liveness(FuriosaSmiDeviceHandle handle, bool *out_liveness)
Get a liveness of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_device_handle_by_serial(const char *serial, FuriosaSmiDeviceHandle *out_handle)
Get a device handle of Furiosa NPU device by serial.
FuriosaSmiReturnCode furiosa_smi_get_device_files(FuriosaSmiDeviceHandle handle, FuriosaSmiDeviceFiles *out_device_files)
Get a device file list of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_device_handle_by_uuid(const char *uuid, FuriosaSmiDeviceHandle *out_handle)
Get a device handle of Furiosa NPU device by uuid.
FuriosaSmiReturnCode furiosa_smi_get_device_handles(FuriosaSmiDeviceHandles *out_handles)
Get all device handles of Furiosa NPU devices in the system.
FuriosaSmiReturnCode furiosa_smi_get_device_info(FuriosaSmiDeviceHandle handle, FuriosaSmiDeviceInfo *out_device_info)
Get a device information of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_device_handle_by_bdf(const char *bdf, FuriosaSmiDeviceHandle *out_handle)
Get a device handle of Furiosa NPU device by bdf.
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_init(void)
Initialize Furiosa SMI library.
FuriosaSmiReturnCode furiosa_smi_get_pcie_link_info(FuriosaSmiDeviceHandle handle, FuriosaSmiPcieLinkInfo *out_pcie_link_info)
Get a PCIe link information of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_core_frequency(FuriosaSmiDeviceHandle handle, FuriosaSmiCoreFrequency *out_core_frequency_info)
Get a core frequency of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_set_governor_profile(FuriosaSmiDeviceHandle handle, FuriosaSmiGovernorProfile governor_profile)
Set a governor state into Furiosa NPU device. This requires root privileges.
FuriosaSmiReturnCode furiosa_smi_get_driver_info(FuriosaSmiVersion *out_driver_info)
Get a driver information of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_device_performance_counter(FuriosaSmiDeviceHandle handle, FuriosaSmiDevicePerformanceCounter *out_performance_counter_info)
Get a performance counter of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_disabled_devices(FuriosaSmiDisabledDevices *out_disabled_devices)
Get a list of disabled Furiosa NPU devices.
FuriosaSmiReturnCode furiosa_smi_get_memory_frequency(FuriosaSmiDeviceHandle handle, FuriosaSmiMemoryFrequency *out_memory_frequency_info)
Get a memory frequency 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_pcie_switch_info(FuriosaSmiDeviceHandle handle, FuriosaSmiPcieSwitchInfo *out_pcie_switch_info)
Get a PCIe switch information of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_pcie_device_info(FuriosaSmiDeviceHandle handle, FuriosaSmiPcieDeviceInfo *out_pcie_device_info)
Get a PCIe information of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_disable_device(FuriosaSmiDeviceHandle handle)
Unbind a Furiosa NPU device. This requires root privileges.
FuriosaSmiReturnCode furiosa_smi_enable_device(FuriosaSmiDeviceHandle handle)
Bind a Furiosa NPU device. This requires root privileges.
FuriosaSmiReturnCode furiosa_smi_get_governor_profile(FuriosaSmiDeviceHandle handle, FuriosaSmiGovernorProfile *out_governor_profile)
Get a governor state of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_sriov_info(FuriosaSmiDeviceHandle handle, FuriosaSmiSriovInfo *out_sriov_info)
Get a SR-IOV information 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.
FuriosaSmiReturnCode furiosa_smi_get_pcie_root_complex_info(FuriosaSmiDeviceHandle handle, FuriosaSmiPcieRootComplexInfo *out_root_complex_info)
Get a PCIe root complex information of Furiosa NPU device.
FuriosaSmiReturnCode furiosa_smi_get_p2p_accessible(FuriosaSmiDeviceHandle handle1, FuriosaSmiDeviceHandle handle2, bool *out_accessible)
Checks if two Furiosa NPU devices are P2P accessible.
FuriosaSmiReturnCode furiosa_smi_get_device_to_device_link_type(FuriosaSmiDeviceHandle handle1, FuriosaSmiDeviceHandle handle2, FuriosaSmiDeviceToDeviceLinkType *out_link_type)
Get a device link type between two Furiosa NPU devices.
Represent a core frequency information (MHz).
Definition furiosa_smi.h:164
uint32_t pe_count
Definition furiosa_smi.h:165
Represent a core status list of device.
Definition furiosa_smi.h:153
uint32_t count
Definition furiosa_smi.h:154
Represent a device file information.
Definition furiosa_smi.h:135
uint32_t core_start
Definition furiosa_smi.h:136
uint32_t core_end
Definition furiosa_smi.h:137
Represent a device file list of device.
Definition furiosa_smi.h:142
uint32_t count
Definition furiosa_smi.h:143
Represent a device handle list in the system.
Definition furiosa_smi.h:106
uint32_t count
Definition furiosa_smi.h:107
Represent a device information.
Definition furiosa_smi.h:120
uint16_t minor
Definition furiosa_smi.h:130
FuriosaSmiVersion firmware_version
Definition furiosa_smi.h:131
uint32_t numa_node
Definition furiosa_smi.h:124
uint16_t major
Definition furiosa_smi.h:129
FuriosaSmiArch arch
Definition furiosa_smi.h:122
uint32_t core_num
Definition furiosa_smi.h:123
uint32_t index
Definition furiosa_smi.h:121
Represent a device performance counter.
Definition furiosa_smi.h:183
uint32_t pe_count
Definition furiosa_smi.h:184
Represent a power consumption of device.
Definition furiosa_smi.h:189
double rms_total
Definition furiosa_smi.h:190
Represent a temperature information of device.
Definition furiosa_smi.h:194
double ambient
Definition furiosa_smi.h:196
double soc_peak
Definition furiosa_smi.h:195
Definition furiosa_smi.h:201
uint32_t count
Definition furiosa_smi.h:202
Represent a memory frequency information (MHz).
Definition furiosa_smi.h:170
uint32_t frequency
Definition furiosa_smi.h:171
Represent a PCIe device information.
Definition furiosa_smi.h:207
uint16_t device_id
Definition furiosa_smi.h:208
uint8_t sub_class_id
Definition furiosa_smi.h:213
uint8_t class_id
Definition furiosa_smi.h:212
uint16_t subsystem_vendor_id
Definition furiosa_smi.h:209
uint16_t subsystem_device_id
Definition furiosa_smi.h:210
uint8_t revision_id
Definition furiosa_smi.h:211
Represent a PCIe link information.
Definition furiosa_smi.h:217
double max_link_speed_capability
Definition furiosa_smi.h:222
uint32_t link_width_status
Definition furiosa_smi.h:219
uint8_t pcie_gen_status
Definition furiosa_smi.h:218
double link_speed_status
Definition furiosa_smi.h:220
uint32_t max_link_width_capability
Definition furiosa_smi.h:221
Represent a PCIe root complex information.
Definition furiosa_smi.h:232
uint16_t domain
Definition furiosa_smi.h:233
uint8_t bus
Definition furiosa_smi.h:234
Represent a PCIe switch information. If switch doesn't exist, all values are max value.
Definition furiosa_smi.h:238
uint8_t function
Definition furiosa_smi.h:242
uint8_t device
Definition furiosa_smi.h:241
uint16_t domain
Definition furiosa_smi.h:239
uint8_t bus
Definition furiosa_smi.h:240
Definition furiosa_smi.h:158
uint32_t frequency
Definition furiosa_smi.h:160
uint32_t core
Definition furiosa_smi.h:159
Represent a PE performance counter.
Definition furiosa_smi.h:175
uint32_t core
Definition furiosa_smi.h:177
uint64_t cycle_count
Definition furiosa_smi.h:178
long timestamp
Definition furiosa_smi.h:176
uint64_t task_execution_cycle
Definition furiosa_smi.h:179
Definition furiosa_smi.h:147
FuriosaSmiCoreStatus status
Definition furiosa_smi.h:149
uint32_t core
Definition furiosa_smi.h:148
Represent a SR-IOV information.
Definition furiosa_smi.h:226
uint32_t sriov_total_vfs
Definition furiosa_smi.h:227
uint32_t sriov_enabled_vfs
Definition furiosa_smi.h:228
Represent the version of device component.
Definition furiosa_smi.h:112
uint32_t patch
Definition furiosa_smi.h:115
uint32_t minor
Definition furiosa_smi.h:114
uint32_t major
Definition furiosa_smi.h:113