""" Copyright (C) 2019-2021 Intel Corporation SPDX-License-Identifier: MIT @file zes.py @version v1.12-r1.12.15 """ import platform from ctypes import * from enum import * ############################################################################### __version__ = "1.0" ############################################################################### ## @brief Handle to a driver instance class zes_driver_handle_t(c_void_p): pass ############################################################################### ## @brief Handle of device object class zes_device_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device scheduler queue class zes_sched_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device performance factors class zes_perf_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device power domain class zes_pwr_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device frequency domain class zes_freq_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device engine group class zes_engine_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device standby control class zes_standby_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device firmware class zes_firmware_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device memory module class zes_mem_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman fabric port class zes_fabric_port_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device temperature sensor class zes_temp_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device power supply class zes_psu_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device fan class zes_fan_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device LED class zes_led_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device RAS error set class zes_ras_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device diagnostics test suite class zes_diag_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman device overclock domain class zes_overclock_handle_t(c_void_p): pass ############################################################################### ## @brief Handle for a Sysman virtual function management domain class zes_vf_handle_t(c_void_p): pass ############################################################################### ## @brief Defines structure types class zes_structure_type_v(IntEnum): DEVICE_PROPERTIES = 0x1 ## ::zes_device_properties_t PCI_PROPERTIES = 0x2 ## ::zes_pci_properties_t PCI_BAR_PROPERTIES = 0x3 ## ::zes_pci_bar_properties_t DIAG_PROPERTIES = 0x4 ## ::zes_diag_properties_t ENGINE_PROPERTIES = 0x5 ## ::zes_engine_properties_t FABRIC_PORT_PROPERTIES = 0x6 ## ::zes_fabric_port_properties_t FAN_PROPERTIES = 0x7 ## ::zes_fan_properties_t FIRMWARE_PROPERTIES = 0x8 ## ::zes_firmware_properties_t FREQ_PROPERTIES = 0x9 ## ::zes_freq_properties_t LED_PROPERTIES = 0xa ## ::zes_led_properties_t MEM_PROPERTIES = 0xb ## ::zes_mem_properties_t PERF_PROPERTIES = 0xc ## ::zes_perf_properties_t POWER_PROPERTIES = 0xd ## ::zes_power_properties_t PSU_PROPERTIES = 0xe ## ::zes_psu_properties_t RAS_PROPERTIES = 0xf ## ::zes_ras_properties_t SCHED_PROPERTIES = 0x10 ## ::zes_sched_properties_t SCHED_TIMEOUT_PROPERTIES = 0x11 ## ::zes_sched_timeout_properties_t SCHED_TIMESLICE_PROPERTIES = 0x12 ## ::zes_sched_timeslice_properties_t STANDBY_PROPERTIES = 0x13 ## ::zes_standby_properties_t TEMP_PROPERTIES = 0x14 ## ::zes_temp_properties_t DEVICE_STATE = 0x15 ## ::zes_device_state_t PROCESS_STATE = 0x16 ## ::zes_process_state_t PCI_STATE = 0x17 ## ::zes_pci_state_t FABRIC_PORT_CONFIG = 0x18 ## ::zes_fabric_port_config_t FABRIC_PORT_STATE = 0x19 ## ::zes_fabric_port_state_t FAN_CONFIG = 0x1a ## ::zes_fan_config_t FREQ_STATE = 0x1b ## ::zes_freq_state_t OC_CAPABILITIES = 0x1c ## ::zes_oc_capabilities_t LED_STATE = 0x1d ## ::zes_led_state_t MEM_STATE = 0x1e ## ::zes_mem_state_t PSU_STATE = 0x1f ## ::zes_psu_state_t BASE_STATE = 0x20 ## ::zes_base_state_t RAS_CONFIG = 0x21 ## ::zes_ras_config_t RAS_STATE = 0x22 ## ::zes_ras_state_t TEMP_CONFIG = 0x23 ## ::zes_temp_config_t PCI_BAR_PROPERTIES_1_2 = 0x24 ## ::zes_pci_bar_properties_1_2_t DEVICE_ECC_DESC = 0x25 ## ::zes_device_ecc_desc_t DEVICE_ECC_PROPERTIES = 0x26 ## ::zes_device_ecc_properties_t POWER_LIMIT_EXT_DESC = 0x27 ## ::zes_power_limit_ext_desc_t POWER_EXT_PROPERTIES = 0x28 ## ::zes_power_ext_properties_t OVERCLOCK_PROPERTIES = 0x29 ## ::zes_overclock_properties_t FABRIC_PORT_ERROR_COUNTERS = 0x2a ## ::zes_fabric_port_error_counters_t ENGINE_EXT_PROPERTIES = 0x2b ## ::zes_engine_ext_properties_t RESET_PROPERTIES = 0x2c ## ::zes_reset_properties_t DEVICE_EXT_PROPERTIES = 0x2d ## ::zes_device_ext_properties_t DEVICE_UUID = 0x2e ## ::zes_uuid_t POWER_DOMAIN_EXP_PROPERTIES = 0x00020001 ## ::zes_power_domain_exp_properties_t MEM_BANDWIDTH_COUNTER_BITS_EXP_PROPERTIES = 0x00020002 ## ::zes_mem_bandwidth_counter_bits_exp_properties_t MEMORY_PAGE_OFFLINE_STATE_EXP = 0x00020003 ## ::zes_mem_page_offline_state_exp_t SUBDEVICE_EXP_PROPERTIES = 0x00020004 ## ::zes_subdevice_exp_properties_t VF_EXP_PROPERTIES = 0x00020005 ## ::zes_vf_exp_properties_t VF_UTIL_MEM_EXP = 0x00020006 ## ::zes_vf_util_mem_exp_t VF_UTIL_ENGINE_EXP = 0x00020007 ## ::zes_vf_util_engine_exp_t VF_EXP_CAPABILITIES = 0x00020008 ## ::zes_vf_exp_capabilities_t VF_UTIL_MEM_EXP2 = 0x00020009 ## ::zes_vf_util_mem_exp2_t VF_UTIL_ENGINE_EXP2 = 0x00020010 ## ::zes_vf_util_engine_exp2_t VF_EXP2_CAPABILITIES = 0x00020011 ## ::zes_vf_exp2_capabilities_t class zes_structure_type_t(c_int): def __str__(self): return str(zes_structure_type_v(self.value)) ############################################################################### ## @brief Base for all properties types class zes_base_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p) ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ] ############################################################################### ## @brief Base for all descriptor types class zes_base_desc_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p) ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ] ############################################################################### ## @brief Base for all state types class zes_base_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p) ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ] ############################################################################### ## @brief Base for all config types class zes_base_config_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p) ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ] ############################################################################### ## @brief Base for all capability types class zes_base_capability_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p) ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ] ############################################################################### ## @brief Supported sysman initialization flags class zes_init_flags_v(IntEnum): PLACEHOLDER = ZE_BIT(0) ## placeholder for future use class zes_init_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Maximum extension name string size ZES_MAX_EXTENSION_NAME = 256 ############################################################################### ## @brief Extension properties queried using ::zesDriverGetExtensionProperties class zes_driver_extension_properties_t(Structure): _fields_ = [ ("name", c_char * ZES_MAX_EXTENSION_NAME), ## [out] extension name ("version", c_ulong) ## [out] extension version using ::ZE_MAKE_VERSION ] ############################################################################### ## @brief Maximum number of characters in string properties. ZES_STRING_PROPERTY_SIZE = 64 ############################################################################### ## @brief Maximum device universal unique id (UUID) size in bytes. ZES_MAX_UUID_SIZE = 16 ############################################################################### ## @brief Types of accelerator engines class zes_engine_type_flags_v(IntEnum): OTHER = ZE_BIT(0) ## Undefined types of accelerators. COMPUTE = ZE_BIT(1) ## Engines that process compute kernels only (no 3D content). _3D = ZE_BIT(2) ## Engines that process 3D content only (no compute kernels). MEDIA = ZE_BIT(3) ## Engines that process media workloads. DMA = ZE_BIT(4) ## Engines that copy blocks of data. RENDER = ZE_BIT(5) ## Engines that can process both 3D content and compute kernels. class zes_engine_type_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Device repair status class zes_repair_status_v(IntEnum): UNSUPPORTED = 0 ## The device does not support in-field repairs. NOT_PERFORMED = 1 ## The device has never been repaired. PERFORMED = 2 ## The device has been repaired. class zes_repair_status_t(c_int): def __str__(self): return str(zes_repair_status_v(self.value)) ############################################################################### ## @brief Device reset reasons class zes_reset_reason_flags_v(IntEnum): WEDGED = ZE_BIT(0) ## The device needs to be reset because one or more parts of the hardware ## is wedged REPAIR = ZE_BIT(1) ## The device needs to be reset in order to complete in-field repairs class zes_reset_reason_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Device reset type class zes_reset_type_v(IntEnum): WARM = 0 ## Apply warm reset COLD = 1 ## Apply cold reset FLR = 2 ## Apply FLR reset class zes_reset_type_t(c_int): def __str__(self): return str(zes_reset_type_v(self.value)) ############################################################################### ## @brief Device state class zes_device_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("reset", zes_reset_reason_flags_t), ## [out] Indicates if the device needs to be reset and for what reasons. ## returns 0 (none) or combination of ::zes_reset_reason_flag_t ("repaired", zes_repair_status_t) ## [out] Indicates if the device has been repaired ] ############################################################################### ## @brief Device reset properties class zes_reset_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("force", ze_bool_t), ## [in] If set to true, all applications that are currently using the ## device will be forcibly killed. ("resetType", zes_reset_type_t) ## [in] Type of reset needs to be performed ] ############################################################################### ## @brief Device universal unique id (UUID) class zes_uuid_t(Structure): _fields_ = [ ("id", c_ubyte * ZES_MAX_UUID_SIZE) ## [out] opaque data representing a device UUID ] ############################################################################### ## @brief Supported device types class zes_device_type_v(IntEnum): GPU = 1 ## Graphics Processing Unit CPU = 2 ## Central Processing Unit FPGA = 3 ## Field Programmable Gate Array MCA = 4 ## Memory Copy Accelerator VPU = 5 ## Vision Processing Unit class zes_device_type_t(c_int): def __str__(self): return str(zes_device_type_v(self.value)) ############################################################################### ## @brief Supported device property flags class zes_device_property_flags_v(IntEnum): INTEGRATED = ZE_BIT(0) ## Device is integrated with the Host. SUBDEVICE = ZE_BIT(1) ## Device handle used for query represents a sub-device. ECC = ZE_BIT(2) ## Device supports error correction memory access. ONDEMANDPAGING = ZE_BIT(3) ## Device supports on-demand page-faulting. class zes_device_property_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Device properties class zes_device_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("core", ze_device_properties_t), ## [out] (Deprecated, use ::zes_uuid_t in the extended structure) Core ## device properties ("numSubdevices", c_ulong), ## [out] Number of sub-devices. A value of 0 indicates that this device ## doesn't have sub-devices. ("serialNumber", c_char * ZES_STRING_PROPERTY_SIZE), ## [out] Manufacturing serial number (NULL terminated string value). This ## value is intended to reflect the Part ID/SoC ID assigned by ## manufacturer that is unique for a SoC. Will be set to the string ## "unknown" if this cannot be determined for the device. ("boardNumber", c_char * ZES_STRING_PROPERTY_SIZE), ## [out] Manufacturing board number (NULL terminated string value). ## Alternatively "boardSerialNumber", this value is intended to reflect ## the string printed on board label by manufacturer. Will be set to the ## string "unknown" if this cannot be determined for the device. ("brandName", c_char * ZES_STRING_PROPERTY_SIZE), ## [out] Brand name of the device (NULL terminated string value). Will be ## set to the string "unknown" if this cannot be determined for the ## device. ("modelName", c_char * ZES_STRING_PROPERTY_SIZE), ## [out] Model name of the device (NULL terminated string value). Will be ## set to the string "unknown" if this cannot be determined for the ## device. ("vendorName", c_char * ZES_STRING_PROPERTY_SIZE), ## [out] Vendor name of the device (NULL terminated string value). Will ## be set to the string "unknown" if this cannot be determined for the ## device. ("driverVersion", c_char * ZES_STRING_PROPERTY_SIZE) ## [out] Installed driver version (NULL terminated string value). Will be ## set to the string "unknown" if this cannot be determined for the ## device. ] ############################################################################### ## @brief Device properties class zes_device_ext_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("uuid", zes_uuid_t), ## [out] universal unique identifier. Note: uuid obtained from Sysman API ## is the same as from core API. Subdevices will have their own uuid. ("type", zes_device_type_t), ## [out] generic device type ("flags", zes_device_property_flags_t) ## [out] 0 (none) or a valid combination of ::zes_device_property_flag_t ] ############################################################################### ## @brief Contains information about a process that has an open connection with ## this device ## ## @details ## - The application can use the process ID to query the OS for the owner ## and the path to the executable. class zes_process_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("processId", c_ulong), ## [out] Host OS process ID. ("memSize", c_ulonglong), ## [out] Device memory size in bytes allocated by this process (may not ## necessarily be resident on the device at the time of reading). ("sharedSize", c_ulonglong), ## [out] The size of shared device memory mapped into this process (may ## not necessarily be resident on the device at the time of reading). ("engines", zes_engine_type_flags_t) ## [out] Bitfield of accelerator engine types being used by this process. ] ############################################################################### ## @brief PCI address class zes_pci_address_t(Structure): _fields_ = [ ("domain", c_ulong), ## [out] BDF domain ("bus", c_ulong), ## [out] BDF bus ("device", c_ulong), ## [out] BDF device ("function", c_ulong) ## [out] BDF function ] ############################################################################### ## @brief PCI speed class zes_pci_speed_t(Structure): _fields_ = [ ("gen", c_int32_t), ## [out] The link generation. A value of -1 means that this property is ## unknown. ("width", c_int32_t), ## [out] The number of lanes. A value of -1 means that this property is ## unknown. ("maxBandwidth", c_int64_t) ## [out] The maximum bandwidth in bytes/sec (sum of all lanes). A value ## of -1 means that this property is unknown. ] ############################################################################### ## @brief Static PCI properties class zes_pci_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("address", zes_pci_address_t), ## [out] The BDF address ("maxSpeed", zes_pci_speed_t), ## [out] Fastest port configuration supported by the device (sum of all ## lanes) ("haveBandwidthCounters", ze_bool_t), ## [out] Indicates whether the `rxCounter` and `txCounter` members of ## ::zes_pci_stats_t will have valid values ("havePacketCounters", ze_bool_t), ## [out] Indicates whether the `packetCounter` member of ## ::zes_pci_stats_t will have a valid value ("haveReplayCounters", ze_bool_t) ## [out] Indicates whether the `replayCounter` member of ## ::zes_pci_stats_t will have a valid value ] ############################################################################### ## @brief PCI link status class zes_pci_link_status_v(IntEnum): UNKNOWN = 0 ## The link status could not be determined GOOD = 1 ## The link is up and operating as expected QUALITY_ISSUES = 2 ## The link is up but has quality and/or bandwidth degradation STABILITY_ISSUES = 3 ## The link has stability issues and preventing workloads making forward ## progress class zes_pci_link_status_t(c_int): def __str__(self): return str(zes_pci_link_status_v(self.value)) ############################################################################### ## @brief PCI link quality degradation reasons class zes_pci_link_qual_issue_flags_v(IntEnum): REPLAYS = ZE_BIT(0) ## A significant number of replays are occurring SPEED = ZE_BIT(1) ## There is a degradation in the maximum bandwidth of the link class zes_pci_link_qual_issue_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief PCI link stability issues class zes_pci_link_stab_issue_flags_v(IntEnum): RETRAINING = ZE_BIT(0) ## Link retraining has occurred to deal with quality issues class zes_pci_link_stab_issue_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Dynamic PCI state class zes_pci_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("status", zes_pci_link_status_t), ## [out] The current status of the port ("qualityIssues", zes_pci_link_qual_issue_flags_t), ## [out] If status is ::ZES_PCI_LINK_STATUS_QUALITY_ISSUES, ## then this gives a combination of ::zes_pci_link_qual_issue_flag_t for ## quality issues that have been detected; ## otherwise, 0 indicates there are no quality issues with the link at ## this time." ("stabilityIssues", zes_pci_link_stab_issue_flags_t), ## [out] If status is ::ZES_PCI_LINK_STATUS_STABILITY_ISSUES, ## then this gives a combination of ::zes_pci_link_stab_issue_flag_t for ## reasons for the connection instability; ## otherwise, 0 indicates there are no connection stability issues at ## this time." ("speed", zes_pci_speed_t) ## [out] The current port configure speed ] ############################################################################### ## @brief PCI bar types class zes_pci_bar_type_v(IntEnum): MMIO = 0 ## MMIO registers ROM = 1 ## ROM aperture MEM = 2 ## Device memory class zes_pci_bar_type_t(c_int): def __str__(self): return str(zes_pci_bar_type_v(self.value)) ############################################################################### ## @brief Properties of a pci bar class zes_pci_bar_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("type", zes_pci_bar_type_t), ## [out] The type of bar ("index", c_ulong), ## [out] The index of the bar ("base", c_ulonglong), ## [out] Base address of the bar. ("size", c_ulonglong) ## [out] Size of the bar. ] ############################################################################### ## @brief Properties of a pci bar, including the resizable bar. class zes_pci_bar_properties_1_2_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("type", zes_pci_bar_type_t), ## [out] The type of bar ("index", c_ulong), ## [out] The index of the bar ("base", c_ulonglong), ## [out] Base address of the bar. ("size", c_ulonglong), ## [out] Size of the bar. ("resizableBarSupported", ze_bool_t), ## [out] Support for Resizable Bar on this device. ("resizableBarEnabled", ze_bool_t) ## [out] Resizable Bar enabled on this device ] ############################################################################### ## @brief PCI stats counters ## ## @details ## - Percent replays is calculated by taking two snapshots (s1, s2) and ## using the equation: %replay = 10^6 * (s2.replayCounter - ## s1.replayCounter) / (s2.maxBandwidth * (s2.timestamp - s1.timestamp)) ## - Percent throughput is calculated by taking two snapshots (s1, s2) and ## using the equation: %bw = 10^6 * ((s2.rxCounter - s1.rxCounter) + ## (s2.txCounter - s1.txCounter)) / (s2.maxBandwidth * (s2.timestamp - ## s1.timestamp)) class zes_pci_stats_t(Structure): _fields_ = [ ("timestamp", c_ulonglong), ## [out] Monotonic timestamp counter in microseconds when the measurement ## was made. ## This timestamp should only be used to calculate delta time between ## snapshots of this structure. ## Never take the delta of this timestamp with the timestamp from a ## different structure since they are not guaranteed to have the same base. ## The absolute value of the timestamp is only valid during within the ## application and may be different on the next execution. ("replayCounter", c_ulonglong), ## [out] Monotonic counter for the number of replay packets (sum of all ## lanes). Will always be 0 when the `haveReplayCounters` member of ## ::zes_pci_properties_t is FALSE. ("packetCounter", c_ulonglong), ## [out] Monotonic counter for the number of packets (sum of all lanes). ## Will always be 0 when the `havePacketCounters` member of ## ::zes_pci_properties_t is FALSE. ("rxCounter", c_ulonglong), ## [out] Monotonic counter for the number of bytes received (sum of all ## lanes). Will always be 0 when the `haveBandwidthCounters` member of ## ::zes_pci_properties_t is FALSE. ("txCounter", c_ulonglong), ## [out] Monotonic counter for the number of bytes transmitted (including ## replays) (sum of all lanes). Will always be 0 when the ## `haveBandwidthCounters` member of ::zes_pci_properties_t is FALSE. ("speed", zes_pci_speed_t) ## [out] The current speed of the link (sum of all lanes) ] ############################################################################### ## @brief Overclock domains. class zes_overclock_domain_v(IntEnum): CARD = 1 ## Overclocking card level properties such as temperature limits. PACKAGE = 2 ## Overclocking package level properties such as power limits. GPU_ALL = 4 ## Overclocking a GPU that has all accelerator assets on the same PLL/VR. GPU_RENDER_COMPUTE = 8 ## Overclocking a GPU with render and compute assets on the same PLL/VR. GPU_RENDER = 16 ## Overclocking a GPU with render assets on its own PLL/VR. GPU_COMPUTE = 32 ## Overclocking a GPU with compute assets on its own PLL/VR. GPU_MEDIA = 64 ## Overclocking a GPU with media assets on its own PLL/VR. VRAM = 128 ## Overclocking device local memory. ADM = 256 ## Overclocking LLC/L4 cache. class zes_overclock_domain_t(c_int): def __str__(self): return str(zes_overclock_domain_v(self.value)) ############################################################################### ## @brief Overclock controls. class zes_overclock_control_v(IntEnum): VF = 1 ## This control permits setting a custom V-F curve. FREQ_OFFSET = 2 ## The V-F curve of the overclock domain can be shifted up or down using ## this control. VMAX_OFFSET = 4 ## This control is used to increase the permitted voltage above the ## shipped voltage maximum. FREQ = 8 ## This control permits direct changes to the operating frequency. VOLT_LIMIT = 16 ## This control prevents frequencies that would push the voltage above ## this value, typically used by V-F scanners. POWER_SUSTAINED_LIMIT = 32 ## This control changes the sustained power limit (PL1). POWER_BURST_LIMIT = 64 ## This control changes the burst power limit (PL2). POWER_PEAK_LIMIT = 128 ## his control changes the peak power limit (PL4). ICCMAX_LIMIT = 256 ## This control changes the value of IccMax.. TEMP_LIMIT = 512 ## This control changes the value of TjMax. ITD_DISABLE = 1024 ## This control permits disabling the adaptive voltage feature ITD ACM_DISABLE = 2048 ## This control permits disabling the adaptive voltage feature ACM. class zes_overclock_control_t(c_int): def __str__(self): return str(zes_overclock_control_v(self.value)) ############################################################################### ## @brief Overclock modes. class zes_overclock_mode_v(IntEnum): MODE_OFF = 0 ## Overclock mode is off MODE_STOCK = 2 ## Stock (manufacturing settings) are being used. MODE_ON = 3 ## Overclock mode is on. MODE_UNAVAILABLE = 4 ## Overclocking is unavailable at this time since the system is running ## on battery. MODE_DISABLED = 5 ## Overclock mode is disabled. class zes_overclock_mode_t(c_int): def __str__(self): return str(zes_overclock_mode_v(self.value)) ############################################################################### ## @brief Overclock control states. class zes_control_state_v(IntEnum): STATE_UNSET = 0 ## No overclock control has not been changed by the driver since the last ## boot/reset. STATE_ACTIVE = 2 ## The overclock control has been set and it is active. STATE_DISABLED = 3 ## The overclock control value has been disabled due to the current power ## configuration (typically when running on DC). class zes_control_state_t(c_int): def __str__(self): return str(zes_control_state_v(self.value)) ############################################################################### ## @brief Overclock pending actions. class zes_pending_action_v(IntEnum): PENDING_NONE = 0 ## There no pending actions. . PENDING_IMMINENT = 1 ## The requested change is in progress and should complete soon. PENDING_COLD_RESET = 2 ## The requested change requires a device cold reset (hotplug, system ## boot). PENDING_WARM_RESET = 3 ## The requested change requires a device warm reset (PCIe FLR). class zes_pending_action_t(c_int): def __str__(self): return str(zes_pending_action_v(self.value)) ############################################################################### ## @brief Overclock V-F curve programing. class zes_vf_program_type_v(IntEnum): VF_ARBITRARY = 0 ## Can program an arbitrary number of V-F points up to the maximum number ## and each point can have arbitrary voltage and frequency values within ## the min/max/step limits VF_FREQ_FIXED = 1 ## Can only program the voltage for the V-F points that it reads back - ## the frequency of those points cannot be changed VF_VOLT_FIXED = 2 ## Can only program the frequency for the V-F points that is reads back - ## the voltage of each point cannot be changed. class zes_vf_program_type_t(c_int): def __str__(self): return str(zes_vf_program_type_v(self.value)) ############################################################################### ## @brief VF type class zes_vf_type_v(IntEnum): VOLT = 0 ## VF Voltage point FREQ = 1 ## VF Frequency point class zes_vf_type_t(c_int): def __str__(self): return str(zes_vf_type_v(self.value)) ############################################################################### ## @brief VF type class zes_vf_array_type_v(IntEnum): USER_VF_ARRAY = 0 ## User V-F array DEFAULT_VF_ARRAY = 1 ## Default V-F array LIVE_VF_ARRAY = 2 ## Live V-F array class zes_vf_array_type_t(c_int): def __str__(self): return str(zes_vf_array_type_v(self.value)) ############################################################################### ## @brief Overclock properties ## ## @details ## - Information on the overclock domain type and all the contols that are ## part of the domain. class zes_overclock_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("domainType", zes_overclock_domain_t), ## [out] The hardware block that this overclock domain controls (GPU, ## VRAM, ...) ("AvailableControls", c_ulong), ## [out] Returns the overclock controls that are supported (a bit for ## each of enum ::zes_overclock_control_t). If no bits are set, the ## domain doesn't support overclocking. ("VFProgramType", zes_vf_program_type_t), ## [out] Type of V-F curve programming that is permitted:. ("NumberOfVFPoints", c_ulong) ## [out] Number of VF points that can be programmed - max_num_points ] ############################################################################### ## @brief Overclock Control properties ## ## @details ## - Provides all the control capabilities supported by the device for the ## overclock domain. class zes_control_property_t(Structure): _fields_ = [ ("MinValue", c_double), ## [out] This provides information about the limits of the control value ## so that the driver can calculate the set of valid values. ("MaxValue", c_double), ## [out] This provides information about the limits of the control value ## so that the driver can calculate the set of valid values. ("StepValue", c_double), ## [out] This provides information about the limits of the control value ## so that the driver can calculate the set of valid values. ("RefValue", c_double), ## [out] The reference value provides the anchor point, UIs can combine ## this with the user offset request to show the anticipated improvement. ("DefaultValue", c_double) ## [out] The shipped out-of-box position of this control. Driver can ## request this value at any time to return to the out-of-box behavior. ] ############################################################################### ## @brief Overclock VF properties ## ## @details ## - Provides all the VF capabilities supported by the device for the ## overclock domain. class zes_vf_property_t(Structure): _fields_ = [ ("MinFreq", c_double), ## [out] Read the minimum frequency that can be be programmed in the ## custom V-F point.. ("MaxFreq", c_double), ## [out] Read the maximum frequency that can be be programmed in the ## custom V-F point.. ("StepFreq", c_double), ## [out] Read the frequency step that can be be programmed in the custom ## V-F point.. ("MinVolt", c_double), ## [out] Read the minimum voltage that can be be programmed in the custom ## V-F point.. ("MaxVolt", c_double), ## [out] Read the maximum voltage that can be be programmed in the custom ## V-F point.. ("StepVolt", c_double) ## [out] Read the voltage step that can be be programmed in the custom ## V-F point. ] ############################################################################### ## @brief Diagnostic results class zes_diag_result_v(IntEnum): NO_ERRORS = 0 ## Diagnostic completed without finding errors to repair ABORT = 1 ## Diagnostic had problems running tests FAIL_CANT_REPAIR = 2 ## Diagnostic had problems setting up repairs REBOOT_FOR_REPAIR = 3 ## Diagnostics found errors, setup for repair and reboot is required to ## complete the process class zes_diag_result_t(c_int): def __str__(self): return str(zes_diag_result_v(self.value)) ############################################################################### ## @brief Diagnostic test index to use for the very first test. ZES_DIAG_FIRST_TEST_INDEX = 0x0 ############################################################################### ## @brief Diagnostic test index to use for the very last test. ZES_DIAG_LAST_TEST_INDEX = 0xFFFFFFFF ############################################################################### ## @brief Diagnostic test class zes_diag_test_t(Structure): _fields_ = [ ("index", c_ulong), ## [out] Index of the test ("name", c_char * ZES_STRING_PROPERTY_SIZE) ## [out] Name of the test ] ############################################################################### ## @brief Diagnostics test suite properties class zes_diag_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("onSubdevice", ze_bool_t), ## [out] True if the resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("name", c_char * ZES_STRING_PROPERTY_SIZE), ## [out] Name of the diagnostics test suite ("haveTests", ze_bool_t) ## [out] Indicates if this test suite has individual tests which can be ## run separately (use the function ::zesDiagnosticsGetTests() to get the ## list of these tests) ] ############################################################################### ## @brief ECC State class zes_device_ecc_state_v(IntEnum): UNAVAILABLE = 0 ## None ENABLED = 1 ## ECC enabled. DISABLED = 2 ## ECC disabled. class zes_device_ecc_state_t(c_int): def __str__(self): return str(zes_device_ecc_state_v(self.value)) ############################################################################### ## @brief State Change Requirements class zes_device_action_v(IntEnum): NONE = 0 ## No action. WARM_CARD_RESET = 1 ## Warm reset of the card. COLD_CARD_RESET = 2 ## Cold reset of the card. COLD_SYSTEM_REBOOT = 3 ## Cold reboot of the system. class zes_device_action_t(c_int): def __str__(self): return str(zes_device_action_v(self.value)) ############################################################################### ## @brief ECC State Descriptor class zes_device_ecc_desc_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("state", zes_device_ecc_state_t) ## [out] ECC state ] ############################################################################### ## @brief ECC State class zes_device_ecc_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("currentState", zes_device_ecc_state_t), ## [out] Current ECC state ("pendingState", zes_device_ecc_state_t), ## [out] Pending ECC state ("pendingAction", zes_device_action_t) ## [out] Pending action ] ############################################################################### ## @brief Accelerator engine groups class zes_engine_group_v(IntEnum): ALL = 0 ## Access information about all engines combined. COMPUTE_ALL = 1 ## Access information about all compute engines combined. Compute engines ## can only process compute kernels (no 3D content). MEDIA_ALL = 2 ## Access information about all media engines combined. COPY_ALL = 3 ## Access information about all copy (blitter) engines combined. COMPUTE_SINGLE = 4 ## Access information about a single compute engine - this is an engine ## that can process compute kernels. Note that single engines may share ## the same underlying accelerator resources as other engines so activity ## of such an engine may not be indicative of the underlying resource ## utilization - use ::ZES_ENGINE_GROUP_3D_RENDER_COMPUTE_ALL for that. RENDER_SINGLE = 5 ## Access information about a single render engine - this is an engine ## that can process both 3D content and compute kernels. Note that single ## engines may share the same underlying accelerator resources as other ## engines so activity of such an engine may not be indicative of the ## underlying resource utilization - use ## ::ZES_ENGINE_GROUP_3D_RENDER_COMPUTE_ALL for that. MEDIA_DECODE_SINGLE = 6 ## [DEPRECATED] No longer supported. MEDIA_ENCODE_SINGLE = 7 ## [DEPRECATED] No longer supported. COPY_SINGLE = 8 ## Access information about a single media encode engine. Note that ## single engines may share the same underlying accelerator resources as ## other engines so activity of such an engine may not be indicative of ## the underlying resource utilization - use ::ZES_ENGINE_GROUP_COPY_ALL ## for that. MEDIA_ENHANCEMENT_SINGLE = 9 ## Access information about a single media enhancement engine. Note that ## single engines may share the same underlying accelerator resources as ## other engines so activity of such an engine may not be indicative of ## the underlying resource utilization - use ::ZES_ENGINE_GROUP_MEDIA_ALL ## for that. _3D_SINGLE = 10 ## [DEPRECATED] No longer supported. _3D_RENDER_COMPUTE_ALL = 11 ## [DEPRECATED] No longer supported. RENDER_ALL = 12 ## Access information about all render engines combined. Render engines ## are those than process both 3D content and compute kernels. _3D_ALL = 13 ## [DEPRECATED] No longer supported. MEDIA_CODEC_SINGLE = 14 ## Access information about a single media engine. Note that single ## engines may share the same underlying accelerator resources as other ## engines so activity of such an engine may not be indicative of the ## underlying resource utilization - use ::ZES_ENGINE_GROUP_MEDIA_ALL for ## that. class zes_engine_group_t(c_int): def __str__(self): return str(zes_engine_group_v(self.value)) ############################################################################### ## @brief Engine group properties class zes_engine_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("type", zes_engine_group_t), ## [out] The engine group ("onSubdevice", ze_bool_t), ## [out] True if this resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong) ## [out] If onSubdevice is true, this gives the ID of the sub-device ] ############################################################################### ## @brief Engine activity counters ## ## @details ## - Percent utilization is calculated by taking two snapshots (s1, s2) and ## using the equation: %util = (s2.activeTime - s1.activeTime) / ## (s2.timestamp - s1.timestamp) ## - The `activeTime` time units are implementation-specific since the ## value is only intended to be used for calculating utilization ## percentage. ## - The `timestamp` should only be used to calculate delta between ## snapshots of this structure. ## - The application should never take the delta of `timestamp` with the ## timestamp from a different structure since they are not guaranteed to ## have the same base. ## - When taking the delta, the difference between `timestamp` samples ## could be `0`, if the frequency of sampling the snapshots is higher ## than the frequency of the timestamp update. ## - The absolute value of `timestamp` is only valid during within the ## application and may be different on the next execution. class zes_engine_stats_t(Structure): _fields_ = [ ("activeTime", c_ulonglong), ## [out] Monotonic counter where the resource is actively running ## workloads. ("timestamp", c_ulonglong) ## [out] Monotonic counter when activeTime counter was sampled. ] ############################################################################### ## @brief Event types class zes_event_type_flags_v(IntEnum): DEVICE_DETACH = ZE_BIT(0) ## Event is triggered when the device is no longer available (due to a ## reset or being disabled). DEVICE_ATTACH = ZE_BIT(1) ## Event is triggered after the device is available again. DEVICE_SLEEP_STATE_ENTER = ZE_BIT(2) ## Event is triggered when the driver is about to put the device into a ## deep sleep state DEVICE_SLEEP_STATE_EXIT = ZE_BIT(3) ## Event is triggered when the driver is waking the device up from a deep ## sleep state FREQ_THROTTLED = ZE_BIT(4) ## Event is triggered when the frequency starts being throttled ENERGY_THRESHOLD_CROSSED = ZE_BIT(5) ## Event is triggered when the energy consumption threshold is reached ## (use ::zesPowerSetEnergyThreshold() to configure). TEMP_CRITICAL = ZE_BIT(6) ## Event is triggered when the critical temperature is reached (use ## ::zesTemperatureSetConfig() to configure - disabled by default). TEMP_THRESHOLD1 = ZE_BIT(7) ## Event is triggered when the temperature crosses threshold 1 (use ## ::zesTemperatureSetConfig() to configure - disabled by default). TEMP_THRESHOLD2 = ZE_BIT(8) ## Event is triggered when the temperature crosses threshold 2 (use ## ::zesTemperatureSetConfig() to configure - disabled by default). MEM_HEALTH = ZE_BIT(9) ## Event is triggered when the health of device memory changes. FABRIC_PORT_HEALTH = ZE_BIT(10) ## Event is triggered when the health of fabric ports change. PCI_LINK_HEALTH = ZE_BIT(11) ## Event is triggered when the health of the PCI link changes. RAS_CORRECTABLE_ERRORS = ZE_BIT(12) ## Event is triggered when accelerator RAS correctable errors cross ## thresholds (use ::zesRasSetConfig() to configure - disabled by ## default). RAS_UNCORRECTABLE_ERRORS = ZE_BIT(13) ## Event is triggered when accelerator RAS uncorrectable errors cross ## thresholds (use ::zesRasSetConfig() to configure - disabled by ## default). DEVICE_RESET_REQUIRED = ZE_BIT(14) ## Event is triggered when the device needs to be reset (use ## ::zesDeviceGetState() to determine the reasons for the reset). SURVIVABILITY_MODE_DETECTED = ZE_BIT(15) ## Event is triggered when graphics driver encounter an error condition. class zes_event_type_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Maximum Fabric port model string size ZES_MAX_FABRIC_PORT_MODEL_SIZE = 256 ############################################################################### ## @brief Maximum size of the buffer that will return information about link ## types ZES_MAX_FABRIC_LINK_TYPE_SIZE = 256 ############################################################################### ## @brief Fabric port status class zes_fabric_port_status_v(IntEnum): UNKNOWN = 0 ## The port status cannot be determined HEALTHY = 1 ## The port is up and operating as expected DEGRADED = 2 ## The port is up but has quality and/or speed degradation FAILED = 3 ## Port connection instabilities are preventing workloads making forward ## progress DISABLED = 4 ## The port is configured down class zes_fabric_port_status_t(c_int): def __str__(self): return str(zes_fabric_port_status_v(self.value)) ############################################################################### ## @brief Fabric port quality degradation reasons class zes_fabric_port_qual_issue_flags_v(IntEnum): LINK_ERRORS = ZE_BIT(0) ## Excessive link errors are occurring SPEED = ZE_BIT(1) ## There is a degradation in the bitrate and/or width of the link class zes_fabric_port_qual_issue_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Fabric port failure reasons class zes_fabric_port_failure_flags_v(IntEnum): FAILED = ZE_BIT(0) ## A previously operating link has failed. Hardware will automatically ## retrain this port. This state will persist until either the physical ## connection is removed or the link trains successfully. TRAINING_TIMEOUT = ZE_BIT(1) ## A connection has not been established within an expected time. ## Hardware will continue to attempt port training. This status will ## persist until either the physical connection is removed or the link ## successfully trains. FLAPPING = ZE_BIT(2) ## Port has excessively trained and then transitioned down for some ## period of time. Driver will allow port to continue to train, but will ## not enable the port for use until the port has been disabled and ## subsequently re-enabled using ::zesFabricPortSetConfig(). class zes_fabric_port_failure_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Unique identifier for a fabric port ## ## @details ## - This not a universal identifier. The identified is garanteed to be ## unique for the current hardware configuration of the system. Changes ## in the hardware may result in a different identifier for a given port. ## - The main purpose of this identifier to build up an instantaneous ## topology map of system connectivity. An application should enumerate ## all fabric ports and match the `remotePortId` member of ## ::zes_fabric_port_state_t to the `portId` member of ## ::zes_fabric_port_properties_t. class zes_fabric_port_id_t(Structure): _fields_ = [ ("fabricId", c_ulong), ## [out] Unique identifier for the fabric end-point ("attachId", c_ulong), ## [out] Unique identifier for the device attachment point ("portNumber", c_ubyte) ## [out] The logical port number (this is typically marked somewhere on ## the physical device) ] ############################################################################### ## @brief Fabric port speed in one direction class zes_fabric_port_speed_t(Structure): _fields_ = [ ("bitRate", c_int64_t), ## [out] Bits/sec that the link is operating at. A value of -1 means that ## this property is unknown. ("width", c_int32_t) ## [out] The number of lanes. A value of -1 means that this property is ## unknown. ] ############################################################################### ## @brief Fabric port properties class zes_fabric_port_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("model", c_char * ZES_MAX_FABRIC_PORT_MODEL_SIZE), ## [out] Description of port technology. Will be set to the string ## "unkown" if this cannot be determined for this port. ("onSubdevice", ze_bool_t), ## [out] True if the port is located on a sub-device; false means that ## the port is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("portId", zes_fabric_port_id_t), ## [out] The unique port identifier ("maxRxSpeed", zes_fabric_port_speed_t), ## [out] Maximum speed supported by the receive side of the port (sum of ## all lanes) ("maxTxSpeed", zes_fabric_port_speed_t) ## [out] Maximum speed supported by the transmit side of the port (sum of ## all lanes) ] ############################################################################### ## @brief Provides information about the fabric link attached to a port class zes_fabric_link_type_t(Structure): _fields_ = [ ("desc", c_char * ZES_MAX_FABRIC_LINK_TYPE_SIZE) ## [out] Description of link technology. Will be set to the string ## "unkown" if this cannot be determined for this link. ] ############################################################################### ## @brief Fabric port configuration class zes_fabric_port_config_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("enabled", ze_bool_t), ## [in,out] Port is configured up/down ("beaconing", ze_bool_t) ## [in,out] Beaconing is configured on/off ] ############################################################################### ## @brief Fabric port state class zes_fabric_port_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("status", zes_fabric_port_status_t), ## [out] The current status of the port ("qualityIssues", zes_fabric_port_qual_issue_flags_t), ## [out] If status is ::ZES_FABRIC_PORT_STATUS_DEGRADED, ## then this gives a combination of ::zes_fabric_port_qual_issue_flag_t ## for quality issues that have been detected; ## otherwise, 0 indicates there are no quality issues with the link at ## this time. ("failureReasons", zes_fabric_port_failure_flags_t), ## [out] If status is ::ZES_FABRIC_PORT_STATUS_FAILED, ## then this gives a combination of ::zes_fabric_port_failure_flag_t for ## reasons for the connection instability; ## otherwise, 0 indicates there are no connection stability issues at ## this time. ("remotePortId", zes_fabric_port_id_t), ## [out] The unique port identifier for the remote connection point if ## status is ::ZES_FABRIC_PORT_STATUS_HEALTHY, ## ::ZES_FABRIC_PORT_STATUS_DEGRADED or ::ZES_FABRIC_PORT_STATUS_FAILED ("rxSpeed", zes_fabric_port_speed_t), ## [out] Current maximum receive speed (sum of all lanes) ("txSpeed", zes_fabric_port_speed_t) ## [out] Current maximum transmit speed (sum of all lanes) ] ############################################################################### ## @brief Fabric port throughput. class zes_fabric_port_throughput_t(Structure): _fields_ = [ ("timestamp", c_ulonglong), ## [out] Monotonic timestamp counter in microseconds when the measurement ## was made. ## This timestamp should only be used to calculate delta time between ## snapshots of this structure. ## Never take the delta of this timestamp with the timestamp from a ## different structure since they are not guaranteed to have the same base. ## The absolute value of the timestamp is only valid during within the ## application and may be different on the next execution. ("rxCounter", c_ulonglong), ## [out] Monotonic counter for the number of bytes received (sum of all ## lanes). This includes all protocol overhead, not only the GPU traffic. ("txCounter", c_ulonglong) ## [out] Monotonic counter for the number of bytes transmitted (sum of ## all lanes). This includes all protocol overhead, not only the GPU ## traffic. ] ############################################################################### ## @brief Fabric Port Error Counters class zes_fabric_port_error_counters_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("linkFailureCount", c_ulonglong), ## [out] Link Failure Error Count reported per port ("fwCommErrorCount", c_ulonglong), ## [out] Firmware Communication Error Count reported per device ("fwErrorCount", c_ulonglong), ## [out] Firmware reported Error Count reported per device ("linkDegradeCount", c_ulonglong) ## [out] Link Degrade Error Count reported per port ] ############################################################################### ## @brief Fan resource speed mode class zes_fan_speed_mode_v(IntEnum): DEFAULT = 0 ## The fan speed is operating using the hardware default settings FIXED = 1 ## The fan speed is currently set to a fixed value TABLE = 2 ## The fan speed is currently controlled dynamically by hardware based on ## a temp/speed table class zes_fan_speed_mode_t(c_int): def __str__(self): return str(zes_fan_speed_mode_v(self.value)) ############################################################################### ## @brief Fan speed units class zes_fan_speed_units_v(IntEnum): RPM = 0 ## The fan speed is in units of revolutions per minute (rpm) PERCENT = 1 ## The fan speed is a percentage of the maximum speed of the fan class zes_fan_speed_units_t(c_int): def __str__(self): return str(zes_fan_speed_units_v(self.value)) ############################################################################### ## @brief Fan speed class zes_fan_speed_t(Structure): _fields_ = [ ("speed", c_int32_t), ## [in,out] The speed of the fan. On output, a value of -1 indicates that ## there is no fixed fan speed setting. ("units", zes_fan_speed_units_t) ## [in,out] The units that the fan speed is expressed in. On output, if ## fan speed is -1 then units should be ignored. ] ############################################################################### ## @brief Fan temperature/speed pair class zes_fan_temp_speed_t(Structure): _fields_ = [ ("temperature", c_ulong), ## [in,out] Temperature in degrees Celsius. ("speed", zes_fan_speed_t) ## [in,out] The speed of the fan ] ############################################################################### ## @brief Maximum number of fan temperature/speed pairs in the fan speed table. ZES_FAN_TEMP_SPEED_PAIR_COUNT = 32 ############################################################################### ## @brief Fan speed table class zes_fan_speed_table_t(Structure): _fields_ = [ ("numPoints", c_int32_t), ## [in,out] The number of valid points in the fan speed table. 0 means ## that there is no fan speed table configured. -1 means that a fan speed ## table is not supported by the hardware. ("table", zes_fan_temp_speed_t * ZES_FAN_TEMP_SPEED_PAIR_COUNT) ## [in,out] Array of temperature/fan speed pairs. The table is ordered ## based on temperature from lowest to highest. ] ############################################################################### ## @brief Fan properties class zes_fan_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("onSubdevice", ze_bool_t), ## [out] True if the resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("canControl", ze_bool_t), ## [out] Indicates if software can control the fan speed assuming the ## user has permissions ("supportedModes", c_ulong), ## [out] Bitfield of supported fan configuration modes ## (1<<::zes_fan_speed_mode_t) ("supportedUnits", c_ulong), ## [out] Bitfield of supported fan speed units ## (1<<::zes_fan_speed_units_t) ("maxRPM", c_int32_t), ## [out] The maximum RPM of the fan. A value of -1 means that this ## property is unknown. ("maxPoints", c_int32_t) ## [out] The maximum number of points in the fan temp/speed table. A ## value of -1 means that this fan doesn't support providing a temp/speed ## table. ] ############################################################################### ## @brief Fan configuration class zes_fan_config_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("mode", zes_fan_speed_mode_t), ## [in,out] The fan speed mode (fixed, temp-speed table) ("speedFixed", zes_fan_speed_t), ## [in,out] The current fixed fan speed setting ("speedTable", zes_fan_speed_table_t) ## [out] A table containing temperature/speed pairs ] ############################################################################### ## @brief Firmware properties class zes_firmware_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("onSubdevice", ze_bool_t), ## [out] True if the resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("canControl", ze_bool_t), ## [out] Indicates if software can flash the firmware assuming the user ## has permissions ("name", c_char * ZES_STRING_PROPERTY_SIZE), ## [out] NULL terminated string value. The string "unknown" will be ## returned if this property cannot be determined. ("version", c_char * ZES_STRING_PROPERTY_SIZE) ## [out] NULL terminated string value. The string "unknown" will be ## returned if this property cannot be determined. ] ############################################################################### ## @brief Frequency domains. class zes_freq_domain_v(IntEnum): GPU = 0 ## GPU Core Domain. MEMORY = 1 ## Local Memory Domain. MEDIA = 2 ## GPU Media Domain. class zes_freq_domain_t(c_int): def __str__(self): return str(zes_freq_domain_v(self.value)) ############################################################################### ## @brief Frequency properties ## ## @details ## - Indicates if this frequency domain can be overclocked (if true, ## functions such as ::zesFrequencyOcSetFrequencyTarget() are supported). ## - The min/max hardware frequencies are specified for non-overclock ## configurations. For overclock configurations, use ## ::zesFrequencyOcGetFrequencyTarget() to determine the maximum ## frequency that can be requested. class zes_freq_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("type", zes_freq_domain_t), ## [out] The hardware block that this frequency domain controls (GPU, ## memory, ...) ("onSubdevice", ze_bool_t), ## [out] True if this resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("canControl", ze_bool_t), ## [out] Indicates if software can control the frequency of this domain ## assuming the user has permissions ("isThrottleEventSupported", ze_bool_t), ## [out] Indicates if software can register to receive event ## ::ZES_EVENT_TYPE_FLAG_FREQ_THROTTLED ("min", c_double), ## [out] The minimum hardware clock frequency in units of MHz. ("max", c_double) ## [out] The maximum non-overclock hardware clock frequency in units of ## MHz. ] ############################################################################### ## @brief Frequency range between which the hardware can operate. ## ## @details ## - When setting limits, they will be clamped to the hardware limits. ## - When setting limits, ensure that the max frequency is greater than or ## equal to the min frequency specified. ## - When setting limits to return to factory settings, specify -1 for both ## the min and max limit. class zes_freq_range_t(Structure): _fields_ = [ ("min", c_double), ## [in,out] The min frequency in MHz below which hardware frequency ## management will not request frequencies. On input, setting to 0 will ## permit the frequency to go down to the hardware minimum while setting ## to -1 will return the min frequency limit to the factory value (can be ## larger than the hardware min). On output, a negative value indicates ## that no external minimum frequency limit is in effect. ("max", c_double) ## [in,out] The max frequency in MHz above which hardware frequency ## management will not request frequencies. On input, setting to 0 or a ## very big number will permit the frequency to go all the way up to the ## hardware maximum while setting to -1 will return the max frequency to ## the factory value (which can be less than the hardware max). On ## output, a negative number indicates that no external maximum frequency ## limit is in effect. ] ############################################################################### ## @brief Frequency throttle reasons class zes_freq_throttle_reason_flags_v(IntEnum): AVE_PWR_CAP = ZE_BIT(0) ## frequency throttled due to average power excursion (PL1) BURST_PWR_CAP = ZE_BIT(1) ## frequency throttled due to burst power excursion (PL2) CURRENT_LIMIT = ZE_BIT(2) ## frequency throttled due to current excursion (PL4) THERMAL_LIMIT = ZE_BIT(3) ## frequency throttled due to thermal excursion (T > TjMax) PSU_ALERT = ZE_BIT(4) ## frequency throttled due to power supply assertion SW_RANGE = ZE_BIT(5) ## frequency throttled due to software supplied frequency range HW_RANGE = ZE_BIT(6) ## frequency throttled due to a sub block that has a lower frequency ## range when it receives clocks class zes_freq_throttle_reason_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Frequency state class zes_freq_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("currentVoltage", c_double), ## [out] Current voltage in Volts. A negative value indicates that this ## property is not known. ("request", c_double), ## [out] The current frequency request in MHz. A negative value indicates ## that this property is not known. ("tdp", c_double), ## [out] The maximum frequency in MHz supported under the current TDP ## conditions. This fluctuates dynamically based on the power and thermal ## limits of the part. A negative value indicates that this property is ## not known. ("efficient", c_double), ## [out] The efficient minimum frequency in MHz. A negative value ## indicates that this property is not known. ("actual", c_double), ## [out] The resolved frequency in MHz. A negative value indicates that ## this property is not known. ("throttleReasons", zes_freq_throttle_reason_flags_t) ## [out] The reasons that the frequency is being limited by the hardware. ## Returns 0 (frequency not throttled) or a combination of ::zes_freq_throttle_reason_flag_t. ] ############################################################################### ## @brief Frequency throttle time snapshot ## ## @details ## - Percent time throttled is calculated by taking two snapshots (s1, s2) ## and using the equation: %throttled = (s2.throttleTime - ## s1.throttleTime) / (s2.timestamp - s1.timestamp) class zes_freq_throttle_time_t(Structure): _fields_ = [ ("throttleTime", c_ulonglong), ## [out] The monotonic counter of time in microseconds that the frequency ## has been limited by the hardware. ("timestamp", c_ulonglong) ## [out] Microsecond timestamp when throttleTime was captured. ## This timestamp should only be used to calculate delta time between ## snapshots of this structure. ## Never take the delta of this timestamp with the timestamp from a ## different structure since they are not guaranteed to have the same base. ## The absolute value of the timestamp is only valid during within the ## application and may be different on the next execution. ] ############################################################################### ## @brief Overclocking modes ## ## @details ## - [DEPRECATED] No longer supported. class zes_oc_mode_v(IntEnum): OFF = 0 ## Overclocking if off - hardware is running using factory default ## voltages/frequencies. OVERRIDE = 1 ## Overclock override mode - In this mode, a fixed user-supplied voltage ## is applied independent of the frequency request. The maximum permitted ## frequency can also be increased. This mode disables INTERPOLATIVE and ## FIXED modes. INTERPOLATIVE = 2 ## Overclock interpolative mode - In this mode, the voltage/frequency ## curve can be extended with a new voltage/frequency point that will be ## interpolated. The existing voltage/frequency points can also be offset ## (up or down) by a fixed voltage. This mode disables FIXED and OVERRIDE ## modes. FIXED = 3 ## Overclocking fixed Mode - In this mode, hardware will disable most ## frequency throttling and lock the frequency and voltage at the ## specified overclock values. This mode disables OVERRIDE and ## INTERPOLATIVE modes. This mode can damage the part, most of the ## protections are disabled on this mode. class zes_oc_mode_t(c_int): def __str__(self): return str(zes_oc_mode_v(self.value)) ############################################################################### ## @brief Overclocking properties ## ## @details ## - Provides all the overclocking capabilities and properties supported by ## the device for the frequency domain. ## - [DEPRECATED] No longer supported. class zes_oc_capabilities_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("isOcSupported", ze_bool_t), ## [out] Indicates if any overclocking features are supported on this ## frequency domain. ("maxFactoryDefaultFrequency", c_double), ## [out] Factory default non-overclock maximum frequency in Mhz. ("maxFactoryDefaultVoltage", c_double), ## [out] Factory default voltage used for the non-overclock maximum ## frequency in MHz. ("maxOcFrequency", c_double), ## [out] Maximum hardware overclocking frequency limit in Mhz. ("minOcVoltageOffset", c_double), ## [out] The minimum voltage offset that can be applied to the ## voltage/frequency curve. Note that this number can be negative. ("maxOcVoltageOffset", c_double), ## [out] The maximum voltage offset that can be applied to the ## voltage/frequency curve. ("maxOcVoltage", c_double), ## [out] The maximum overclock voltage that hardware supports. ("isTjMaxSupported", ze_bool_t), ## [out] Indicates if the maximum temperature limit (TjMax) can be ## changed for this frequency domain. ("isIccMaxSupported", ze_bool_t), ## [out] Indicates if the maximum current (IccMax) can be changed for ## this frequency domain. ("isHighVoltModeCapable", ze_bool_t), ## [out] Indicates if this frequency domains supports a feature to set ## very high voltages. ("isHighVoltModeEnabled", ze_bool_t), ## [out] Indicates if very high voltages are permitted on this frequency ## domain. ("isExtendedModeSupported", ze_bool_t), ## [out] Indicates if the extended overclocking features are supported. ## If this is supported, increments are on 1 Mhz basis. ("isFixedModeSupported", ze_bool_t) ## [out] Indicates if the fixed mode is supported. In this mode, hardware ## will disable most frequency throttling and lock the frequency and ## voltage at the specified overclock values. ] ############################################################################### ## @brief LED properties class zes_led_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("onSubdevice", ze_bool_t), ## [out] True if the resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("canControl", ze_bool_t), ## [out] Indicates if software can control the LED assuming the user has ## permissions ("haveRGB", ze_bool_t) ## [out] Indicates if the LED is RGB capable ] ############################################################################### ## @brief LED color class zes_led_color_t(Structure): _fields_ = [ ("red", c_double), ## [in,out][range(0.0, 1.0)] The LED red value. On output, a value less ## than 0.0 indicates that the color is not known. ("green", c_double), ## [in,out][range(0.0, 1.0)] The LED green value. On output, a value less ## than 0.0 indicates that the color is not known. ("blue", c_double) ## [in,out][range(0.0, 1.0)] The LED blue value. On output, a value less ## than 0.0 indicates that the color is not known. ] ############################################################################### ## @brief LED state class zes_led_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("isOn", ze_bool_t), ## [out] Indicates if the LED is on or off ("color", zes_led_color_t) ## [out] Color of the LED ] ############################################################################### ## @brief Memory module types class zes_mem_type_v(IntEnum): HBM = 0 ## HBM memory DDR = 1 ## DDR memory DDR3 = 2 ## DDR3 memory DDR4 = 3 ## DDR4 memory DDR5 = 4 ## DDR5 memory LPDDR = 5 ## LPDDR memory LPDDR3 = 6 ## LPDDR3 memory LPDDR4 = 7 ## LPDDR4 memory LPDDR5 = 8 ## LPDDR5 memory SRAM = 9 ## SRAM memory L1 = 10 ## L1 cache L3 = 11 ## L3 cache GRF = 12 ## Execution unit register file SLM = 13 ## Execution unit shared local memory GDDR4 = 14 ## GDDR4 memory GDDR5 = 15 ## GDDR5 memory GDDR5X = 16 ## GDDR5X memory GDDR6 = 17 ## GDDR6 memory GDDR6X = 18 ## GDDR6X memory GDDR7 = 19 ## GDDR7 memory class zes_mem_type_t(c_int): def __str__(self): return str(zes_mem_type_v(self.value)) ############################################################################### ## @brief Memory module location class zes_mem_loc_v(IntEnum): SYSTEM = 0 ## System memory DEVICE = 1 ## On board local device memory class zes_mem_loc_t(c_int): def __str__(self): return str(zes_mem_loc_v(self.value)) ############################################################################### ## @brief Memory health class zes_mem_health_v(IntEnum): UNKNOWN = 0 ## The memory health cannot be determined. OK = 1 ## All memory channels are healthy. DEGRADED = 2 ## Excessive correctable errors have been detected on one or more ## channels. Device should be reset. CRITICAL = 3 ## Operating with reduced memory to cover banks with too many ## uncorrectable errors. REPLACE = 4 ## Device should be replaced due to excessive uncorrectable errors. class zes_mem_health_t(c_int): def __str__(self): return str(zes_mem_health_v(self.value)) ############################################################################### ## @brief Memory properties class zes_mem_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("type", zes_mem_type_t), ## [out] The memory type ("onSubdevice", ze_bool_t), ## [out] True if this resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("location", zes_mem_loc_t), ## [out] Location of this memory (system, device) ("physicalSize", c_ulonglong), ## [out] Physical memory size in bytes. A value of 0 indicates that this ## property is not known. However, a call to ::zesMemoryGetState() will ## correctly return the total size of usable memory. ("busWidth", c_int32_t), ## [out] Width of the memory bus. A value of -1 means that this property ## is unknown. ("numChannels", c_int32_t) ## [out] The number of memory channels. A value of -1 means that this ## property is unknown. ] ############################################################################### ## @brief Memory state - health, allocated ## ## @details ## - Percent allocation is given by 100 * (size - free / size. ## - Percent free is given by 100 * free / size. class zes_mem_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("health", zes_mem_health_t), ## [out] Indicates the health of the memory ("free", c_ulonglong), ## [out] The free memory in bytes ("size", c_ulonglong) ## [out] The total allocatable memory in bytes (can be less than the ## `physicalSize` member of ::zes_mem_properties_t) ] ############################################################################### ## @brief Memory bandwidth ## ## @details ## - Percent bandwidth is calculated by taking two snapshots (s1, s2) and ## using the equation: %bw = 10^6 * ((s2.readCounter - s1.readCounter) + ## (s2.writeCounter - s1.writeCounter)) / (s2.maxBandwidth * ## (s2.timestamp - s1.timestamp)) ## - Counter can roll over and rollover needs to be handled by comparing ## the current read against the previous read ## - Counter is a 32 byte transaction count, which means the calculated ## delta (delta = current_value - previous_value or delta = 2^32 - ## previous_value + current_value in case of rollover) needs to be ## multiplied by 32 to get delta between samples in actual byte count class zes_mem_bandwidth_t(Structure): _fields_ = [ ("readCounter", c_ulonglong), ## [out] Total bytes read from memory ("writeCounter", c_ulonglong), ## [out] Total bytes written to memory ("maxBandwidth", c_ulonglong), ## [out] Current maximum bandwidth in units of bytes/sec ("timestamp", c_ulonglong) ## [out] The timestamp in microseconds when these measurements were sampled. ## This timestamp should only be used to calculate delta time between ## snapshots of this structure. ## Never take the delta of this timestamp with the timestamp from a ## different structure since they are not guaranteed to have the same base. ## The absolute value of the timestamp is only valid during within the ## application and may be different on the next execution. ] ############################################################################### ## @brief Extension properties for Memory bandwidth ## ## @details ## - Number of counter bits ## - [DEPRECATED] No longer supported. class zes_mem_ext_bandwidth_t(Structure): _fields_ = [ ("memoryTimestampValidBits", c_ulong) ## [out] Returns the number of valid bits in the timestamp values ] ############################################################################### ## @brief Static information about a Performance Factor domain class zes_perf_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("onSubdevice", ze_bool_t), ## [out] True if this Performance Factor affects accelerators located on ## a sub-device ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("engines", zes_engine_type_flags_t) ## [out] Bitfield of accelerator engine types that are affected by this ## Performance Factor. ] ############################################################################### ## @brief Power Domain class zes_power_domain_v(IntEnum): UNKNOWN = 0 ## The PUnit power domain level cannot be determined. CARD = 1 ## The PUnit power domain is a card-level power domain. PACKAGE = 2 ## The PUnit power domain is a package-level power domain. STACK = 3 ## The PUnit power domain is a stack-level power domain. MEMORY = 4 ## The PUnit power domain is a memory-level power domain. GPU = 5 ## The PUnit power domain is a GPU-level power domain. class zes_power_domain_t(c_int): def __str__(self): return str(zes_power_domain_v(self.value)) ############################################################################### ## @brief Power Level Type class zes_power_level_v(IntEnum): UNKNOWN = 0 ## The PUnit power monitoring duration cannot be determined. SUSTAINED = 1 ## The PUnit determines effective power draw by computing a moving ## average of the actual power draw over a time interval (longer than ## BURST). BURST = 2 ## The PUnit determines effective power draw by computing a moving ## average of the actual power draw over a time interval (longer than ## PEAK). PEAK = 3 ## The PUnit determines effective power draw by computing a moving ## average of the actual power draw over a very short time interval. INSTANTANEOUS = 4 ## The PUnit predicts effective power draw using the current device ## configuration (frequency, voltage, etc...) & throttles proactively to ## stay within the specified limit. class zes_power_level_t(c_int): def __str__(self): return str(zes_power_level_v(self.value)) ############################################################################### ## @brief Power Source Type class zes_power_source_v(IntEnum): ANY = 0 ## Limit active no matter whether the power source is mains powered or ## battery powered. MAINS = 1 ## Limit active only when the device is mains powered. BATTERY = 2 ## Limit active only when the device is battery powered. class zes_power_source_t(c_int): def __str__(self): return str(zes_power_source_v(self.value)) ############################################################################### ## @brief Limit Unit class zes_limit_unit_v(IntEnum): UNKNOWN = 0 ## The PUnit power monitoring unit cannot be determined. CURRENT = 1 ## The limit is specified in milliamperes of current drawn. POWER = 2 ## The limit is specified in milliwatts of power generated. class zes_limit_unit_t(c_int): def __str__(self): return str(zes_limit_unit_v(self.value)) ############################################################################### ## @brief Properties related to device power settings class zes_power_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("onSubdevice", ze_bool_t), ## [out] True if this resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("canControl", ze_bool_t), ## [out] Software can change the power limits of this domain assuming the ## user has permissions. ("isEnergyThresholdSupported", ze_bool_t), ## [out] Indicates if this power domain supports the energy threshold ## event (::ZES_EVENT_TYPE_FLAG_ENERGY_THRESHOLD_CROSSED). ("defaultLimit", c_int32_t), ## [out] (Deprecated) The factory default TDP power limit of the part in ## milliwatts. A value of -1 means that this is not known. ("minLimit", c_int32_t), ## [out] (Deprecated) The minimum power limit in milliwatts that can be ## requested. A value of -1 means that this is not known. ("maxLimit", c_int32_t) ## [out] (Deprecated) The maximum power limit in milliwatts that can be ## requested. A value of -1 means that this is not known. ] ############################################################################### ## @brief Energy counter snapshot ## ## @details ## - Average power is calculated by taking two snapshots (s1, s2) and using ## the equation: PowerWatts = (s2.energy - s1.energy) / (s2.timestamp - ## s1.timestamp) class zes_power_energy_counter_t(Structure): _fields_ = [ ("energy", c_ulonglong), ## [out] The monotonic energy counter in microjoules. ("timestamp", c_ulonglong) ## [out] Microsecond timestamp when energy was captured. ## This timestamp should only be used to calculate delta time between ## snapshots of this structure. ## Never take the delta of this timestamp with the timestamp from a ## different structure since they are not guaranteed to have the same base. ## The absolute value of the timestamp is only valid during within the ## application and may be different on the next execution. ] ############################################################################### ## @brief Sustained power limits ## ## @details ## - The power controller (Punit) will throttle the operating frequency if ## the power averaged over a window (typically seconds) exceeds this ## limit. ## - [DEPRECATED] No longer supported. class zes_power_sustained_limit_t(Structure): _fields_ = [ ("enabled", ze_bool_t), ## [in,out] indicates if the limit is enabled (true) or ignored (false) ("power", c_int32_t), ## [in,out] power limit in milliwatts ("interval", c_int32_t) ## [in,out] power averaging window (Tau) in milliseconds ] ############################################################################### ## @brief Burst power limit ## ## @details ## - The power controller (Punit) will throttle the operating frequency of ## the device if the power averaged over a few milliseconds exceeds a ## limit known as PL2. Typically PL2 > PL1 so that it permits the ## frequency to burst higher for short periods than would be otherwise ## permitted by PL1. ## - [DEPRECATED] No longer supported. class zes_power_burst_limit_t(Structure): _fields_ = [ ("enabled", ze_bool_t), ## [in,out] indicates if the limit is enabled (true) or ignored (false) ("power", c_int32_t) ## [in,out] power limit in milliwatts ] ############################################################################### ## @brief Peak power limit ## ## @details ## - The power controller (Punit) will reactively/proactively throttle the ## operating frequency of the device when the instantaneous/100usec power ## exceeds this limit. The limit is known as PL4 or Psys. It expresses ## the maximum power that can be drawn from the power supply. ## - If this power limit is removed or set too high, the power supply will ## generate an interrupt when it detects an overcurrent condition and the ## power controller will throttle the device frequencies down to min. It ## is thus better to tune the PL4 value in order to avoid such ## excursions. ## - [DEPRECATED] No longer supported. class zes_power_peak_limit_t(Structure): _fields_ = [ ("powerAC", c_int32_t), ## [in,out] power limit in milliwatts for the AC power source. ("powerDC", c_int32_t) ## [in,out] power limit in milliwatts for the DC power source. On input, ## this is ignored if the product does not have a battery. On output, ## this will be -1 if the product does not have a battery. ] ############################################################################### ## @brief Energy threshold ## ## @details ## - . class zes_energy_threshold_t(Structure): _fields_ = [ ("enable", ze_bool_t), ## [in,out] Indicates if the energy threshold is enabled. ("threshold", c_double), ## [in,out] The energy threshold in Joules. Will be 0.0 if no threshold ## has been set. ("processId", c_ulong) ## [in,out] The host process ID that set the energy threshold. Will be ## 0xFFFFFFFF if no threshold has been set. ] ############################################################################### ## @brief PSU voltage status class zes_psu_voltage_status_v(IntEnum): UNKNOWN = 0 ## The status of the power supply voltage controllers cannot be ## determined NORMAL = 1 ## No unusual voltages have been detected OVER = 2 ## Over-voltage has occurred UNDER = 3 ## Under-voltage has occurred class zes_psu_voltage_status_t(c_int): def __str__(self): return str(zes_psu_voltage_status_v(self.value)) ############################################################################### ## @brief Static properties of the power supply class zes_psu_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("onSubdevice", ze_bool_t), ## [out] True if the resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("haveFan", ze_bool_t), ## [out] True if the power supply has a fan ("ampLimit", c_int32_t) ## [out] The maximum electrical current in milliamperes that can be ## drawn. A value of -1 indicates that this property cannot be ## determined. ] ############################################################################### ## @brief Dynamic state of the power supply class zes_psu_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("voltStatus", zes_psu_voltage_status_t), ## [out] The current PSU voltage status ("fanFailed", ze_bool_t), ## [out] Indicates if the fan has failed ("temperature", c_int32_t), ## [out] Read the current heatsink temperature in degrees Celsius. A ## value of -1 indicates that this property cannot be determined. ("current", c_int32_t) ## [out] The amps being drawn in milliamperes. A value of -1 indicates ## that this property cannot be determined. ] ############################################################################### ## @brief RAS error type class zes_ras_error_type_v(IntEnum): CORRECTABLE = 0 ## Errors were corrected by hardware UNCORRECTABLE = 1 ## Error were not corrected class zes_ras_error_type_t(c_int): def __str__(self): return str(zes_ras_error_type_v(self.value)) ############################################################################### ## @brief RAS error categories class zes_ras_error_cat_v(IntEnum): RESET = 0 ## The number of accelerator engine resets attempted by the driver PROGRAMMING_ERRORS = 1 ## The number of hardware exceptions generated by the way workloads have ## programmed the hardware DRIVER_ERRORS = 2 ## The number of low level driver communication errors have occurred COMPUTE_ERRORS = 3 ## The number of errors that have occurred in the compute accelerator ## hardware NON_COMPUTE_ERRORS = 4 ## The number of errors that have occurred in the fixed-function ## accelerator hardware CACHE_ERRORS = 5 ## The number of errors that have occurred in caches (L1/L3/register ## file/shared local memory/sampler) DISPLAY_ERRORS = 6 ## The number of errors that have occurred in the display class zes_ras_error_cat_t(c_int): def __str__(self): return str(zes_ras_error_cat_v(self.value)) ############################################################################### ## @brief The maximum number of categories ZES_MAX_RAS_ERROR_CATEGORY_COUNT = 7 ############################################################################### ## @brief RAS properties class zes_ras_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("type", zes_ras_error_type_t), ## [out] The type of RAS error ("onSubdevice", ze_bool_t), ## [out] True if the resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong) ## [out] If onSubdevice is true, this gives the ID of the sub-device ] ############################################################################### ## @brief RAS error details class zes_ras_state_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("category", c_ulonglong * ZES_MAX_RAS_ERROR_CATEGORY_COUNT) ## [in][out] Breakdown of error by category ] ############################################################################### ## @brief RAS error configuration - thresholds used for triggering RAS events ## (::ZES_EVENT_TYPE_FLAG_RAS_CORRECTABLE_ERRORS, ## ::ZES_EVENT_TYPE_FLAG_RAS_UNCORRECTABLE_ERRORS) ## ## @details ## - The driver maintains a total counter which is updated every time a ## hardware block covered by the corresponding RAS error set notifies ## that an error has occurred. When this total count goes above the ## totalThreshold specified below, a RAS event is triggered. ## - The driver also maintains a counter for each category of RAS error ## (see ::zes_ras_state_t for a breakdown). Each time a hardware block of ## that category notifies that an error has occurred, that corresponding ## category counter is updated. When it goes above the threshold ## specified in detailedThresholds, a RAS event is triggered. class zes_ras_config_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("totalThreshold", c_ulonglong), ## [in,out] If the total RAS errors exceeds this threshold, the event ## will be triggered. A value of 0ULL disables triggering the event based ## on the total counter. ("detailedThresholds", zes_ras_state_t) ## [in,out] If the RAS errors for each category exceed the threshold for ## that category, the event will be triggered. A value of 0ULL will ## disable an event being triggered for that category. ] ############################################################################### ## @brief Scheduler mode class zes_sched_mode_v(IntEnum): TIMEOUT = 0 ## Multiple applications or contexts are submitting work to the hardware. ## When higher priority work arrives, the scheduler attempts to pause the ## current executing work within some timeout interval, then submits the ## other work. TIMESLICE = 1 ## The scheduler attempts to fairly timeslice hardware execution time ## between multiple contexts submitting work to the hardware ## concurrently. EXCLUSIVE = 2 ## Any application or context can run indefinitely on the hardware ## without being preempted or terminated. All pending work for other ## contexts must wait until the running context completes with no further ## submitted work. COMPUTE_UNIT_DEBUG = 3 ## [DEPRECATED] No longer supported. class zes_sched_mode_t(c_int): def __str__(self): return str(zes_sched_mode_v(self.value)) ############################################################################### ## @brief Properties related to scheduler component class zes_sched_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("onSubdevice", ze_bool_t), ## [out] True if this resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("canControl", ze_bool_t), ## [out] Software can change the scheduler component configuration ## assuming the user has permissions. ("engines", zes_engine_type_flags_t), ## [out] Bitfield of accelerator engine types that are managed by this ## scheduler component. Note that there can be more than one scheduler ## component for the same type of accelerator engine. ("supportedModes", c_ulong) ## [out] Bitfield of scheduler modes that can be configured for this ## scheduler component (bitfield of 1<<::zes_sched_mode_t). ] ############################################################################### ## @brief Disable forward progress guard timeout. ZES_SCHED_WATCHDOG_DISABLE = (~(0ULL)) ############################################################################### ## @brief Configuration for timeout scheduler mode (::ZES_SCHED_MODE_TIMEOUT) class zes_sched_timeout_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("watchdogTimeout", c_ulonglong) ## [in,out] The maximum time in microseconds that the scheduler will wait ## for a batch of work submitted to a hardware engine to complete or to ## be preempted so as to run another context. ## If this time is exceeded, the hardware engine is reset and the context terminated. ## If set to ::ZES_SCHED_WATCHDOG_DISABLE, a running workload can run as ## long as it wants without being terminated, but preemption attempts to ## run other contexts are permitted but not enforced. ] ############################################################################### ## @brief Configuration for timeslice scheduler mode ## (::ZES_SCHED_MODE_TIMESLICE) class zes_sched_timeslice_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("interval", c_ulonglong), ## [in,out] The average interval in microseconds that a submission for a ## context will run on a hardware engine before being preempted out to ## run a pending submission for another context. ("yieldTimeout", c_ulonglong) ## [in,out] The maximum time in microseconds that the scheduler will wait ## to preempt a workload running on an engine before deciding to reset ## the hardware engine and terminating the associated context. ] ############################################################################### ## @brief Standby hardware components class zes_standby_type_v(IntEnum): GLOBAL = 0 ## Control the overall standby policy of the device/sub-device class zes_standby_type_t(c_int): def __str__(self): return str(zes_standby_type_v(self.value)) ############################################################################### ## @brief Standby hardware component properties class zes_standby_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("type", zes_standby_type_t), ## [out] Which standby hardware component this controls ("onSubdevice", ze_bool_t), ## [out] True if the resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong) ## [out] If onSubdevice is true, this gives the ID of the sub-device ] ############################################################################### ## @brief Standby promotion modes class zes_standby_promo_mode_v(IntEnum): DEFAULT = 0 ## Best compromise between performance and energy savings. NEVER = 1 ## The device/component will never shutdown. This can improve performance ## but uses more energy. class zes_standby_promo_mode_t(c_int): def __str__(self): return str(zes_standby_promo_mode_v(self.value)) ############################################################################### ## @brief Temperature sensors class zes_temp_sensors_v(IntEnum): GLOBAL = 0 ## The maximum temperature across all device sensors GPU = 1 ## The maximum temperature across all sensors in the GPU MEMORY = 2 ## The maximum temperature across all sensors in the local memory GLOBAL_MIN = 3 ## The minimum temperature across all device sensors GPU_MIN = 4 ## The minimum temperature across all sensors in the GPU MEMORY_MIN = 5 ## The minimum temperature across all sensors in the local device memory GPU_BOARD = 6 ## The maximum temperature across all sensors in the GPU Board GPU_BOARD_MIN = 7 ## The minimum temperature across all sensors in the GPU Board VOLTAGE_REGULATOR = 8 ## The maximum temperature across all sensors in the Voltage Regulator class zes_temp_sensors_t(c_int): def __str__(self): return str(zes_temp_sensors_v(self.value)) ############################################################################### ## @brief Temperature sensor properties class zes_temp_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("type", zes_temp_sensors_t), ## [out] Which part of the device the temperature sensor measures ("onSubdevice", ze_bool_t), ## [out] True if the resource is located on a sub-device; false means ## that the resource is on the device of the calling Sysman handle ("subdeviceId", c_ulong), ## [out] If onSubdevice is true, this gives the ID of the sub-device ("maxTemperature", c_double), ## [out] Will contain the maximum temperature for the specific device in ## degrees Celsius. ("isCriticalTempSupported", ze_bool_t), ## [out] Indicates if the critical temperature event ## ::ZES_EVENT_TYPE_FLAG_TEMP_CRITICAL is supported ("isThreshold1Supported", ze_bool_t), ## [out] Indicates if the temperature threshold 1 event ## ::ZES_EVENT_TYPE_FLAG_TEMP_THRESHOLD1 is supported ("isThreshold2Supported", ze_bool_t) ## [out] Indicates if the temperature threshold 2 event ## ::ZES_EVENT_TYPE_FLAG_TEMP_THRESHOLD2 is supported ] ############################################################################### ## @brief Temperature sensor threshold class zes_temp_threshold_t(Structure): _fields_ = [ ("enableLowToHigh", ze_bool_t), ## [in,out] Trigger an event when the temperature crosses from below the ## threshold to above. ("enableHighToLow", ze_bool_t), ## [in,out] Trigger an event when the temperature crosses from above the ## threshold to below. ("threshold", c_double) ## [in,out] The threshold in degrees Celsius. ] ############################################################################### ## @brief Temperature configuration - which events should be triggered and the ## trigger conditions. class zes_temp_config_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("enableCritical", ze_bool_t), ## [in,out] Indicates if event ::ZES_EVENT_TYPE_FLAG_TEMP_CRITICAL should ## be triggered by the driver. ("threshold1", zes_temp_threshold_t), ## [in,out] Configuration controlling if and when event ## ::ZES_EVENT_TYPE_FLAG_TEMP_THRESHOLD1 should be triggered by the ## driver. ("threshold2", zes_temp_threshold_t) ## [in,out] Configuration controlling if and when event ## ::ZES_EVENT_TYPE_FLAG_TEMP_THRESHOLD2 should be triggered by the ## driver. ] ############################################################################### ## @brief Power Limits Extension Name ZES_POWER_LIMITS_EXT_NAME = "ZES_extension_power_limits" ############################################################################### ## @brief Power Limits Extension Version(s) class zes_power_limits_ext_version_v(IntEnum): _1_0 = ZE_MAKE_VERSION( 1, 0 ) ## version 1.0 CURRENT = ZE_MAKE_VERSION( 1, 0 ) ## latest known version class zes_power_limits_ext_version_t(c_int): def __str__(self): return str(zes_power_limits_ext_version_v(self.value)) ############################################################################### ## @brief Device power/current limit descriptor. class zes_power_limit_ext_desc_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("level", zes_power_level_t), ## [in,out] duration type over which the power draw is measured, i.e. ## sustained, burst, peak, or critical. ("source", zes_power_source_t), ## [out] source of power used by the system, i.e. AC or DC. ("limitUnit", zes_limit_unit_t), ## [out] unit used for specifying limit, i.e. current units (milliamps) ## or power units (milliwatts). ("enabledStateLocked", ze_bool_t), ## [out] indicates if the power limit state (enabled/ignored) can be set ## (false) or is locked (true). ("enabled", ze_bool_t), ## [in,out] indicates if the limit is enabled (true) or ignored (false). ## If enabledStateIsLocked is True, this value is ignored. ("intervalValueLocked", ze_bool_t), ## [out] indicates if the interval can be modified (false) or is fixed ## (true). ("interval", c_int32_t), ## [in,out] power averaging window in milliseconds. If ## intervalValueLocked is true, this value is ignored. ("limitValueLocked", ze_bool_t), ## [out] indicates if the limit can be set (false) or if the limit is ## fixed (true). ("limit", c_int32_t) ## [in,out] limit value. If limitValueLocked is true, this value is ## ignored. The value should be provided in the unit specified by ## limitUnit. ] ############################################################################### ## @brief Extension properties related to device power settings ## ## @details ## - This structure may be returned from ::zesPowerGetProperties via the ## `pNext` member of ::zes_power_properties_t. ## - This structure may also be returned from ::zesPowerGetProperties via ## the `pNext` member of ::zes_power_ext_properties_t ## - Used for determining the power domain level, i.e. card-level v/s ## package-level v/s stack-level & the factory default power limits. class zes_power_ext_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("domain", zes_power_domain_t), ## [out] domain that the power limit belongs to. ("defaultLimit", POINTER(zes_power_limit_ext_desc_t)) ## [out] the factory default limit of the part. ] ############################################################################### ## @brief Engine Activity Extension Name ZES_ENGINE_ACTIVITY_EXT_NAME = "ZES_extension_engine_activity" ############################################################################### ## @brief Engine Activity Extension Version(s) class zes_engine_activity_ext_version_v(IntEnum): _1_0 = ZE_MAKE_VERSION( 1, 0 ) ## version 1.0 CURRENT = ZE_MAKE_VERSION( 1, 0 ) ## latest known version class zes_engine_activity_ext_version_t(c_int): def __str__(self): return str(zes_engine_activity_ext_version_v(self.value)) ############################################################################### ## @brief Extension properties related to Engine Groups ## ## @details ## - This structure may be passed to ::zesEngineGetProperties by having the ## pNext member of ::zes_engine_properties_t point at this struct. ## - Used for SRIOV per Virtual Function device utilization by ## ::zes_engine_group_t class zes_engine_ext_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("countOfVirtualFunctionInstance", c_ulong) ## [out] Number of Virtual Function(VF) instances associated with engine ## to monitor the utilization of hardware across all Virtual Function ## from a Physical Function (PF) instance. ## These VF-by-VF views should provide engine group and individual engine ## level granularity. ## This count represents the number of VF instances that are actively ## using the resource represented by the engine handle. ] ############################################################################### ## @brief RAS Get State Extension Name ZES_RAS_GET_STATE_EXP_NAME = "ZES_extension_ras_state" ############################################################################### ## @brief RAS Get State Extension Version(s) class zes_ras_state_exp_version_v(IntEnum): _1_0 = ZE_MAKE_VERSION( 1, 0 ) ## version 1.0 CURRENT = ZE_MAKE_VERSION( 1, 0 ) ## latest known version class zes_ras_state_exp_version_t(c_int): def __str__(self): return str(zes_ras_state_exp_version_v(self.value)) ############################################################################### ## @brief RAS error categories class zes_ras_error_category_exp_v(IntEnum): RESET = 0 ## The number of accelerator engine resets attempted by the driver PROGRAMMING_ERRORS = 1 ## The number of hardware exceptions generated by the way workloads have ## programmed the hardware DRIVER_ERRORS = 2 ## The number of low level driver communication errors have occurred COMPUTE_ERRORS = 3 ## The number of errors that have occurred in the compute accelerator ## hardware NON_COMPUTE_ERRORS = 4 ## The number of errors that have occurred in the fixed-function ## accelerator hardware CACHE_ERRORS = 5 ## The number of errors that have occurred in caches (L1/L3/register ## file/shared local memory/sampler) DISPLAY_ERRORS = 6 ## The number of errors that have occurred in the display MEMORY_ERRORS = 7 ## The number of errors that have occurred in Memory SCALE_ERRORS = 8 ## The number of errors that have occurred in Scale Fabric L3FABRIC_ERRORS = 9 ## The number of errors that have occurred in L3 Fabric class zes_ras_error_category_exp_t(c_int): def __str__(self): return str(zes_ras_error_category_exp_v(self.value)) ############################################################################### ## @brief Extension structure for providing RAS error counters for different ## error sets class zes_ras_state_exp_t(Structure): _fields_ = [ ("category", zes_ras_error_category_exp_t), ## [out] category for which error counter is provided. ("errorCounter", c_ulonglong) ## [out] Current value of RAS counter for specific error category. ] ############################################################################### ## @brief Memory State Extension Name ZES_MEM_PAGE_OFFLINE_STATE_EXP_NAME = "ZES_extension_mem_state" ############################################################################### ## @brief Memory State Extension Version(s) class zes_mem_page_offline_state_exp_version_v(IntEnum): _1_0 = ZE_MAKE_VERSION( 1, 0 ) ## version 1.0 CURRENT = ZE_MAKE_VERSION( 1, 0 ) ## latest known version class zes_mem_page_offline_state_exp_version_t(c_int): def __str__(self): return str(zes_mem_page_offline_state_exp_version_v(self.value)) ############################################################################### ## @brief Extension properties for Memory State ## ## @details ## - This structure may be returned from ::zesMemoryGetState via the ## `pNext` member of ::zes_mem_state_t ## - These additional parameters get Memory Page Offline Metrics class zes_mem_page_offline_state_exp_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("memoryPageOffline", c_ulong), ## [out] Returns the number of Memory Pages Offline ("maxMemoryPageOffline", c_ulong) ## [out] Returns the Allowed Memory Pages Offline ] ############################################################################### ## @brief Memory Bandwidth Counter Valid Bits Extension Name ZES_MEMORY_BANDWIDTH_COUNTER_BITS_EXP_PROPERTIES_NAME = "ZES_extension_mem_bandwidth_counter_bits_properties" ############################################################################### ## @brief Memory Bandwidth Counter Valid Bits Extension Version(s) class zes_mem_bandwidth_counter_bits_exp_version_v(IntEnum): _1_0 = ZE_MAKE_VERSION( 1, 0 ) ## version 1.0 CURRENT = ZE_MAKE_VERSION( 1, 0 ) ## latest known version class zes_mem_bandwidth_counter_bits_exp_version_t(c_int): def __str__(self): return str(zes_mem_bandwidth_counter_bits_exp_version_v(self.value)) ############################################################################### ## @brief Extension properties for reporting valid bit count for memory ## bandwidth counter value ## ## @details ## - Number of valid read and write counter bits of memory bandwidth ## - This structure may be returned from ::zesMemoryGetProperties via the ## `pNext` member of ::zes_mem_properties_t. ## - Used for denoting number of valid bits in the counter value returned ## in ::zes_mem_bandwidth_t. class zes_mem_bandwidth_counter_bits_exp_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("validBitsCount", c_ulong) ## [out] Returns the number of valid bits in the counter values ] ############################################################################### ## @brief Power Domain Properties Name ZES_POWER_DOMAIN_PROPERTIES_EXP_NAME = "ZES_extension_power_domain_properties" ############################################################################### ## @brief Power Domain Properties Extension Version(s) class zes_power_domain_properties_exp_version_v(IntEnum): _1_0 = ZE_MAKE_VERSION( 1, 0 ) ## version 1.0 CURRENT = ZE_MAKE_VERSION( 1, 0 ) ## latest known version class zes_power_domain_properties_exp_version_t(c_int): def __str__(self): return str(zes_power_domain_properties_exp_version_v(self.value)) ############################################################################### ## @brief Extension structure for providing power domain information associated ## with a power handle ## ## @details ## - This structure may be returned from ::zesPowerGetProperties via the ## `pNext` member of ::zes_power_properties_t. ## - Used for associating a power handle with a power domain. class zes_power_domain_exp_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("powerDomain", zes_power_domain_t) ## [out] Power domain associated with the power handle. ] ############################################################################### ## @brief Firmware security version ZES_FIRMWARE_SECURITY_VERSION_EXP_NAME = "ZES_experimental_firmware_security_version" ############################################################################### ## @brief Firmware security version Extension Version(s) class zes_firmware_security_exp_version_v(IntEnum): _1_0 = ZE_MAKE_VERSION( 1, 0 ) ## version 1.0 CURRENT = ZE_MAKE_VERSION( 1, 0 ) ## latest known version class zes_firmware_security_exp_version_t(c_int): def __str__(self): return str(zes_firmware_security_exp_version_v(self.value)) ############################################################################### ## @brief Sysman Device Mapping Extension Name ZES_SYSMAN_DEVICE_MAPPING_EXP_NAME = "ZES_experimental_sysman_device_mapping" ############################################################################### ## @brief Sysman Device Mapping Extension Version(s) class zes_sysman_device_mapping_exp_version_v(IntEnum): _1_0 = ZE_MAKE_VERSION( 1, 0 ) ## version 1.0 CURRENT = ZE_MAKE_VERSION( 1, 0 ) ## latest known version class zes_sysman_device_mapping_exp_version_t(c_int): def __str__(self): return str(zes_sysman_device_mapping_exp_version_v(self.value)) ############################################################################### ## @brief Sub Device Properties class zes_subdevice_exp_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("subdeviceId", c_ulong), ## [out] this gives the ID of the sub device ("uuid", zes_uuid_t) ## [out] universal unique identifier of the sub device. ] ############################################################################### ## @brief Virtual Function Management Extension Name ZES_VIRTUAL_FUNCTION_MANAGEMENT_EXP_NAME = "ZES_experimental_virtual_function_management" ############################################################################### ## @brief Virtual Function Management Extension Version(s) class zes_vf_management_exp_version_v(IntEnum): _1_0 = ZE_MAKE_VERSION( 1, 0 ) ## version 1.0 (deprecated) _1_1 = ZE_MAKE_VERSION( 1, 1 ) ## version 1.1 (deprecated) _1_2 = ZE_MAKE_VERSION( 1, 2 ) ## version 1.2 CURRENT = ZE_MAKE_VERSION( 1, 2 ) ## latest known version class zes_vf_management_exp_version_t(c_int): def __str__(self): return str(zes_vf_management_exp_version_v(self.value)) ############################################################################### ## @brief Virtual function memory types (deprecated) class zes_vf_info_mem_type_exp_flags_v(IntEnum): MEM_TYPE_SYSTEM = ZE_BIT(0) ## System memory MEM_TYPE_DEVICE = ZE_BIT(1) ## Device local memory class zes_vf_info_mem_type_exp_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Virtual function utilization flag bit fields (deprecated) class zes_vf_info_util_exp_flags_v(IntEnum): INFO_NONE = ZE_BIT(0) ## No info associated with virtual function INFO_MEM_CPU = ZE_BIT(1) ## System memory utilization associated with virtual function INFO_MEM_GPU = ZE_BIT(2) ## Device memory utilization associated with virtual function INFO_ENGINE = ZE_BIT(3) ## Engine utilization associated with virtual function class zes_vf_info_util_exp_flags_t(c_int): def __str__(self): return hex(self.value) ############################################################################### ## @brief Virtual function management properties (deprecated) class zes_vf_exp_properties_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("address", zes_pci_address_t), ## [out] Virtual function BDF address ("uuid", zes_uuid_t), ## [out] universal unique identifier of the device ("flags", zes_vf_info_util_exp_flags_t) ## [out] utilization flags available. May be 0 or a valid combination of ## ::zes_vf_info_util_exp_flag_t. ] ############################################################################### ## @brief Provides memory utilization values for a virtual function (deprecated) class zes_vf_util_mem_exp_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("memTypeFlags", zes_vf_info_mem_type_exp_flags_t), ## [out] Memory type flags. ("free", c_ulonglong), ## [out] Free memory size in bytes. ("size", c_ulonglong), ## [out] Total allocatable memory in bytes. ("timestamp", c_ulonglong) ## [out] Wall clock time from VF when value was sampled. ] ############################################################################### ## @brief Provides engine utilization values for a virtual function (deprecated) class zes_vf_util_engine_exp_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("type", zes_engine_group_t), ## [out] The engine group. ("activeCounterValue", c_ulonglong), ## [out] Represents active counter. ("samplingCounterValue", c_ulonglong), ## [out] Represents counter value when activeCounterValue was sampled. ("timestamp", c_ulonglong) ## [out] Wall clock time when the activeCounterValue was sampled. ] ############################################################################### ## @brief Virtual function management capabilities (deprecated) class zes_vf_exp_capabilities_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("address", zes_pci_address_t), ## [out] Virtual function BDF address ("vfDeviceMemSize", c_ulong), ## [out] Virtual function memory size in kilo bytes ("vfID", c_ulong) ## [out] Virtual Function ID ] ############################################################################### ## @brief Virtual function management capabilities class zes_vf_exp2_capabilities_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in,out][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("address", zes_pci_address_t), ## [out] Virtual function BDF address ("vfDeviceMemSize", c_ulonglong), ## [out] Virtual function memory size in bytes ("vfID", c_ulong) ## [out] Virtual Function ID ] ############################################################################### ## @brief Provides memory utilization values for a virtual function class zes_vf_util_mem_exp2_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("vfMemLocation", zes_mem_loc_t), ## [out] Location of this memory (system, device) ("vfMemUtilized", c_ulonglong) ## [out] Utilized memory size in bytes. ] ############################################################################### ## @brief Provides engine utilization values for a virtual function ## ## @details ## - Percent utilization is calculated by taking two snapshots (s1, s2) and ## using the equation: %util = (s2.activeCounterValue - ## s1.activeCounterValue) / (s2.samplingCounterValue - ## s1.samplingCounterValue) class zes_vf_util_engine_exp2_t(Structure): _fields_ = [ ("stype", zes_structure_type_t), ## [in] type of this structure ("pNext", c_void_p), ## [in][optional] must be null or a pointer to an extension-specific ## structure (i.e. contains stype and pNext). ("vfEngineType", zes_engine_group_t), ## [out] The engine group. ("activeCounterValue", c_ulonglong), ## [out] Represents active counter. ("samplingCounterValue", c_ulonglong) ## [out] Represents counter value when activeCounterValue was sampled. ## Refer to the formulae above for calculating the utilization percent ] ############################################################################### __use_win_types = "Windows" == platform.uname()[0] ############################################################################### ## @brief Function-pointer for zesInit if __use_win_types: _zesInit_t = WINFUNCTYPE( ze_result_t, zes_init_flags_t ) else: _zesInit_t = CFUNCTYPE( ze_result_t, zes_init_flags_t ) ############################################################################### ## @brief Table of Global functions pointers class _zes_global_dditable_t(Structure): _fields_ = [ ("pfnInit", c_void_p) ## _zesInit_t ] ############################################################################### ## @brief Function-pointer for zesDeviceGetProperties if __use_win_types: _zesDeviceGetProperties_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_device_properties_t) ) else: _zesDeviceGetProperties_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_device_properties_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceGetState if __use_win_types: _zesDeviceGetState_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_device_state_t) ) else: _zesDeviceGetState_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_device_state_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceReset if __use_win_types: _zesDeviceReset_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, ze_bool_t ) else: _zesDeviceReset_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, ze_bool_t ) ############################################################################### ## @brief Function-pointer for zesDeviceProcessesGetState if __use_win_types: _zesDeviceProcessesGetState_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_process_state_t) ) else: _zesDeviceProcessesGetState_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_process_state_t) ) ############################################################################### ## @brief Function-pointer for zesDevicePciGetProperties if __use_win_types: _zesDevicePciGetProperties_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_pci_properties_t) ) else: _zesDevicePciGetProperties_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_pci_properties_t) ) ############################################################################### ## @brief Function-pointer for zesDevicePciGetState if __use_win_types: _zesDevicePciGetState_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_pci_state_t) ) else: _zesDevicePciGetState_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_pci_state_t) ) ############################################################################### ## @brief Function-pointer for zesDevicePciGetBars if __use_win_types: _zesDevicePciGetBars_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_pci_bar_properties_t) ) else: _zesDevicePciGetBars_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_pci_bar_properties_t) ) ############################################################################### ## @brief Function-pointer for zesDevicePciGetStats if __use_win_types: _zesDevicePciGetStats_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_pci_stats_t) ) else: _zesDevicePciGetStats_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_pci_stats_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumDiagnosticTestSuites if __use_win_types: _zesDeviceEnumDiagnosticTestSuites_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_diag_handle_t) ) else: _zesDeviceEnumDiagnosticTestSuites_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_diag_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumEngineGroups if __use_win_types: _zesDeviceEnumEngineGroups_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_engine_handle_t) ) else: _zesDeviceEnumEngineGroups_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_engine_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEventRegister if __use_win_types: _zesDeviceEventRegister_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, zes_event_type_flags_t ) else: _zesDeviceEventRegister_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, zes_event_type_flags_t ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumFabricPorts if __use_win_types: _zesDeviceEnumFabricPorts_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_fabric_port_handle_t) ) else: _zesDeviceEnumFabricPorts_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_fabric_port_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumFans if __use_win_types: _zesDeviceEnumFans_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_fan_handle_t) ) else: _zesDeviceEnumFans_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_fan_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumFirmwares if __use_win_types: _zesDeviceEnumFirmwares_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_firmware_handle_t) ) else: _zesDeviceEnumFirmwares_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_firmware_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumFrequencyDomains if __use_win_types: _zesDeviceEnumFrequencyDomains_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_freq_handle_t) ) else: _zesDeviceEnumFrequencyDomains_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_freq_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumLeds if __use_win_types: _zesDeviceEnumLeds_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_led_handle_t) ) else: _zesDeviceEnumLeds_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_led_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumMemoryModules if __use_win_types: _zesDeviceEnumMemoryModules_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_mem_handle_t) ) else: _zesDeviceEnumMemoryModules_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_mem_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumPerformanceFactorDomains if __use_win_types: _zesDeviceEnumPerformanceFactorDomains_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_perf_handle_t) ) else: _zesDeviceEnumPerformanceFactorDomains_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_perf_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumPowerDomains if __use_win_types: _zesDeviceEnumPowerDomains_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_pwr_handle_t) ) else: _zesDeviceEnumPowerDomains_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_pwr_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceGetCardPowerDomain if __use_win_types: _zesDeviceGetCardPowerDomain_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_pwr_handle_t) ) else: _zesDeviceGetCardPowerDomain_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_pwr_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumPsus if __use_win_types: _zesDeviceEnumPsus_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_psu_handle_t) ) else: _zesDeviceEnumPsus_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_psu_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumRasErrorSets if __use_win_types: _zesDeviceEnumRasErrorSets_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_ras_handle_t) ) else: _zesDeviceEnumRasErrorSets_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_ras_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumSchedulers if __use_win_types: _zesDeviceEnumSchedulers_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_sched_handle_t) ) else: _zesDeviceEnumSchedulers_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_sched_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumStandbyDomains if __use_win_types: _zesDeviceEnumStandbyDomains_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_standby_handle_t) ) else: _zesDeviceEnumStandbyDomains_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_standby_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumTemperatureSensors if __use_win_types: _zesDeviceEnumTemperatureSensors_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_temp_handle_t) ) else: _zesDeviceEnumTemperatureSensors_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_temp_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEccAvailable if __use_win_types: _zesDeviceEccAvailable_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(ze_bool_t) ) else: _zesDeviceEccAvailable_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(ze_bool_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEccConfigurable if __use_win_types: _zesDeviceEccConfigurable_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(ze_bool_t) ) else: _zesDeviceEccConfigurable_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(ze_bool_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceGetEccState if __use_win_types: _zesDeviceGetEccState_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_device_ecc_properties_t) ) else: _zesDeviceGetEccState_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_device_ecc_properties_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceSetEccState if __use_win_types: _zesDeviceSetEccState_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_device_ecc_desc_t), POINTER(zes_device_ecc_properties_t) ) else: _zesDeviceSetEccState_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_device_ecc_desc_t), POINTER(zes_device_ecc_properties_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceGet if __use_win_types: _zesDeviceGet_t = WINFUNCTYPE( ze_result_t, zes_driver_handle_t, POINTER(c_ulong), POINTER(zes_device_handle_t) ) else: _zesDeviceGet_t = CFUNCTYPE( ze_result_t, zes_driver_handle_t, POINTER(c_ulong), POINTER(zes_device_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceSetOverclockWaiver if __use_win_types: _zesDeviceSetOverclockWaiver_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t ) else: _zesDeviceSetOverclockWaiver_t = CFUNCTYPE( ze_result_t, zes_device_handle_t ) ############################################################################### ## @brief Function-pointer for zesDeviceGetOverclockDomains if __use_win_types: _zesDeviceGetOverclockDomains_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong) ) else: _zesDeviceGetOverclockDomains_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong) ) ############################################################################### ## @brief Function-pointer for zesDeviceGetOverclockControls if __use_win_types: _zesDeviceGetOverclockControls_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, zes_overclock_domain_t, POINTER(c_ulong) ) else: _zesDeviceGetOverclockControls_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, zes_overclock_domain_t, POINTER(c_ulong) ) ############################################################################### ## @brief Function-pointer for zesDeviceResetOverclockSettings if __use_win_types: _zesDeviceResetOverclockSettings_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, ze_bool_t ) else: _zesDeviceResetOverclockSettings_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, ze_bool_t ) ############################################################################### ## @brief Function-pointer for zesDeviceReadOverclockState if __use_win_types: _zesDeviceReadOverclockState_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_overclock_mode_t), POINTER(ze_bool_t), POINTER(ze_bool_t), POINTER(zes_pending_action_t), POINTER(ze_bool_t) ) else: _zesDeviceReadOverclockState_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_overclock_mode_t), POINTER(ze_bool_t), POINTER(ze_bool_t), POINTER(zes_pending_action_t), POINTER(ze_bool_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumOverclockDomains if __use_win_types: _zesDeviceEnumOverclockDomains_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_overclock_handle_t) ) else: _zesDeviceEnumOverclockDomains_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_overclock_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceResetExt if __use_win_types: _zesDeviceResetExt_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_reset_properties_t) ) else: _zesDeviceResetExt_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(zes_reset_properties_t) ) ############################################################################### ## @brief Table of Device functions pointers class _zes_device_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesDeviceGetProperties_t ("pfnGetState", c_void_p), ## _zesDeviceGetState_t ("pfnReset", c_void_p), ## _zesDeviceReset_t ("pfnProcessesGetState", c_void_p), ## _zesDeviceProcessesGetState_t ("pfnPciGetProperties", c_void_p), ## _zesDevicePciGetProperties_t ("pfnPciGetState", c_void_p), ## _zesDevicePciGetState_t ("pfnPciGetBars", c_void_p), ## _zesDevicePciGetBars_t ("pfnPciGetStats", c_void_p), ## _zesDevicePciGetStats_t ("pfnEnumDiagnosticTestSuites", c_void_p), ## _zesDeviceEnumDiagnosticTestSuites_t ("pfnEnumEngineGroups", c_void_p), ## _zesDeviceEnumEngineGroups_t ("pfnEventRegister", c_void_p), ## _zesDeviceEventRegister_t ("pfnEnumFabricPorts", c_void_p), ## _zesDeviceEnumFabricPorts_t ("pfnEnumFans", c_void_p), ## _zesDeviceEnumFans_t ("pfnEnumFirmwares", c_void_p), ## _zesDeviceEnumFirmwares_t ("pfnEnumFrequencyDomains", c_void_p), ## _zesDeviceEnumFrequencyDomains_t ("pfnEnumLeds", c_void_p), ## _zesDeviceEnumLeds_t ("pfnEnumMemoryModules", c_void_p), ## _zesDeviceEnumMemoryModules_t ("pfnEnumPerformanceFactorDomains", c_void_p), ## _zesDeviceEnumPerformanceFactorDomains_t ("pfnEnumPowerDomains", c_void_p), ## _zesDeviceEnumPowerDomains_t ("pfnGetCardPowerDomain", c_void_p), ## _zesDeviceGetCardPowerDomain_t ("pfnEnumPsus", c_void_p), ## _zesDeviceEnumPsus_t ("pfnEnumRasErrorSets", c_void_p), ## _zesDeviceEnumRasErrorSets_t ("pfnEnumSchedulers", c_void_p), ## _zesDeviceEnumSchedulers_t ("pfnEnumStandbyDomains", c_void_p), ## _zesDeviceEnumStandbyDomains_t ("pfnEnumTemperatureSensors", c_void_p), ## _zesDeviceEnumTemperatureSensors_t ("pfnEccAvailable", c_void_p), ## _zesDeviceEccAvailable_t ("pfnEccConfigurable", c_void_p), ## _zesDeviceEccConfigurable_t ("pfnGetEccState", c_void_p), ## _zesDeviceGetEccState_t ("pfnSetEccState", c_void_p), ## _zesDeviceSetEccState_t ("pfnGet", c_void_p), ## _zesDeviceGet_t ("pfnSetOverclockWaiver", c_void_p), ## _zesDeviceSetOverclockWaiver_t ("pfnGetOverclockDomains", c_void_p), ## _zesDeviceGetOverclockDomains_t ("pfnGetOverclockControls", c_void_p), ## _zesDeviceGetOverclockControls_t ("pfnResetOverclockSettings", c_void_p), ## _zesDeviceResetOverclockSettings_t ("pfnReadOverclockState", c_void_p), ## _zesDeviceReadOverclockState_t ("pfnEnumOverclockDomains", c_void_p), ## _zesDeviceEnumOverclockDomains_t ("pfnResetExt", c_void_p) ## _zesDeviceResetExt_t ] ############################################################################### ## @brief Function-pointer for zesDeviceGetSubDevicePropertiesExp if __use_win_types: _zesDeviceGetSubDevicePropertiesExp_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_subdevice_exp_properties_t) ) else: _zesDeviceGetSubDevicePropertiesExp_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_subdevice_exp_properties_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumActiveVFExp if __use_win_types: _zesDeviceEnumActiveVFExp_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_vf_handle_t) ) else: _zesDeviceEnumActiveVFExp_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_vf_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDeviceEnumEnabledVFExp if __use_win_types: _zesDeviceEnumEnabledVFExp_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_vf_handle_t) ) else: _zesDeviceEnumEnabledVFExp_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, POINTER(c_ulong), POINTER(zes_vf_handle_t) ) ############################################################################### ## @brief Table of DeviceExp functions pointers class _zes_device_exp_dditable_t(Structure): _fields_ = [ ("pfnGetSubDevicePropertiesExp", c_void_p), ## _zesDeviceGetSubDevicePropertiesExp_t ("pfnEnumActiveVFExp", c_void_p), ## _zesDeviceEnumActiveVFExp_t ("pfnEnumEnabledVFExp", c_void_p) ## _zesDeviceEnumEnabledVFExp_t ] ############################################################################### ## @brief Function-pointer for zesDriverEventListen if __use_win_types: _zesDriverEventListen_t = WINFUNCTYPE( ze_result_t, ze_driver_handle_t, c_ulong, c_ulong, POINTER(zes_device_handle_t), POINTER(c_ulong), POINTER(zes_event_type_flags_t) ) else: _zesDriverEventListen_t = CFUNCTYPE( ze_result_t, ze_driver_handle_t, c_ulong, c_ulong, POINTER(zes_device_handle_t), POINTER(c_ulong), POINTER(zes_event_type_flags_t) ) ############################################################################### ## @brief Function-pointer for zesDriverEventListenEx if __use_win_types: _zesDriverEventListenEx_t = WINFUNCTYPE( ze_result_t, ze_driver_handle_t, c_ulonglong, c_ulong, POINTER(zes_device_handle_t), POINTER(c_ulong), POINTER(zes_event_type_flags_t) ) else: _zesDriverEventListenEx_t = CFUNCTYPE( ze_result_t, ze_driver_handle_t, c_ulonglong, c_ulong, POINTER(zes_device_handle_t), POINTER(c_ulong), POINTER(zes_event_type_flags_t) ) ############################################################################### ## @brief Function-pointer for zesDriverGet if __use_win_types: _zesDriverGet_t = WINFUNCTYPE( ze_result_t, POINTER(c_ulong), POINTER(zes_driver_handle_t) ) else: _zesDriverGet_t = CFUNCTYPE( ze_result_t, POINTER(c_ulong), POINTER(zes_driver_handle_t) ) ############################################################################### ## @brief Function-pointer for zesDriverGetExtensionProperties if __use_win_types: _zesDriverGetExtensionProperties_t = WINFUNCTYPE( ze_result_t, zes_driver_handle_t, POINTER(c_ulong), POINTER(zes_driver_extension_properties_t) ) else: _zesDriverGetExtensionProperties_t = CFUNCTYPE( ze_result_t, zes_driver_handle_t, POINTER(c_ulong), POINTER(zes_driver_extension_properties_t) ) ############################################################################### ## @brief Function-pointer for zesDriverGetExtensionFunctionAddress if __use_win_types: _zesDriverGetExtensionFunctionAddress_t = WINFUNCTYPE( ze_result_t, zes_driver_handle_t, c_char_p, POINTER(c_void_p) ) else: _zesDriverGetExtensionFunctionAddress_t = CFUNCTYPE( ze_result_t, zes_driver_handle_t, c_char_p, POINTER(c_void_p) ) ############################################################################### ## @brief Table of Driver functions pointers class _zes_driver_dditable_t(Structure): _fields_ = [ ("pfnEventListen", c_void_p), ## _zesDriverEventListen_t ("pfnEventListenEx", c_void_p), ## _zesDriverEventListenEx_t ("pfnGet", c_void_p), ## _zesDriverGet_t ("pfnGetExtensionProperties", c_void_p), ## _zesDriverGetExtensionProperties_t ("pfnGetExtensionFunctionAddress", c_void_p) ## _zesDriverGetExtensionFunctionAddress_t ] ############################################################################### ## @brief Function-pointer for zesDriverGetDeviceByUuidExp if __use_win_types: _zesDriverGetDeviceByUuidExp_t = WINFUNCTYPE( ze_result_t, zes_driver_handle_t, zes_uuid_t, POINTER(zes_device_handle_t), POINTER(ze_bool_t), POINTER(c_ulong) ) else: _zesDriverGetDeviceByUuidExp_t = CFUNCTYPE( ze_result_t, zes_driver_handle_t, zes_uuid_t, POINTER(zes_device_handle_t), POINTER(ze_bool_t), POINTER(c_ulong) ) ############################################################################### ## @brief Table of DriverExp functions pointers class _zes_driver_exp_dditable_t(Structure): _fields_ = [ ("pfnGetDeviceByUuidExp", c_void_p) ## _zesDriverGetDeviceByUuidExp_t ] ############################################################################### ## @brief Function-pointer for zesOverclockGetDomainProperties if __use_win_types: _zesOverclockGetDomainProperties_t = WINFUNCTYPE( ze_result_t, zes_overclock_handle_t, POINTER(zes_overclock_properties_t) ) else: _zesOverclockGetDomainProperties_t = CFUNCTYPE( ze_result_t, zes_overclock_handle_t, POINTER(zes_overclock_properties_t) ) ############################################################################### ## @brief Function-pointer for zesOverclockGetDomainVFProperties if __use_win_types: _zesOverclockGetDomainVFProperties_t = WINFUNCTYPE( ze_result_t, zes_overclock_handle_t, POINTER(zes_vf_property_t) ) else: _zesOverclockGetDomainVFProperties_t = CFUNCTYPE( ze_result_t, zes_overclock_handle_t, POINTER(zes_vf_property_t) ) ############################################################################### ## @brief Function-pointer for zesOverclockGetDomainControlProperties if __use_win_types: _zesOverclockGetDomainControlProperties_t = WINFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, POINTER(zes_control_property_t) ) else: _zesOverclockGetDomainControlProperties_t = CFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, POINTER(zes_control_property_t) ) ############################################################################### ## @brief Function-pointer for zesOverclockGetControlCurrentValue if __use_win_types: _zesOverclockGetControlCurrentValue_t = WINFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, POINTER(c_double) ) else: _zesOverclockGetControlCurrentValue_t = CFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, POINTER(c_double) ) ############################################################################### ## @brief Function-pointer for zesOverclockGetControlPendingValue if __use_win_types: _zesOverclockGetControlPendingValue_t = WINFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, POINTER(c_double) ) else: _zesOverclockGetControlPendingValue_t = CFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, POINTER(c_double) ) ############################################################################### ## @brief Function-pointer for zesOverclockSetControlUserValue if __use_win_types: _zesOverclockSetControlUserValue_t = WINFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, c_double, POINTER(zes_pending_action_t) ) else: _zesOverclockSetControlUserValue_t = CFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, c_double, POINTER(zes_pending_action_t) ) ############################################################################### ## @brief Function-pointer for zesOverclockGetControlState if __use_win_types: _zesOverclockGetControlState_t = WINFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, POINTER(zes_control_state_t), POINTER(zes_pending_action_t) ) else: _zesOverclockGetControlState_t = CFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_overclock_control_t, POINTER(zes_control_state_t), POINTER(zes_pending_action_t) ) ############################################################################### ## @brief Function-pointer for zesOverclockGetVFPointValues if __use_win_types: _zesOverclockGetVFPointValues_t = WINFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_vf_type_t, zes_vf_array_type_t, c_ulong, POINTER(c_ulong) ) else: _zesOverclockGetVFPointValues_t = CFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_vf_type_t, zes_vf_array_type_t, c_ulong, POINTER(c_ulong) ) ############################################################################### ## @brief Function-pointer for zesOverclockSetVFPointValues if __use_win_types: _zesOverclockSetVFPointValues_t = WINFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_vf_type_t, c_ulong, c_ulong ) else: _zesOverclockSetVFPointValues_t = CFUNCTYPE( ze_result_t, zes_overclock_handle_t, zes_vf_type_t, c_ulong, c_ulong ) ############################################################################### ## @brief Table of Overclock functions pointers class _zes_overclock_dditable_t(Structure): _fields_ = [ ("pfnGetDomainProperties", c_void_p), ## _zesOverclockGetDomainProperties_t ("pfnGetDomainVFProperties", c_void_p), ## _zesOverclockGetDomainVFProperties_t ("pfnGetDomainControlProperties", c_void_p), ## _zesOverclockGetDomainControlProperties_t ("pfnGetControlCurrentValue", c_void_p), ## _zesOverclockGetControlCurrentValue_t ("pfnGetControlPendingValue", c_void_p), ## _zesOverclockGetControlPendingValue_t ("pfnSetControlUserValue", c_void_p), ## _zesOverclockSetControlUserValue_t ("pfnGetControlState", c_void_p), ## _zesOverclockGetControlState_t ("pfnGetVFPointValues", c_void_p), ## _zesOverclockGetVFPointValues_t ("pfnSetVFPointValues", c_void_p) ## _zesOverclockSetVFPointValues_t ] ############################################################################### ## @brief Function-pointer for zesSchedulerGetProperties if __use_win_types: _zesSchedulerGetProperties_t = WINFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(zes_sched_properties_t) ) else: _zesSchedulerGetProperties_t = CFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(zes_sched_properties_t) ) ############################################################################### ## @brief Function-pointer for zesSchedulerGetCurrentMode if __use_win_types: _zesSchedulerGetCurrentMode_t = WINFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(zes_sched_mode_t) ) else: _zesSchedulerGetCurrentMode_t = CFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(zes_sched_mode_t) ) ############################################################################### ## @brief Function-pointer for zesSchedulerGetTimeoutModeProperties if __use_win_types: _zesSchedulerGetTimeoutModeProperties_t = WINFUNCTYPE( ze_result_t, zes_sched_handle_t, ze_bool_t, POINTER(zes_sched_timeout_properties_t) ) else: _zesSchedulerGetTimeoutModeProperties_t = CFUNCTYPE( ze_result_t, zes_sched_handle_t, ze_bool_t, POINTER(zes_sched_timeout_properties_t) ) ############################################################################### ## @brief Function-pointer for zesSchedulerGetTimesliceModeProperties if __use_win_types: _zesSchedulerGetTimesliceModeProperties_t = WINFUNCTYPE( ze_result_t, zes_sched_handle_t, ze_bool_t, POINTER(zes_sched_timeslice_properties_t) ) else: _zesSchedulerGetTimesliceModeProperties_t = CFUNCTYPE( ze_result_t, zes_sched_handle_t, ze_bool_t, POINTER(zes_sched_timeslice_properties_t) ) ############################################################################### ## @brief Function-pointer for zesSchedulerSetTimeoutMode if __use_win_types: _zesSchedulerSetTimeoutMode_t = WINFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(zes_sched_timeout_properties_t), POINTER(ze_bool_t) ) else: _zesSchedulerSetTimeoutMode_t = CFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(zes_sched_timeout_properties_t), POINTER(ze_bool_t) ) ############################################################################### ## @brief Function-pointer for zesSchedulerSetTimesliceMode if __use_win_types: _zesSchedulerSetTimesliceMode_t = WINFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(zes_sched_timeslice_properties_t), POINTER(ze_bool_t) ) else: _zesSchedulerSetTimesliceMode_t = CFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(zes_sched_timeslice_properties_t), POINTER(ze_bool_t) ) ############################################################################### ## @brief Function-pointer for zesSchedulerSetExclusiveMode if __use_win_types: _zesSchedulerSetExclusiveMode_t = WINFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(ze_bool_t) ) else: _zesSchedulerSetExclusiveMode_t = CFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(ze_bool_t) ) ############################################################################### ## @brief Function-pointer for zesSchedulerSetComputeUnitDebugMode if __use_win_types: _zesSchedulerSetComputeUnitDebugMode_t = WINFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(ze_bool_t) ) else: _zesSchedulerSetComputeUnitDebugMode_t = CFUNCTYPE( ze_result_t, zes_sched_handle_t, POINTER(ze_bool_t) ) ############################################################################### ## @brief Table of Scheduler functions pointers class _zes_scheduler_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesSchedulerGetProperties_t ("pfnGetCurrentMode", c_void_p), ## _zesSchedulerGetCurrentMode_t ("pfnGetTimeoutModeProperties", c_void_p), ## _zesSchedulerGetTimeoutModeProperties_t ("pfnGetTimesliceModeProperties", c_void_p), ## _zesSchedulerGetTimesliceModeProperties_t ("pfnSetTimeoutMode", c_void_p), ## _zesSchedulerSetTimeoutMode_t ("pfnSetTimesliceMode", c_void_p), ## _zesSchedulerSetTimesliceMode_t ("pfnSetExclusiveMode", c_void_p), ## _zesSchedulerSetExclusiveMode_t ("pfnSetComputeUnitDebugMode", c_void_p) ## _zesSchedulerSetComputeUnitDebugMode_t ] ############################################################################### ## @brief Function-pointer for zesPerformanceFactorGetProperties if __use_win_types: _zesPerformanceFactorGetProperties_t = WINFUNCTYPE( ze_result_t, zes_perf_handle_t, POINTER(zes_perf_properties_t) ) else: _zesPerformanceFactorGetProperties_t = CFUNCTYPE( ze_result_t, zes_perf_handle_t, POINTER(zes_perf_properties_t) ) ############################################################################### ## @brief Function-pointer for zesPerformanceFactorGetConfig if __use_win_types: _zesPerformanceFactorGetConfig_t = WINFUNCTYPE( ze_result_t, zes_perf_handle_t, POINTER(c_double) ) else: _zesPerformanceFactorGetConfig_t = CFUNCTYPE( ze_result_t, zes_perf_handle_t, POINTER(c_double) ) ############################################################################### ## @brief Function-pointer for zesPerformanceFactorSetConfig if __use_win_types: _zesPerformanceFactorSetConfig_t = WINFUNCTYPE( ze_result_t, zes_perf_handle_t, c_double ) else: _zesPerformanceFactorSetConfig_t = CFUNCTYPE( ze_result_t, zes_perf_handle_t, c_double ) ############################################################################### ## @brief Table of PerformanceFactor functions pointers class _zes_performance_factor_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesPerformanceFactorGetProperties_t ("pfnGetConfig", c_void_p), ## _zesPerformanceFactorGetConfig_t ("pfnSetConfig", c_void_p) ## _zesPerformanceFactorSetConfig_t ] ############################################################################### ## @brief Function-pointer for zesPowerGetProperties if __use_win_types: _zesPowerGetProperties_t = WINFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_power_properties_t) ) else: _zesPowerGetProperties_t = CFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_power_properties_t) ) ############################################################################### ## @brief Function-pointer for zesPowerGetEnergyCounter if __use_win_types: _zesPowerGetEnergyCounter_t = WINFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_power_energy_counter_t) ) else: _zesPowerGetEnergyCounter_t = CFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_power_energy_counter_t) ) ############################################################################### ## @brief Function-pointer for zesPowerGetLimits if __use_win_types: _zesPowerGetLimits_t = WINFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_power_sustained_limit_t), POINTER(zes_power_burst_limit_t), POINTER(zes_power_peak_limit_t) ) else: _zesPowerGetLimits_t = CFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_power_sustained_limit_t), POINTER(zes_power_burst_limit_t), POINTER(zes_power_peak_limit_t) ) ############################################################################### ## @brief Function-pointer for zesPowerSetLimits if __use_win_types: _zesPowerSetLimits_t = WINFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_power_sustained_limit_t), POINTER(zes_power_burst_limit_t), POINTER(zes_power_peak_limit_t) ) else: _zesPowerSetLimits_t = CFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_power_sustained_limit_t), POINTER(zes_power_burst_limit_t), POINTER(zes_power_peak_limit_t) ) ############################################################################### ## @brief Function-pointer for zesPowerGetEnergyThreshold if __use_win_types: _zesPowerGetEnergyThreshold_t = WINFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_energy_threshold_t) ) else: _zesPowerGetEnergyThreshold_t = CFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(zes_energy_threshold_t) ) ############################################################################### ## @brief Function-pointer for zesPowerSetEnergyThreshold if __use_win_types: _zesPowerSetEnergyThreshold_t = WINFUNCTYPE( ze_result_t, zes_pwr_handle_t, c_double ) else: _zesPowerSetEnergyThreshold_t = CFUNCTYPE( ze_result_t, zes_pwr_handle_t, c_double ) ############################################################################### ## @brief Function-pointer for zesPowerGetLimitsExt if __use_win_types: _zesPowerGetLimitsExt_t = WINFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(c_ulong), POINTER(zes_power_limit_ext_desc_t) ) else: _zesPowerGetLimitsExt_t = CFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(c_ulong), POINTER(zes_power_limit_ext_desc_t) ) ############################################################################### ## @brief Function-pointer for zesPowerSetLimitsExt if __use_win_types: _zesPowerSetLimitsExt_t = WINFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(c_ulong), POINTER(zes_power_limit_ext_desc_t) ) else: _zesPowerSetLimitsExt_t = CFUNCTYPE( ze_result_t, zes_pwr_handle_t, POINTER(c_ulong), POINTER(zes_power_limit_ext_desc_t) ) ############################################################################### ## @brief Table of Power functions pointers class _zes_power_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesPowerGetProperties_t ("pfnGetEnergyCounter", c_void_p), ## _zesPowerGetEnergyCounter_t ("pfnGetLimits", c_void_p), ## _zesPowerGetLimits_t ("pfnSetLimits", c_void_p), ## _zesPowerSetLimits_t ("pfnGetEnergyThreshold", c_void_p), ## _zesPowerGetEnergyThreshold_t ("pfnSetEnergyThreshold", c_void_p), ## _zesPowerSetEnergyThreshold_t ("pfnGetLimitsExt", c_void_p), ## _zesPowerGetLimitsExt_t ("pfnSetLimitsExt", c_void_p) ## _zesPowerSetLimitsExt_t ] ############################################################################### ## @brief Function-pointer for zesFrequencyGetProperties if __use_win_types: _zesFrequencyGetProperties_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_properties_t) ) else: _zesFrequencyGetProperties_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_properties_t) ) ############################################################################### ## @brief Function-pointer for zesFrequencyGetAvailableClocks if __use_win_types: _zesFrequencyGetAvailableClocks_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_ulong), POINTER(c_double) ) else: _zesFrequencyGetAvailableClocks_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_ulong), POINTER(c_double) ) ############################################################################### ## @brief Function-pointer for zesFrequencyGetRange if __use_win_types: _zesFrequencyGetRange_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_range_t) ) else: _zesFrequencyGetRange_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_range_t) ) ############################################################################### ## @brief Function-pointer for zesFrequencySetRange if __use_win_types: _zesFrequencySetRange_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_range_t) ) else: _zesFrequencySetRange_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_range_t) ) ############################################################################### ## @brief Function-pointer for zesFrequencyGetState if __use_win_types: _zesFrequencyGetState_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_state_t) ) else: _zesFrequencyGetState_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_state_t) ) ############################################################################### ## @brief Function-pointer for zesFrequencyGetThrottleTime if __use_win_types: _zesFrequencyGetThrottleTime_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_throttle_time_t) ) else: _zesFrequencyGetThrottleTime_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_freq_throttle_time_t) ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcGetCapabilities if __use_win_types: _zesFrequencyOcGetCapabilities_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_oc_capabilities_t) ) else: _zesFrequencyOcGetCapabilities_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_oc_capabilities_t) ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcGetFrequencyTarget if __use_win_types: _zesFrequencyOcGetFrequencyTarget_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_double) ) else: _zesFrequencyOcGetFrequencyTarget_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_double) ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcSetFrequencyTarget if __use_win_types: _zesFrequencyOcSetFrequencyTarget_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, c_double ) else: _zesFrequencyOcSetFrequencyTarget_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, c_double ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcGetVoltageTarget if __use_win_types: _zesFrequencyOcGetVoltageTarget_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_double), POINTER(c_double) ) else: _zesFrequencyOcGetVoltageTarget_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_double), POINTER(c_double) ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcSetVoltageTarget if __use_win_types: _zesFrequencyOcSetVoltageTarget_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, c_double, c_double ) else: _zesFrequencyOcSetVoltageTarget_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, c_double, c_double ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcSetMode if __use_win_types: _zesFrequencyOcSetMode_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, zes_oc_mode_t ) else: _zesFrequencyOcSetMode_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, zes_oc_mode_t ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcGetMode if __use_win_types: _zesFrequencyOcGetMode_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_oc_mode_t) ) else: _zesFrequencyOcGetMode_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(zes_oc_mode_t) ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcGetIccMax if __use_win_types: _zesFrequencyOcGetIccMax_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_double) ) else: _zesFrequencyOcGetIccMax_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_double) ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcSetIccMax if __use_win_types: _zesFrequencyOcSetIccMax_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, c_double ) else: _zesFrequencyOcSetIccMax_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, c_double ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcGetTjMax if __use_win_types: _zesFrequencyOcGetTjMax_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_double) ) else: _zesFrequencyOcGetTjMax_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, POINTER(c_double) ) ############################################################################### ## @brief Function-pointer for zesFrequencyOcSetTjMax if __use_win_types: _zesFrequencyOcSetTjMax_t = WINFUNCTYPE( ze_result_t, zes_freq_handle_t, c_double ) else: _zesFrequencyOcSetTjMax_t = CFUNCTYPE( ze_result_t, zes_freq_handle_t, c_double ) ############################################################################### ## @brief Table of Frequency functions pointers class _zes_frequency_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesFrequencyGetProperties_t ("pfnGetAvailableClocks", c_void_p), ## _zesFrequencyGetAvailableClocks_t ("pfnGetRange", c_void_p), ## _zesFrequencyGetRange_t ("pfnSetRange", c_void_p), ## _zesFrequencySetRange_t ("pfnGetState", c_void_p), ## _zesFrequencyGetState_t ("pfnGetThrottleTime", c_void_p), ## _zesFrequencyGetThrottleTime_t ("pfnOcGetCapabilities", c_void_p), ## _zesFrequencyOcGetCapabilities_t ("pfnOcGetFrequencyTarget", c_void_p), ## _zesFrequencyOcGetFrequencyTarget_t ("pfnOcSetFrequencyTarget", c_void_p), ## _zesFrequencyOcSetFrequencyTarget_t ("pfnOcGetVoltageTarget", c_void_p), ## _zesFrequencyOcGetVoltageTarget_t ("pfnOcSetVoltageTarget", c_void_p), ## _zesFrequencyOcSetVoltageTarget_t ("pfnOcSetMode", c_void_p), ## _zesFrequencyOcSetMode_t ("pfnOcGetMode", c_void_p), ## _zesFrequencyOcGetMode_t ("pfnOcGetIccMax", c_void_p), ## _zesFrequencyOcGetIccMax_t ("pfnOcSetIccMax", c_void_p), ## _zesFrequencyOcSetIccMax_t ("pfnOcGetTjMax", c_void_p), ## _zesFrequencyOcGetTjMax_t ("pfnOcSetTjMax", c_void_p) ## _zesFrequencyOcSetTjMax_t ] ############################################################################### ## @brief Function-pointer for zesEngineGetProperties if __use_win_types: _zesEngineGetProperties_t = WINFUNCTYPE( ze_result_t, zes_engine_handle_t, POINTER(zes_engine_properties_t) ) else: _zesEngineGetProperties_t = CFUNCTYPE( ze_result_t, zes_engine_handle_t, POINTER(zes_engine_properties_t) ) ############################################################################### ## @brief Function-pointer for zesEngineGetActivity if __use_win_types: _zesEngineGetActivity_t = WINFUNCTYPE( ze_result_t, zes_engine_handle_t, POINTER(zes_engine_stats_t) ) else: _zesEngineGetActivity_t = CFUNCTYPE( ze_result_t, zes_engine_handle_t, POINTER(zes_engine_stats_t) ) ############################################################################### ## @brief Function-pointer for zesEngineGetActivityExt if __use_win_types: _zesEngineGetActivityExt_t = WINFUNCTYPE( ze_result_t, zes_engine_handle_t, POINTER(c_ulong), POINTER(zes_engine_stats_t) ) else: _zesEngineGetActivityExt_t = CFUNCTYPE( ze_result_t, zes_engine_handle_t, POINTER(c_ulong), POINTER(zes_engine_stats_t) ) ############################################################################### ## @brief Table of Engine functions pointers class _zes_engine_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesEngineGetProperties_t ("pfnGetActivity", c_void_p), ## _zesEngineGetActivity_t ("pfnGetActivityExt", c_void_p) ## _zesEngineGetActivityExt_t ] ############################################################################### ## @brief Function-pointer for zesStandbyGetProperties if __use_win_types: _zesStandbyGetProperties_t = WINFUNCTYPE( ze_result_t, zes_standby_handle_t, POINTER(zes_standby_properties_t) ) else: _zesStandbyGetProperties_t = CFUNCTYPE( ze_result_t, zes_standby_handle_t, POINTER(zes_standby_properties_t) ) ############################################################################### ## @brief Function-pointer for zesStandbyGetMode if __use_win_types: _zesStandbyGetMode_t = WINFUNCTYPE( ze_result_t, zes_standby_handle_t, POINTER(zes_standby_promo_mode_t) ) else: _zesStandbyGetMode_t = CFUNCTYPE( ze_result_t, zes_standby_handle_t, POINTER(zes_standby_promo_mode_t) ) ############################################################################### ## @brief Function-pointer for zesStandbySetMode if __use_win_types: _zesStandbySetMode_t = WINFUNCTYPE( ze_result_t, zes_standby_handle_t, zes_standby_promo_mode_t ) else: _zesStandbySetMode_t = CFUNCTYPE( ze_result_t, zes_standby_handle_t, zes_standby_promo_mode_t ) ############################################################################### ## @brief Table of Standby functions pointers class _zes_standby_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesStandbyGetProperties_t ("pfnGetMode", c_void_p), ## _zesStandbyGetMode_t ("pfnSetMode", c_void_p) ## _zesStandbySetMode_t ] ############################################################################### ## @brief Function-pointer for zesFirmwareGetProperties if __use_win_types: _zesFirmwareGetProperties_t = WINFUNCTYPE( ze_result_t, zes_firmware_handle_t, POINTER(zes_firmware_properties_t) ) else: _zesFirmwareGetProperties_t = CFUNCTYPE( ze_result_t, zes_firmware_handle_t, POINTER(zes_firmware_properties_t) ) ############################################################################### ## @brief Function-pointer for zesFirmwareFlash if __use_win_types: _zesFirmwareFlash_t = WINFUNCTYPE( ze_result_t, zes_firmware_handle_t, c_void_p, c_ulong ) else: _zesFirmwareFlash_t = CFUNCTYPE( ze_result_t, zes_firmware_handle_t, c_void_p, c_ulong ) ############################################################################### ## @brief Function-pointer for zesFirmwareGetFlashProgress if __use_win_types: _zesFirmwareGetFlashProgress_t = WINFUNCTYPE( ze_result_t, zes_firmware_handle_t, POINTER(c_ulong) ) else: _zesFirmwareGetFlashProgress_t = CFUNCTYPE( ze_result_t, zes_firmware_handle_t, POINTER(c_ulong) ) ############################################################################### ## @brief Function-pointer for zesFirmwareGetConsoleLogs if __use_win_types: _zesFirmwareGetConsoleLogs_t = WINFUNCTYPE( ze_result_t, zes_firmware_handle_t, POINTER(c_size_t), c_char_p ) else: _zesFirmwareGetConsoleLogs_t = CFUNCTYPE( ze_result_t, zes_firmware_handle_t, POINTER(c_size_t), c_char_p ) ############################################################################### ## @brief Table of Firmware functions pointers class _zes_firmware_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesFirmwareGetProperties_t ("pfnFlash", c_void_p), ## _zesFirmwareFlash_t ("pfnGetFlashProgress", c_void_p), ## _zesFirmwareGetFlashProgress_t ("pfnGetConsoleLogs", c_void_p) ## _zesFirmwareGetConsoleLogs_t ] ############################################################################### ## @brief Function-pointer for zesFirmwareGetSecurityVersionExp if __use_win_types: _zesFirmwareGetSecurityVersionExp_t = WINFUNCTYPE( ze_result_t, zes_firmware_handle_t, c_char_p ) else: _zesFirmwareGetSecurityVersionExp_t = CFUNCTYPE( ze_result_t, zes_firmware_handle_t, c_char_p ) ############################################################################### ## @brief Function-pointer for zesFirmwareSetSecurityVersionExp if __use_win_types: _zesFirmwareSetSecurityVersionExp_t = WINFUNCTYPE( ze_result_t, zes_firmware_handle_t ) else: _zesFirmwareSetSecurityVersionExp_t = CFUNCTYPE( ze_result_t, zes_firmware_handle_t ) ############################################################################### ## @brief Table of FirmwareExp functions pointers class _zes_firmware_exp_dditable_t(Structure): _fields_ = [ ("pfnGetSecurityVersionExp", c_void_p), ## _zesFirmwareGetSecurityVersionExp_t ("pfnSetSecurityVersionExp", c_void_p) ## _zesFirmwareSetSecurityVersionExp_t ] ############################################################################### ## @brief Function-pointer for zesMemoryGetProperties if __use_win_types: _zesMemoryGetProperties_t = WINFUNCTYPE( ze_result_t, zes_mem_handle_t, POINTER(zes_mem_properties_t) ) else: _zesMemoryGetProperties_t = CFUNCTYPE( ze_result_t, zes_mem_handle_t, POINTER(zes_mem_properties_t) ) ############################################################################### ## @brief Function-pointer for zesMemoryGetState if __use_win_types: _zesMemoryGetState_t = WINFUNCTYPE( ze_result_t, zes_mem_handle_t, POINTER(zes_mem_state_t) ) else: _zesMemoryGetState_t = CFUNCTYPE( ze_result_t, zes_mem_handle_t, POINTER(zes_mem_state_t) ) ############################################################################### ## @brief Function-pointer for zesMemoryGetBandwidth if __use_win_types: _zesMemoryGetBandwidth_t = WINFUNCTYPE( ze_result_t, zes_mem_handle_t, POINTER(zes_mem_bandwidth_t) ) else: _zesMemoryGetBandwidth_t = CFUNCTYPE( ze_result_t, zes_mem_handle_t, POINTER(zes_mem_bandwidth_t) ) ############################################################################### ## @brief Table of Memory functions pointers class _zes_memory_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesMemoryGetProperties_t ("pfnGetState", c_void_p), ## _zesMemoryGetState_t ("pfnGetBandwidth", c_void_p) ## _zesMemoryGetBandwidth_t ] ############################################################################### ## @brief Function-pointer for zesFabricPortGetProperties if __use_win_types: _zesFabricPortGetProperties_t = WINFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_properties_t) ) else: _zesFabricPortGetProperties_t = CFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_properties_t) ) ############################################################################### ## @brief Function-pointer for zesFabricPortGetLinkType if __use_win_types: _zesFabricPortGetLinkType_t = WINFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_link_type_t) ) else: _zesFabricPortGetLinkType_t = CFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_link_type_t) ) ############################################################################### ## @brief Function-pointer for zesFabricPortGetConfig if __use_win_types: _zesFabricPortGetConfig_t = WINFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_config_t) ) else: _zesFabricPortGetConfig_t = CFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_config_t) ) ############################################################################### ## @brief Function-pointer for zesFabricPortSetConfig if __use_win_types: _zesFabricPortSetConfig_t = WINFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_config_t) ) else: _zesFabricPortSetConfig_t = CFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_config_t) ) ############################################################################### ## @brief Function-pointer for zesFabricPortGetState if __use_win_types: _zesFabricPortGetState_t = WINFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_state_t) ) else: _zesFabricPortGetState_t = CFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_state_t) ) ############################################################################### ## @brief Function-pointer for zesFabricPortGetThroughput if __use_win_types: _zesFabricPortGetThroughput_t = WINFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_throughput_t) ) else: _zesFabricPortGetThroughput_t = CFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_throughput_t) ) ############################################################################### ## @brief Function-pointer for zesFabricPortGetFabricErrorCounters if __use_win_types: _zesFabricPortGetFabricErrorCounters_t = WINFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_error_counters_t) ) else: _zesFabricPortGetFabricErrorCounters_t = CFUNCTYPE( ze_result_t, zes_fabric_port_handle_t, POINTER(zes_fabric_port_error_counters_t) ) ############################################################################### ## @brief Function-pointer for zesFabricPortGetMultiPortThroughput if __use_win_types: _zesFabricPortGetMultiPortThroughput_t = WINFUNCTYPE( ze_result_t, zes_device_handle_t, c_ulong, POINTER(zes_fabric_port_handle_t), POINTER(zes_fabric_port_throughput_t*) ) else: _zesFabricPortGetMultiPortThroughput_t = CFUNCTYPE( ze_result_t, zes_device_handle_t, c_ulong, POINTER(zes_fabric_port_handle_t), POINTER(zes_fabric_port_throughput_t*) ) ############################################################################### ## @brief Table of FabricPort functions pointers class _zes_fabric_port_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesFabricPortGetProperties_t ("pfnGetLinkType", c_void_p), ## _zesFabricPortGetLinkType_t ("pfnGetConfig", c_void_p), ## _zesFabricPortGetConfig_t ("pfnSetConfig", c_void_p), ## _zesFabricPortSetConfig_t ("pfnGetState", c_void_p), ## _zesFabricPortGetState_t ("pfnGetThroughput", c_void_p), ## _zesFabricPortGetThroughput_t ("pfnGetFabricErrorCounters", c_void_p), ## _zesFabricPortGetFabricErrorCounters_t ("pfnGetMultiPortThroughput", c_void_p) ## _zesFabricPortGetMultiPortThroughput_t ] ############################################################################### ## @brief Function-pointer for zesTemperatureGetProperties if __use_win_types: _zesTemperatureGetProperties_t = WINFUNCTYPE( ze_result_t, zes_temp_handle_t, POINTER(zes_temp_properties_t) ) else: _zesTemperatureGetProperties_t = CFUNCTYPE( ze_result_t, zes_temp_handle_t, POINTER(zes_temp_properties_t) ) ############################################################################### ## @brief Function-pointer for zesTemperatureGetConfig if __use_win_types: _zesTemperatureGetConfig_t = WINFUNCTYPE( ze_result_t, zes_temp_handle_t, POINTER(zes_temp_config_t) ) else: _zesTemperatureGetConfig_t = CFUNCTYPE( ze_result_t, zes_temp_handle_t, POINTER(zes_temp_config_t) ) ############################################################################### ## @brief Function-pointer for zesTemperatureSetConfig if __use_win_types: _zesTemperatureSetConfig_t = WINFUNCTYPE( ze_result_t, zes_temp_handle_t, POINTER(zes_temp_config_t) ) else: _zesTemperatureSetConfig_t = CFUNCTYPE( ze_result_t, zes_temp_handle_t, POINTER(zes_temp_config_t) ) ############################################################################### ## @brief Function-pointer for zesTemperatureGetState if __use_win_types: _zesTemperatureGetState_t = WINFUNCTYPE( ze_result_t, zes_temp_handle_t, POINTER(c_double) ) else: _zesTemperatureGetState_t = CFUNCTYPE( ze_result_t, zes_temp_handle_t, POINTER(c_double) ) ############################################################################### ## @brief Table of Temperature functions pointers class _zes_temperature_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesTemperatureGetProperties_t ("pfnGetConfig", c_void_p), ## _zesTemperatureGetConfig_t ("pfnSetConfig", c_void_p), ## _zesTemperatureSetConfig_t ("pfnGetState", c_void_p) ## _zesTemperatureGetState_t ] ############################################################################### ## @brief Function-pointer for zesPsuGetProperties if __use_win_types: _zesPsuGetProperties_t = WINFUNCTYPE( ze_result_t, zes_psu_handle_t, POINTER(zes_psu_properties_t) ) else: _zesPsuGetProperties_t = CFUNCTYPE( ze_result_t, zes_psu_handle_t, POINTER(zes_psu_properties_t) ) ############################################################################### ## @brief Function-pointer for zesPsuGetState if __use_win_types: _zesPsuGetState_t = WINFUNCTYPE( ze_result_t, zes_psu_handle_t, POINTER(zes_psu_state_t) ) else: _zesPsuGetState_t = CFUNCTYPE( ze_result_t, zes_psu_handle_t, POINTER(zes_psu_state_t) ) ############################################################################### ## @brief Table of Psu functions pointers class _zes_psu_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesPsuGetProperties_t ("pfnGetState", c_void_p) ## _zesPsuGetState_t ] ############################################################################### ## @brief Function-pointer for zesFanGetProperties if __use_win_types: _zesFanGetProperties_t = WINFUNCTYPE( ze_result_t, zes_fan_handle_t, POINTER(zes_fan_properties_t) ) else: _zesFanGetProperties_t = CFUNCTYPE( ze_result_t, zes_fan_handle_t, POINTER(zes_fan_properties_t) ) ############################################################################### ## @brief Function-pointer for zesFanGetConfig if __use_win_types: _zesFanGetConfig_t = WINFUNCTYPE( ze_result_t, zes_fan_handle_t, POINTER(zes_fan_config_t) ) else: _zesFanGetConfig_t = CFUNCTYPE( ze_result_t, zes_fan_handle_t, POINTER(zes_fan_config_t) ) ############################################################################### ## @brief Function-pointer for zesFanSetDefaultMode if __use_win_types: _zesFanSetDefaultMode_t = WINFUNCTYPE( ze_result_t, zes_fan_handle_t ) else: _zesFanSetDefaultMode_t = CFUNCTYPE( ze_result_t, zes_fan_handle_t ) ############################################################################### ## @brief Function-pointer for zesFanSetFixedSpeedMode if __use_win_types: _zesFanSetFixedSpeedMode_t = WINFUNCTYPE( ze_result_t, zes_fan_handle_t, POINTER(zes_fan_speed_t) ) else: _zesFanSetFixedSpeedMode_t = CFUNCTYPE( ze_result_t, zes_fan_handle_t, POINTER(zes_fan_speed_t) ) ############################################################################### ## @brief Function-pointer for zesFanSetSpeedTableMode if __use_win_types: _zesFanSetSpeedTableMode_t = WINFUNCTYPE( ze_result_t, zes_fan_handle_t, POINTER(zes_fan_speed_table_t) ) else: _zesFanSetSpeedTableMode_t = CFUNCTYPE( ze_result_t, zes_fan_handle_t, POINTER(zes_fan_speed_table_t) ) ############################################################################### ## @brief Function-pointer for zesFanGetState if __use_win_types: _zesFanGetState_t = WINFUNCTYPE( ze_result_t, zes_fan_handle_t, zes_fan_speed_units_t, POINTER(c_int32_t) ) else: _zesFanGetState_t = CFUNCTYPE( ze_result_t, zes_fan_handle_t, zes_fan_speed_units_t, POINTER(c_int32_t) ) ############################################################################### ## @brief Table of Fan functions pointers class _zes_fan_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesFanGetProperties_t ("pfnGetConfig", c_void_p), ## _zesFanGetConfig_t ("pfnSetDefaultMode", c_void_p), ## _zesFanSetDefaultMode_t ("pfnSetFixedSpeedMode", c_void_p), ## _zesFanSetFixedSpeedMode_t ("pfnSetSpeedTableMode", c_void_p), ## _zesFanSetSpeedTableMode_t ("pfnGetState", c_void_p) ## _zesFanGetState_t ] ############################################################################### ## @brief Function-pointer for zesLedGetProperties if __use_win_types: _zesLedGetProperties_t = WINFUNCTYPE( ze_result_t, zes_led_handle_t, POINTER(zes_led_properties_t) ) else: _zesLedGetProperties_t = CFUNCTYPE( ze_result_t, zes_led_handle_t, POINTER(zes_led_properties_t) ) ############################################################################### ## @brief Function-pointer for zesLedGetState if __use_win_types: _zesLedGetState_t = WINFUNCTYPE( ze_result_t, zes_led_handle_t, POINTER(zes_led_state_t) ) else: _zesLedGetState_t = CFUNCTYPE( ze_result_t, zes_led_handle_t, POINTER(zes_led_state_t) ) ############################################################################### ## @brief Function-pointer for zesLedSetState if __use_win_types: _zesLedSetState_t = WINFUNCTYPE( ze_result_t, zes_led_handle_t, ze_bool_t ) else: _zesLedSetState_t = CFUNCTYPE( ze_result_t, zes_led_handle_t, ze_bool_t ) ############################################################################### ## @brief Function-pointer for zesLedSetColor if __use_win_types: _zesLedSetColor_t = WINFUNCTYPE( ze_result_t, zes_led_handle_t, POINTER(zes_led_color_t) ) else: _zesLedSetColor_t = CFUNCTYPE( ze_result_t, zes_led_handle_t, POINTER(zes_led_color_t) ) ############################################################################### ## @brief Table of Led functions pointers class _zes_led_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesLedGetProperties_t ("pfnGetState", c_void_p), ## _zesLedGetState_t ("pfnSetState", c_void_p), ## _zesLedSetState_t ("pfnSetColor", c_void_p) ## _zesLedSetColor_t ] ############################################################################### ## @brief Function-pointer for zesRasGetProperties if __use_win_types: _zesRasGetProperties_t = WINFUNCTYPE( ze_result_t, zes_ras_handle_t, POINTER(zes_ras_properties_t) ) else: _zesRasGetProperties_t = CFUNCTYPE( ze_result_t, zes_ras_handle_t, POINTER(zes_ras_properties_t) ) ############################################################################### ## @brief Function-pointer for zesRasGetConfig if __use_win_types: _zesRasGetConfig_t = WINFUNCTYPE( ze_result_t, zes_ras_handle_t, POINTER(zes_ras_config_t) ) else: _zesRasGetConfig_t = CFUNCTYPE( ze_result_t, zes_ras_handle_t, POINTER(zes_ras_config_t) ) ############################################################################### ## @brief Function-pointer for zesRasSetConfig if __use_win_types: _zesRasSetConfig_t = WINFUNCTYPE( ze_result_t, zes_ras_handle_t, POINTER(zes_ras_config_t) ) else: _zesRasSetConfig_t = CFUNCTYPE( ze_result_t, zes_ras_handle_t, POINTER(zes_ras_config_t) ) ############################################################################### ## @brief Function-pointer for zesRasGetState if __use_win_types: _zesRasGetState_t = WINFUNCTYPE( ze_result_t, zes_ras_handle_t, ze_bool_t, POINTER(zes_ras_state_t) ) else: _zesRasGetState_t = CFUNCTYPE( ze_result_t, zes_ras_handle_t, ze_bool_t, POINTER(zes_ras_state_t) ) ############################################################################### ## @brief Table of Ras functions pointers class _zes_ras_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesRasGetProperties_t ("pfnGetConfig", c_void_p), ## _zesRasGetConfig_t ("pfnSetConfig", c_void_p), ## _zesRasSetConfig_t ("pfnGetState", c_void_p) ## _zesRasGetState_t ] ############################################################################### ## @brief Function-pointer for zesRasGetStateExp if __use_win_types: _zesRasGetStateExp_t = WINFUNCTYPE( ze_result_t, zes_ras_handle_t, POINTER(c_ulong), POINTER(zes_ras_state_exp_t) ) else: _zesRasGetStateExp_t = CFUNCTYPE( ze_result_t, zes_ras_handle_t, POINTER(c_ulong), POINTER(zes_ras_state_exp_t) ) ############################################################################### ## @brief Function-pointer for zesRasClearStateExp if __use_win_types: _zesRasClearStateExp_t = WINFUNCTYPE( ze_result_t, zes_ras_handle_t, zes_ras_error_category_exp_t ) else: _zesRasClearStateExp_t = CFUNCTYPE( ze_result_t, zes_ras_handle_t, zes_ras_error_category_exp_t ) ############################################################################### ## @brief Table of RasExp functions pointers class _zes_ras_exp_dditable_t(Structure): _fields_ = [ ("pfnGetStateExp", c_void_p), ## _zesRasGetStateExp_t ("pfnClearStateExp", c_void_p) ## _zesRasClearStateExp_t ] ############################################################################### ## @brief Function-pointer for zesDiagnosticsGetProperties if __use_win_types: _zesDiagnosticsGetProperties_t = WINFUNCTYPE( ze_result_t, zes_diag_handle_t, POINTER(zes_diag_properties_t) ) else: _zesDiagnosticsGetProperties_t = CFUNCTYPE( ze_result_t, zes_diag_handle_t, POINTER(zes_diag_properties_t) ) ############################################################################### ## @brief Function-pointer for zesDiagnosticsGetTests if __use_win_types: _zesDiagnosticsGetTests_t = WINFUNCTYPE( ze_result_t, zes_diag_handle_t, POINTER(c_ulong), POINTER(zes_diag_test_t) ) else: _zesDiagnosticsGetTests_t = CFUNCTYPE( ze_result_t, zes_diag_handle_t, POINTER(c_ulong), POINTER(zes_diag_test_t) ) ############################################################################### ## @brief Function-pointer for zesDiagnosticsRunTests if __use_win_types: _zesDiagnosticsRunTests_t = WINFUNCTYPE( ze_result_t, zes_diag_handle_t, c_ulong, c_ulong, POINTER(zes_diag_result_t) ) else: _zesDiagnosticsRunTests_t = CFUNCTYPE( ze_result_t, zes_diag_handle_t, c_ulong, c_ulong, POINTER(zes_diag_result_t) ) ############################################################################### ## @brief Table of Diagnostics functions pointers class _zes_diagnostics_dditable_t(Structure): _fields_ = [ ("pfnGetProperties", c_void_p), ## _zesDiagnosticsGetProperties_t ("pfnGetTests", c_void_p), ## _zesDiagnosticsGetTests_t ("pfnRunTests", c_void_p) ## _zesDiagnosticsRunTests_t ] ############################################################################### ## @brief Function-pointer for zesVFManagementGetVFPropertiesExp if __use_win_types: _zesVFManagementGetVFPropertiesExp_t = WINFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(zes_vf_exp_properties_t) ) else: _zesVFManagementGetVFPropertiesExp_t = CFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(zes_vf_exp_properties_t) ) ############################################################################### ## @brief Function-pointer for zesVFManagementGetVFMemoryUtilizationExp if __use_win_types: _zesVFManagementGetVFMemoryUtilizationExp_t = WINFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(c_ulong), POINTER(zes_vf_util_mem_exp_t) ) else: _zesVFManagementGetVFMemoryUtilizationExp_t = CFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(c_ulong), POINTER(zes_vf_util_mem_exp_t) ) ############################################################################### ## @brief Function-pointer for zesVFManagementGetVFEngineUtilizationExp if __use_win_types: _zesVFManagementGetVFEngineUtilizationExp_t = WINFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(c_ulong), POINTER(zes_vf_util_engine_exp_t) ) else: _zesVFManagementGetVFEngineUtilizationExp_t = CFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(c_ulong), POINTER(zes_vf_util_engine_exp_t) ) ############################################################################### ## @brief Function-pointer for zesVFManagementSetVFTelemetryModeExp if __use_win_types: _zesVFManagementSetVFTelemetryModeExp_t = WINFUNCTYPE( ze_result_t, zes_vf_handle_t, zes_vf_info_util_exp_flags_t, ze_bool_t ) else: _zesVFManagementSetVFTelemetryModeExp_t = CFUNCTYPE( ze_result_t, zes_vf_handle_t, zes_vf_info_util_exp_flags_t, ze_bool_t ) ############################################################################### ## @brief Function-pointer for zesVFManagementSetVFTelemetrySamplingIntervalExp if __use_win_types: _zesVFManagementSetVFTelemetrySamplingIntervalExp_t = WINFUNCTYPE( ze_result_t, zes_vf_handle_t, zes_vf_info_util_exp_flags_t, c_ulonglong ) else: _zesVFManagementSetVFTelemetrySamplingIntervalExp_t = CFUNCTYPE( ze_result_t, zes_vf_handle_t, zes_vf_info_util_exp_flags_t, c_ulonglong ) ############################################################################### ## @brief Function-pointer for zesVFManagementGetVFCapabilitiesExp if __use_win_types: _zesVFManagementGetVFCapabilitiesExp_t = WINFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(zes_vf_exp_capabilities_t) ) else: _zesVFManagementGetVFCapabilitiesExp_t = CFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(zes_vf_exp_capabilities_t) ) ############################################################################### ## @brief Function-pointer for zesVFManagementGetVFMemoryUtilizationExp2 if __use_win_types: _zesVFManagementGetVFMemoryUtilizationExp2_t = WINFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(c_ulong), POINTER(zes_vf_util_mem_exp2_t) ) else: _zesVFManagementGetVFMemoryUtilizationExp2_t = CFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(c_ulong), POINTER(zes_vf_util_mem_exp2_t) ) ############################################################################### ## @brief Function-pointer for zesVFManagementGetVFEngineUtilizationExp2 if __use_win_types: _zesVFManagementGetVFEngineUtilizationExp2_t = WINFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(c_ulong), POINTER(zes_vf_util_engine_exp2_t) ) else: _zesVFManagementGetVFEngineUtilizationExp2_t = CFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(c_ulong), POINTER(zes_vf_util_engine_exp2_t) ) ############################################################################### ## @brief Function-pointer for zesVFManagementGetVFCapabilitiesExp2 if __use_win_types: _zesVFManagementGetVFCapabilitiesExp2_t = WINFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(zes_vf_exp2_capabilities_t) ) else: _zesVFManagementGetVFCapabilitiesExp2_t = CFUNCTYPE( ze_result_t, zes_vf_handle_t, POINTER(zes_vf_exp2_capabilities_t) ) ############################################################################### ## @brief Table of VFManagementExp functions pointers class _zes_vf_management_exp_dditable_t(Structure): _fields_ = [ ("pfnGetVFPropertiesExp", c_void_p), ## _zesVFManagementGetVFPropertiesExp_t ("pfnGetVFMemoryUtilizationExp", c_void_p), ## _zesVFManagementGetVFMemoryUtilizationExp_t ("pfnGetVFEngineUtilizationExp", c_void_p), ## _zesVFManagementGetVFEngineUtilizationExp_t ("pfnSetVFTelemetryModeExp", c_void_p), ## _zesVFManagementSetVFTelemetryModeExp_t ("pfnSetVFTelemetrySamplingIntervalExp", c_void_p), ## _zesVFManagementSetVFTelemetrySamplingIntervalExp_t ("pfnGetVFCapabilitiesExp", c_void_p), ## _zesVFManagementGetVFCapabilitiesExp_t ("pfnGetVFMemoryUtilizationExp2", c_void_p), ## _zesVFManagementGetVFMemoryUtilizationExp2_t ("pfnGetVFEngineUtilizationExp2", c_void_p), ## _zesVFManagementGetVFEngineUtilizationExp2_t ("pfnGetVFCapabilitiesExp2", c_void_p) ## _zesVFManagementGetVFCapabilitiesExp2_t ] ############################################################################### class _zes_dditable_t(Structure): _fields_ = [ ("Global", _zes_global_dditable_t), ("Device", _zes_device_dditable_t), ("DeviceExp", _zes_device_exp_dditable_t), ("Driver", _zes_driver_dditable_t), ("DriverExp", _zes_driver_exp_dditable_t), ("Overclock", _zes_overclock_dditable_t), ("Scheduler", _zes_scheduler_dditable_t), ("PerformanceFactor", _zes_performance_factor_dditable_t), ("Power", _zes_power_dditable_t), ("Frequency", _zes_frequency_dditable_t), ("Engine", _zes_engine_dditable_t), ("Standby", _zes_standby_dditable_t), ("Firmware", _zes_firmware_dditable_t), ("FirmwareExp", _zes_firmware_exp_dditable_t), ("Memory", _zes_memory_dditable_t), ("FabricPort", _zes_fabric_port_dditable_t), ("Temperature", _zes_temperature_dditable_t), ("Psu", _zes_psu_dditable_t), ("Fan", _zes_fan_dditable_t), ("Led", _zes_led_dditable_t), ("Ras", _zes_ras_dditable_t), ("RasExp", _zes_ras_exp_dditable_t), ("Diagnostics", _zes_diagnostics_dditable_t), ("VFManagementExp", _zes_vf_management_exp_dditable_t) ] ############################################################################### ## @brief zes device-driver interfaces class ZES_DDI: def __init__(self, version : ze_api_version_t): # load the ze_loader library if "Windows" == platform.uname()[0]: self.__dll = WinDLL("ze_loader.dll") else: self.__dll = CDLL("ze_loader.so") # fill the ddi tables self.__dditable = _zes_dditable_t() # call driver to get function pointers _Global = _zes_global_dditable_t() r = ze_result_v(self.__dll.zesGetGlobalProcAddrTable(version, byref(_Global))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Global = _Global # attach function interface to function address self.zesInit = _zesInit_t(self.__dditable.Global.pfnInit) # call driver to get function pointers _Device = _zes_device_dditable_t() r = ze_result_v(self.__dll.zesGetDeviceProcAddrTable(version, byref(_Device))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Device = _Device # attach function interface to function address self.zesDeviceGetProperties = _zesDeviceGetProperties_t(self.__dditable.Device.pfnGetProperties) self.zesDeviceGetState = _zesDeviceGetState_t(self.__dditable.Device.pfnGetState) self.zesDeviceReset = _zesDeviceReset_t(self.__dditable.Device.pfnReset) self.zesDeviceProcessesGetState = _zesDeviceProcessesGetState_t(self.__dditable.Device.pfnProcessesGetState) self.zesDevicePciGetProperties = _zesDevicePciGetProperties_t(self.__dditable.Device.pfnPciGetProperties) self.zesDevicePciGetState = _zesDevicePciGetState_t(self.__dditable.Device.pfnPciGetState) self.zesDevicePciGetBars = _zesDevicePciGetBars_t(self.__dditable.Device.pfnPciGetBars) self.zesDevicePciGetStats = _zesDevicePciGetStats_t(self.__dditable.Device.pfnPciGetStats) self.zesDeviceEnumDiagnosticTestSuites = _zesDeviceEnumDiagnosticTestSuites_t(self.__dditable.Device.pfnEnumDiagnosticTestSuites) self.zesDeviceEnumEngineGroups = _zesDeviceEnumEngineGroups_t(self.__dditable.Device.pfnEnumEngineGroups) self.zesDeviceEventRegister = _zesDeviceEventRegister_t(self.__dditable.Device.pfnEventRegister) self.zesDeviceEnumFabricPorts = _zesDeviceEnumFabricPorts_t(self.__dditable.Device.pfnEnumFabricPorts) self.zesDeviceEnumFans = _zesDeviceEnumFans_t(self.__dditable.Device.pfnEnumFans) self.zesDeviceEnumFirmwares = _zesDeviceEnumFirmwares_t(self.__dditable.Device.pfnEnumFirmwares) self.zesDeviceEnumFrequencyDomains = _zesDeviceEnumFrequencyDomains_t(self.__dditable.Device.pfnEnumFrequencyDomains) self.zesDeviceEnumLeds = _zesDeviceEnumLeds_t(self.__dditable.Device.pfnEnumLeds) self.zesDeviceEnumMemoryModules = _zesDeviceEnumMemoryModules_t(self.__dditable.Device.pfnEnumMemoryModules) self.zesDeviceEnumPerformanceFactorDomains = _zesDeviceEnumPerformanceFactorDomains_t(self.__dditable.Device.pfnEnumPerformanceFactorDomains) self.zesDeviceEnumPowerDomains = _zesDeviceEnumPowerDomains_t(self.__dditable.Device.pfnEnumPowerDomains) self.zesDeviceGetCardPowerDomain = _zesDeviceGetCardPowerDomain_t(self.__dditable.Device.pfnGetCardPowerDomain) self.zesDeviceEnumPsus = _zesDeviceEnumPsus_t(self.__dditable.Device.pfnEnumPsus) self.zesDeviceEnumRasErrorSets = _zesDeviceEnumRasErrorSets_t(self.__dditable.Device.pfnEnumRasErrorSets) self.zesDeviceEnumSchedulers = _zesDeviceEnumSchedulers_t(self.__dditable.Device.pfnEnumSchedulers) self.zesDeviceEnumStandbyDomains = _zesDeviceEnumStandbyDomains_t(self.__dditable.Device.pfnEnumStandbyDomains) self.zesDeviceEnumTemperatureSensors = _zesDeviceEnumTemperatureSensors_t(self.__dditable.Device.pfnEnumTemperatureSensors) self.zesDeviceEccAvailable = _zesDeviceEccAvailable_t(self.__dditable.Device.pfnEccAvailable) self.zesDeviceEccConfigurable = _zesDeviceEccConfigurable_t(self.__dditable.Device.pfnEccConfigurable) self.zesDeviceGetEccState = _zesDeviceGetEccState_t(self.__dditable.Device.pfnGetEccState) self.zesDeviceSetEccState = _zesDeviceSetEccState_t(self.__dditable.Device.pfnSetEccState) self.zesDeviceGet = _zesDeviceGet_t(self.__dditable.Device.pfnGet) self.zesDeviceSetOverclockWaiver = _zesDeviceSetOverclockWaiver_t(self.__dditable.Device.pfnSetOverclockWaiver) self.zesDeviceGetOverclockDomains = _zesDeviceGetOverclockDomains_t(self.__dditable.Device.pfnGetOverclockDomains) self.zesDeviceGetOverclockControls = _zesDeviceGetOverclockControls_t(self.__dditable.Device.pfnGetOverclockControls) self.zesDeviceResetOverclockSettings = _zesDeviceResetOverclockSettings_t(self.__dditable.Device.pfnResetOverclockSettings) self.zesDeviceReadOverclockState = _zesDeviceReadOverclockState_t(self.__dditable.Device.pfnReadOverclockState) self.zesDeviceEnumOverclockDomains = _zesDeviceEnumOverclockDomains_t(self.__dditable.Device.pfnEnumOverclockDomains) self.zesDeviceResetExt = _zesDeviceResetExt_t(self.__dditable.Device.pfnResetExt) # call driver to get function pointers _DeviceExp = _zes_device_exp_dditable_t() r = ze_result_v(self.__dll.zesGetDeviceExpProcAddrTable(version, byref(_DeviceExp))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.DeviceExp = _DeviceExp # attach function interface to function address self.zesDeviceGetSubDevicePropertiesExp = _zesDeviceGetSubDevicePropertiesExp_t(self.__dditable.DeviceExp.pfnGetSubDevicePropertiesExp) self.zesDeviceEnumActiveVFExp = _zesDeviceEnumActiveVFExp_t(self.__dditable.DeviceExp.pfnEnumActiveVFExp) self.zesDeviceEnumEnabledVFExp = _zesDeviceEnumEnabledVFExp_t(self.__dditable.DeviceExp.pfnEnumEnabledVFExp) # call driver to get function pointers _Driver = _zes_driver_dditable_t() r = ze_result_v(self.__dll.zesGetDriverProcAddrTable(version, byref(_Driver))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Driver = _Driver # attach function interface to function address self.zesDriverEventListen = _zesDriverEventListen_t(self.__dditable.Driver.pfnEventListen) self.zesDriverEventListenEx = _zesDriverEventListenEx_t(self.__dditable.Driver.pfnEventListenEx) self.zesDriverGet = _zesDriverGet_t(self.__dditable.Driver.pfnGet) self.zesDriverGetExtensionProperties = _zesDriverGetExtensionProperties_t(self.__dditable.Driver.pfnGetExtensionProperties) self.zesDriverGetExtensionFunctionAddress = _zesDriverGetExtensionFunctionAddress_t(self.__dditable.Driver.pfnGetExtensionFunctionAddress) # call driver to get function pointers _DriverExp = _zes_driver_exp_dditable_t() r = ze_result_v(self.__dll.zesGetDriverExpProcAddrTable(version, byref(_DriverExp))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.DriverExp = _DriverExp # attach function interface to function address self.zesDriverGetDeviceByUuidExp = _zesDriverGetDeviceByUuidExp_t(self.__dditable.DriverExp.pfnGetDeviceByUuidExp) # call driver to get function pointers _Overclock = _zes_overclock_dditable_t() r = ze_result_v(self.__dll.zesGetOverclockProcAddrTable(version, byref(_Overclock))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Overclock = _Overclock # attach function interface to function address self.zesOverclockGetDomainProperties = _zesOverclockGetDomainProperties_t(self.__dditable.Overclock.pfnGetDomainProperties) self.zesOverclockGetDomainVFProperties = _zesOverclockGetDomainVFProperties_t(self.__dditable.Overclock.pfnGetDomainVFProperties) self.zesOverclockGetDomainControlProperties = _zesOverclockGetDomainControlProperties_t(self.__dditable.Overclock.pfnGetDomainControlProperties) self.zesOverclockGetControlCurrentValue = _zesOverclockGetControlCurrentValue_t(self.__dditable.Overclock.pfnGetControlCurrentValue) self.zesOverclockGetControlPendingValue = _zesOverclockGetControlPendingValue_t(self.__dditable.Overclock.pfnGetControlPendingValue) self.zesOverclockSetControlUserValue = _zesOverclockSetControlUserValue_t(self.__dditable.Overclock.pfnSetControlUserValue) self.zesOverclockGetControlState = _zesOverclockGetControlState_t(self.__dditable.Overclock.pfnGetControlState) self.zesOverclockGetVFPointValues = _zesOverclockGetVFPointValues_t(self.__dditable.Overclock.pfnGetVFPointValues) self.zesOverclockSetVFPointValues = _zesOverclockSetVFPointValues_t(self.__dditable.Overclock.pfnSetVFPointValues) # call driver to get function pointers _Scheduler = _zes_scheduler_dditable_t() r = ze_result_v(self.__dll.zesGetSchedulerProcAddrTable(version, byref(_Scheduler))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Scheduler = _Scheduler # attach function interface to function address self.zesSchedulerGetProperties = _zesSchedulerGetProperties_t(self.__dditable.Scheduler.pfnGetProperties) self.zesSchedulerGetCurrentMode = _zesSchedulerGetCurrentMode_t(self.__dditable.Scheduler.pfnGetCurrentMode) self.zesSchedulerGetTimeoutModeProperties = _zesSchedulerGetTimeoutModeProperties_t(self.__dditable.Scheduler.pfnGetTimeoutModeProperties) self.zesSchedulerGetTimesliceModeProperties = _zesSchedulerGetTimesliceModeProperties_t(self.__dditable.Scheduler.pfnGetTimesliceModeProperties) self.zesSchedulerSetTimeoutMode = _zesSchedulerSetTimeoutMode_t(self.__dditable.Scheduler.pfnSetTimeoutMode) self.zesSchedulerSetTimesliceMode = _zesSchedulerSetTimesliceMode_t(self.__dditable.Scheduler.pfnSetTimesliceMode) self.zesSchedulerSetExclusiveMode = _zesSchedulerSetExclusiveMode_t(self.__dditable.Scheduler.pfnSetExclusiveMode) self.zesSchedulerSetComputeUnitDebugMode = _zesSchedulerSetComputeUnitDebugMode_t(self.__dditable.Scheduler.pfnSetComputeUnitDebugMode) # call driver to get function pointers _PerformanceFactor = _zes_performance_factor_dditable_t() r = ze_result_v(self.__dll.zesGetPerformanceFactorProcAddrTable(version, byref(_PerformanceFactor))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.PerformanceFactor = _PerformanceFactor # attach function interface to function address self.zesPerformanceFactorGetProperties = _zesPerformanceFactorGetProperties_t(self.__dditable.PerformanceFactor.pfnGetProperties) self.zesPerformanceFactorGetConfig = _zesPerformanceFactorGetConfig_t(self.__dditable.PerformanceFactor.pfnGetConfig) self.zesPerformanceFactorSetConfig = _zesPerformanceFactorSetConfig_t(self.__dditable.PerformanceFactor.pfnSetConfig) # call driver to get function pointers _Power = _zes_power_dditable_t() r = ze_result_v(self.__dll.zesGetPowerProcAddrTable(version, byref(_Power))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Power = _Power # attach function interface to function address self.zesPowerGetProperties = _zesPowerGetProperties_t(self.__dditable.Power.pfnGetProperties) self.zesPowerGetEnergyCounter = _zesPowerGetEnergyCounter_t(self.__dditable.Power.pfnGetEnergyCounter) self.zesPowerGetLimits = _zesPowerGetLimits_t(self.__dditable.Power.pfnGetLimits) self.zesPowerSetLimits = _zesPowerSetLimits_t(self.__dditable.Power.pfnSetLimits) self.zesPowerGetEnergyThreshold = _zesPowerGetEnergyThreshold_t(self.__dditable.Power.pfnGetEnergyThreshold) self.zesPowerSetEnergyThreshold = _zesPowerSetEnergyThreshold_t(self.__dditable.Power.pfnSetEnergyThreshold) self.zesPowerGetLimitsExt = _zesPowerGetLimitsExt_t(self.__dditable.Power.pfnGetLimitsExt) self.zesPowerSetLimitsExt = _zesPowerSetLimitsExt_t(self.__dditable.Power.pfnSetLimitsExt) # call driver to get function pointers _Frequency = _zes_frequency_dditable_t() r = ze_result_v(self.__dll.zesGetFrequencyProcAddrTable(version, byref(_Frequency))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Frequency = _Frequency # attach function interface to function address self.zesFrequencyGetProperties = _zesFrequencyGetProperties_t(self.__dditable.Frequency.pfnGetProperties) self.zesFrequencyGetAvailableClocks = _zesFrequencyGetAvailableClocks_t(self.__dditable.Frequency.pfnGetAvailableClocks) self.zesFrequencyGetRange = _zesFrequencyGetRange_t(self.__dditable.Frequency.pfnGetRange) self.zesFrequencySetRange = _zesFrequencySetRange_t(self.__dditable.Frequency.pfnSetRange) self.zesFrequencyGetState = _zesFrequencyGetState_t(self.__dditable.Frequency.pfnGetState) self.zesFrequencyGetThrottleTime = _zesFrequencyGetThrottleTime_t(self.__dditable.Frequency.pfnGetThrottleTime) self.zesFrequencyOcGetCapabilities = _zesFrequencyOcGetCapabilities_t(self.__dditable.Frequency.pfnOcGetCapabilities) self.zesFrequencyOcGetFrequencyTarget = _zesFrequencyOcGetFrequencyTarget_t(self.__dditable.Frequency.pfnOcGetFrequencyTarget) self.zesFrequencyOcSetFrequencyTarget = _zesFrequencyOcSetFrequencyTarget_t(self.__dditable.Frequency.pfnOcSetFrequencyTarget) self.zesFrequencyOcGetVoltageTarget = _zesFrequencyOcGetVoltageTarget_t(self.__dditable.Frequency.pfnOcGetVoltageTarget) self.zesFrequencyOcSetVoltageTarget = _zesFrequencyOcSetVoltageTarget_t(self.__dditable.Frequency.pfnOcSetVoltageTarget) self.zesFrequencyOcSetMode = _zesFrequencyOcSetMode_t(self.__dditable.Frequency.pfnOcSetMode) self.zesFrequencyOcGetMode = _zesFrequencyOcGetMode_t(self.__dditable.Frequency.pfnOcGetMode) self.zesFrequencyOcGetIccMax = _zesFrequencyOcGetIccMax_t(self.__dditable.Frequency.pfnOcGetIccMax) self.zesFrequencyOcSetIccMax = _zesFrequencyOcSetIccMax_t(self.__dditable.Frequency.pfnOcSetIccMax) self.zesFrequencyOcGetTjMax = _zesFrequencyOcGetTjMax_t(self.__dditable.Frequency.pfnOcGetTjMax) self.zesFrequencyOcSetTjMax = _zesFrequencyOcSetTjMax_t(self.__dditable.Frequency.pfnOcSetTjMax) # call driver to get function pointers _Engine = _zes_engine_dditable_t() r = ze_result_v(self.__dll.zesGetEngineProcAddrTable(version, byref(_Engine))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Engine = _Engine # attach function interface to function address self.zesEngineGetProperties = _zesEngineGetProperties_t(self.__dditable.Engine.pfnGetProperties) self.zesEngineGetActivity = _zesEngineGetActivity_t(self.__dditable.Engine.pfnGetActivity) self.zesEngineGetActivityExt = _zesEngineGetActivityExt_t(self.__dditable.Engine.pfnGetActivityExt) # call driver to get function pointers _Standby = _zes_standby_dditable_t() r = ze_result_v(self.__dll.zesGetStandbyProcAddrTable(version, byref(_Standby))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Standby = _Standby # attach function interface to function address self.zesStandbyGetProperties = _zesStandbyGetProperties_t(self.__dditable.Standby.pfnGetProperties) self.zesStandbyGetMode = _zesStandbyGetMode_t(self.__dditable.Standby.pfnGetMode) self.zesStandbySetMode = _zesStandbySetMode_t(self.__dditable.Standby.pfnSetMode) # call driver to get function pointers _Firmware = _zes_firmware_dditable_t() r = ze_result_v(self.__dll.zesGetFirmwareProcAddrTable(version, byref(_Firmware))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Firmware = _Firmware # attach function interface to function address self.zesFirmwareGetProperties = _zesFirmwareGetProperties_t(self.__dditable.Firmware.pfnGetProperties) self.zesFirmwareFlash = _zesFirmwareFlash_t(self.__dditable.Firmware.pfnFlash) self.zesFirmwareGetFlashProgress = _zesFirmwareGetFlashProgress_t(self.__dditable.Firmware.pfnGetFlashProgress) self.zesFirmwareGetConsoleLogs = _zesFirmwareGetConsoleLogs_t(self.__dditable.Firmware.pfnGetConsoleLogs) # call driver to get function pointers _FirmwareExp = _zes_firmware_exp_dditable_t() r = ze_result_v(self.__dll.zesGetFirmwareExpProcAddrTable(version, byref(_FirmwareExp))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.FirmwareExp = _FirmwareExp # attach function interface to function address self.zesFirmwareGetSecurityVersionExp = _zesFirmwareGetSecurityVersionExp_t(self.__dditable.FirmwareExp.pfnGetSecurityVersionExp) self.zesFirmwareSetSecurityVersionExp = _zesFirmwareSetSecurityVersionExp_t(self.__dditable.FirmwareExp.pfnSetSecurityVersionExp) # call driver to get function pointers _Memory = _zes_memory_dditable_t() r = ze_result_v(self.__dll.zesGetMemoryProcAddrTable(version, byref(_Memory))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Memory = _Memory # attach function interface to function address self.zesMemoryGetProperties = _zesMemoryGetProperties_t(self.__dditable.Memory.pfnGetProperties) self.zesMemoryGetState = _zesMemoryGetState_t(self.__dditable.Memory.pfnGetState) self.zesMemoryGetBandwidth = _zesMemoryGetBandwidth_t(self.__dditable.Memory.pfnGetBandwidth) # call driver to get function pointers _FabricPort = _zes_fabric_port_dditable_t() r = ze_result_v(self.__dll.zesGetFabricPortProcAddrTable(version, byref(_FabricPort))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.FabricPort = _FabricPort # attach function interface to function address self.zesFabricPortGetProperties = _zesFabricPortGetProperties_t(self.__dditable.FabricPort.pfnGetProperties) self.zesFabricPortGetLinkType = _zesFabricPortGetLinkType_t(self.__dditable.FabricPort.pfnGetLinkType) self.zesFabricPortGetConfig = _zesFabricPortGetConfig_t(self.__dditable.FabricPort.pfnGetConfig) self.zesFabricPortSetConfig = _zesFabricPortSetConfig_t(self.__dditable.FabricPort.pfnSetConfig) self.zesFabricPortGetState = _zesFabricPortGetState_t(self.__dditable.FabricPort.pfnGetState) self.zesFabricPortGetThroughput = _zesFabricPortGetThroughput_t(self.__dditable.FabricPort.pfnGetThroughput) self.zesFabricPortGetFabricErrorCounters = _zesFabricPortGetFabricErrorCounters_t(self.__dditable.FabricPort.pfnGetFabricErrorCounters) self.zesFabricPortGetMultiPortThroughput = _zesFabricPortGetMultiPortThroughput_t(self.__dditable.FabricPort.pfnGetMultiPortThroughput) # call driver to get function pointers _Temperature = _zes_temperature_dditable_t() r = ze_result_v(self.__dll.zesGetTemperatureProcAddrTable(version, byref(_Temperature))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Temperature = _Temperature # attach function interface to function address self.zesTemperatureGetProperties = _zesTemperatureGetProperties_t(self.__dditable.Temperature.pfnGetProperties) self.zesTemperatureGetConfig = _zesTemperatureGetConfig_t(self.__dditable.Temperature.pfnGetConfig) self.zesTemperatureSetConfig = _zesTemperatureSetConfig_t(self.__dditable.Temperature.pfnSetConfig) self.zesTemperatureGetState = _zesTemperatureGetState_t(self.__dditable.Temperature.pfnGetState) # call driver to get function pointers _Psu = _zes_psu_dditable_t() r = ze_result_v(self.__dll.zesGetPsuProcAddrTable(version, byref(_Psu))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Psu = _Psu # attach function interface to function address self.zesPsuGetProperties = _zesPsuGetProperties_t(self.__dditable.Psu.pfnGetProperties) self.zesPsuGetState = _zesPsuGetState_t(self.__dditable.Psu.pfnGetState) # call driver to get function pointers _Fan = _zes_fan_dditable_t() r = ze_result_v(self.__dll.zesGetFanProcAddrTable(version, byref(_Fan))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Fan = _Fan # attach function interface to function address self.zesFanGetProperties = _zesFanGetProperties_t(self.__dditable.Fan.pfnGetProperties) self.zesFanGetConfig = _zesFanGetConfig_t(self.__dditable.Fan.pfnGetConfig) self.zesFanSetDefaultMode = _zesFanSetDefaultMode_t(self.__dditable.Fan.pfnSetDefaultMode) self.zesFanSetFixedSpeedMode = _zesFanSetFixedSpeedMode_t(self.__dditable.Fan.pfnSetFixedSpeedMode) self.zesFanSetSpeedTableMode = _zesFanSetSpeedTableMode_t(self.__dditable.Fan.pfnSetSpeedTableMode) self.zesFanGetState = _zesFanGetState_t(self.__dditable.Fan.pfnGetState) # call driver to get function pointers _Led = _zes_led_dditable_t() r = ze_result_v(self.__dll.zesGetLedProcAddrTable(version, byref(_Led))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Led = _Led # attach function interface to function address self.zesLedGetProperties = _zesLedGetProperties_t(self.__dditable.Led.pfnGetProperties) self.zesLedGetState = _zesLedGetState_t(self.__dditable.Led.pfnGetState) self.zesLedSetState = _zesLedSetState_t(self.__dditable.Led.pfnSetState) self.zesLedSetColor = _zesLedSetColor_t(self.__dditable.Led.pfnSetColor) # call driver to get function pointers _Ras = _zes_ras_dditable_t() r = ze_result_v(self.__dll.zesGetRasProcAddrTable(version, byref(_Ras))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Ras = _Ras # attach function interface to function address self.zesRasGetProperties = _zesRasGetProperties_t(self.__dditable.Ras.pfnGetProperties) self.zesRasGetConfig = _zesRasGetConfig_t(self.__dditable.Ras.pfnGetConfig) self.zesRasSetConfig = _zesRasSetConfig_t(self.__dditable.Ras.pfnSetConfig) self.zesRasGetState = _zesRasGetState_t(self.__dditable.Ras.pfnGetState) # call driver to get function pointers _RasExp = _zes_ras_exp_dditable_t() r = ze_result_v(self.__dll.zesGetRasExpProcAddrTable(version, byref(_RasExp))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.RasExp = _RasExp # attach function interface to function address self.zesRasGetStateExp = _zesRasGetStateExp_t(self.__dditable.RasExp.pfnGetStateExp) self.zesRasClearStateExp = _zesRasClearStateExp_t(self.__dditable.RasExp.pfnClearStateExp) # call driver to get function pointers _Diagnostics = _zes_diagnostics_dditable_t() r = ze_result_v(self.__dll.zesGetDiagnosticsProcAddrTable(version, byref(_Diagnostics))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.Diagnostics = _Diagnostics # attach function interface to function address self.zesDiagnosticsGetProperties = _zesDiagnosticsGetProperties_t(self.__dditable.Diagnostics.pfnGetProperties) self.zesDiagnosticsGetTests = _zesDiagnosticsGetTests_t(self.__dditable.Diagnostics.pfnGetTests) self.zesDiagnosticsRunTests = _zesDiagnosticsRunTests_t(self.__dditable.Diagnostics.pfnRunTests) # call driver to get function pointers _VFManagementExp = _zes_vf_management_exp_dditable_t() r = ze_result_v(self.__dll.zesGetVFManagementExpProcAddrTable(version, byref(_VFManagementExp))) if r != ze_result_v.SUCCESS: raise Exception(r) self.__dditable.VFManagementExp = _VFManagementExp # attach function interface to function address self.zesVFManagementGetVFPropertiesExp = _zesVFManagementGetVFPropertiesExp_t(self.__dditable.VFManagementExp.pfnGetVFPropertiesExp) self.zesVFManagementGetVFMemoryUtilizationExp = _zesVFManagementGetVFMemoryUtilizationExp_t(self.__dditable.VFManagementExp.pfnGetVFMemoryUtilizationExp) self.zesVFManagementGetVFEngineUtilizationExp = _zesVFManagementGetVFEngineUtilizationExp_t(self.__dditable.VFManagementExp.pfnGetVFEngineUtilizationExp) self.zesVFManagementSetVFTelemetryModeExp = _zesVFManagementSetVFTelemetryModeExp_t(self.__dditable.VFManagementExp.pfnSetVFTelemetryModeExp) self.zesVFManagementSetVFTelemetrySamplingIntervalExp = _zesVFManagementSetVFTelemetrySamplingIntervalExp_t(self.__dditable.VFManagementExp.pfnSetVFTelemetrySamplingIntervalExp) self.zesVFManagementGetVFCapabilitiesExp = _zesVFManagementGetVFCapabilitiesExp_t(self.__dditable.VFManagementExp.pfnGetVFCapabilitiesExp) self.zesVFManagementGetVFMemoryUtilizationExp2 = _zesVFManagementGetVFMemoryUtilizationExp2_t(self.__dditable.VFManagementExp.pfnGetVFMemoryUtilizationExp2) self.zesVFManagementGetVFEngineUtilizationExp2 = _zesVFManagementGetVFEngineUtilizationExp2_t(self.__dditable.VFManagementExp.pfnGetVFEngineUtilizationExp2) self.zesVFManagementGetVFCapabilitiesExp2 = _zesVFManagementGetVFCapabilitiesExp2_t(self.__dditable.VFManagementExp.pfnGetVFCapabilitiesExp2) # success!