nvml_wrapper/enum_wrappers/
nv_link.rs

1use crate::error::NvmlError;
2use crate::ffi::bindings::*;
3#[cfg(feature = "serde")]
4use serde_derive::{Deserialize, Serialize};
5use wrapcenum_derive::EnumWrapper;
6
7/// Represents the NvLink utilization counter packet units.
8// Checked against local
9#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
10#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
11#[wrap(c_enum = "nvmlNvLinkUtilizationCountUnits_enum")]
12pub enum UtilizationCountUnit {
13    #[wrap(c_variant = "NVML_NVLINK_COUNTER_UNIT_CYCLES")]
14    Cycles,
15    #[wrap(c_variant = "NVML_NVLINK_COUNTER_UNIT_PACKETS")]
16    Packets,
17    #[wrap(c_variant = "NVML_NVLINK_COUNTER_UNIT_BYTES")]
18    Bytes,
19}
20
21/// Represents queryable NvLink capabilities.
22// Checked against local
23#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
24#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
25#[wrap(c_enum = "nvmlNvLinkCapability_enum")]
26pub enum Capability {
27    /// P2P over NVLink is supported.
28    #[wrap(c_variant = "NVML_NVLINK_CAP_P2P_SUPPORTED")]
29    P2p,
30    /// Access to system memory is supported.
31    #[wrap(c_variant = "NVML_NVLINK_CAP_SYSMEM_ACCESS")]
32    SysMemAccess,
33    /// P2P atomics are supported.
34    #[wrap(c_variant = "NVML_NVLINK_CAP_P2P_ATOMICS")]
35    P2pAtomics,
36    /// System memory atomics are supported.
37    #[wrap(c_variant = "NVML_NVLINK_CAP_SYSMEM_ATOMICS")]
38    SysMemAtomics,
39    /// SLI is supported over this link.
40    #[wrap(c_variant = "NVML_NVLINK_CAP_SLI_BRIDGE")]
41    SliBridge,
42    /// Link is supported on this device.
43    #[wrap(c_variant = "NVML_NVLINK_CAP_VALID")]
44    ValidLink,
45}
46
47/// Represents queryable NvLink error counters.
48// Checked against local
49#[derive(EnumWrapper, Debug, Clone, Copy, Eq, PartialEq, Hash)]
50#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
51#[wrap(c_enum = "nvmlNvLinkErrorCounter_enum")]
52pub enum ErrorCounter {
53    /// Data link transmit replay error counter.
54    #[wrap(c_variant = "NVML_NVLINK_ERROR_DL_REPLAY")]
55    DlReplay,
56    /// Data link transmit recovery error counter.
57    #[wrap(c_variant = "NVML_NVLINK_ERROR_DL_RECOVERY")]
58    DlRecovery,
59    /// Data link receive flow control digit CRC error counter.
60    #[wrap(c_variant = "NVML_NVLINK_ERROR_DL_CRC_FLIT")]
61    DlCrcFlit,
62    /// Data link receive data CRC error counter.
63    #[wrap(c_variant = "NVML_NVLINK_ERROR_DL_CRC_DATA")]
64    DlCrcData,
65}