123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- #ifndef __APPLE__
- #ifndef __GPU_INFO_ONEAPI_H__
- #define __GPU_INFO_ONEAPI_H__
- #include "gpu_info.h"
- #define ZE_MAX_DEVICE_NAME 256
- #define ZE_MAX_DEVICE_UUID_SIZE 16
- #define ZES_STRING_PROPERTY_SIZE 64
- #define ZE_BIT(_i) (1 << _i)
- // Just enough typedef's to dlopen/dlsym for memory information
- typedef enum ze_result_t {
- ZE_RESULT_SUCCESS = 0,
- // Other values omitted for now...
- } ze_result_t;
- typedef uint8_t ze_bool_t;
- typedef struct _zes_driver_handle_t *zes_driver_handle_t;
- typedef struct _zes_device_handle_t *zes_device_handle_t;
- typedef struct _zes_mem_handle_t *zes_mem_handle_t;
- typedef enum _ze_structure_type_t {
- ZE_STRUCTURE_TYPE_FORCE_UINT32 = 0x7fffffff
- } ze_structure_type_t;
- typedef enum _zes_structure_type_t {
- ZES_STRUCTURE_TYPE_DEVICE_PROPERTIES = 0x1,
- ZES_STRUCTURE_TYPE_MEM_PROPERTIES = 0xb,
- ZES_STRUCTURE_TYPE_MEM_STATE = 0x1e,
- ZES_STRUCTURE_TYPE_DEVICE_EXT_PROPERTIES = 0x2d,
- ZES_STRUCTURE_TYPE_FORCE_UINT32 = 0x7fffffff
- } zes_structure_type_t;
- typedef enum _zes_mem_type_t {
- ZES_MEM_TYPE_FORCE_UINT32 = 0x7fffffff
- } zes_mem_type_t;
- typedef enum _zes_mem_loc_t {
- ZES_MEM_LOC_SYSTEM = 0,
- ZES_MEM_LOC_DEVICE = 1,
- ZES_MEM_LOC_FORCE_UINT32 = 0x7fffffff
- } zes_mem_loc_t;
- typedef enum _zes_mem_health_t {
- ZES_MEM_HEALTH_FORCE_UINT32 = 0x7fffffff
- } zes_mem_health_t;
- typedef struct _ze_device_uuid_t {
- uint8_t id[ZE_MAX_DEVICE_UUID_SIZE];
- } ze_device_uuid_t;
- typedef struct _zes_uuid_t {
- uint8_t id[ZE_MAX_DEVICE_UUID_SIZE];
- } zes_uuid_t;
- typedef enum _ze_device_type_t {
- ZE_DEVICE_TYPE_GPU = 1,
- ZE_DEVICE_TYPE_CPU = 2,
- ZE_DEVICE_TYPE_FPGA = 3,
- ZE_DEVICE_TYPE_MCA = 4,
- ZE_DEVICE_TYPE_VPU = 5,
- ZE_DEVICE_TYPE_FORCE_UINT32 = 0x7fffffff
- } ze_device_type_t;
- typedef enum _zes_device_type_t {
- ZES_DEVICE_TYPE_GPU = 1,
- ZES_DEVICE_TYPE_CPU = 2,
- ZES_DEVICE_TYPE_FPGA = 3,
- ZES_DEVICE_TYPE_MCA = 4,
- ZES_DEVICE_TYPE_VPU = 5,
- ZES_DEVICE_TYPE_FORCE_UINT32 = 0x7fffffff
- } zes_device_type_t;
- typedef uint32_t ze_device_property_flags_t;
- typedef enum _ze_device_property_flag_t {
- ZE_DEVICE_PROPERTY_FLAG_INTEGRATED = ZE_BIT(0),
- ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE = ZE_BIT(1),
- ZE_DEVICE_PROPERTY_FLAG_ECC = ZE_BIT(2),
- ZE_DEVICE_PROPERTY_FLAG_ONDEMANDPAGING = ZE_BIT(3),
- ZE_DEVICE_PROPERTY_FLAG_FORCE_UINT32 = 0x7fffffff
- } ze_device_property_flag_t;
- typedef uint32_t zes_device_property_flags_t;
- typedef enum _zes_device_property_flag_t {
- ZES_DEVICE_PROPERTY_FLAG_INTEGRATED = ZE_BIT(0),
- ZES_DEVICE_PROPERTY_FLAG_SUBDEVICE = ZE_BIT(1),
- ZES_DEVICE_PROPERTY_FLAG_ECC = ZE_BIT(2),
- ZES_DEVICE_PROPERTY_FLAG_ONDEMANDPAGING = ZE_BIT(3),
- ZES_DEVICE_PROPERTY_FLAG_FORCE_UINT32 = 0x7fffffff
- } zes_device_property_flag_t;
- typedef struct _ze_device_properties_t {
- ze_structure_type_t stype;
- void *pNext;
- ze_device_type_t type;
- uint32_t vendorId;
- uint32_t deviceId;
- ze_device_property_flags_t flags;
- uint32_t subdeviceId;
- uint32_t coreClockRate;
- uint64_t maxMemAllocSize;
- uint32_t maxHardwareContexts;
- uint32_t maxCommandQueuePriority;
- uint32_t numThreadsPerEU;
- uint32_t physicalEUSimdWidth;
- uint32_t numEUsPerSubslice;
- uint32_t numSubslicesPerSlice;
- uint32_t numSlices;
- uint64_t timerResolution;
- uint32_t timestampValidBits;
- uint32_t kernelTimestampValidBits;
- ze_device_uuid_t uuid;
- char name[ZE_MAX_DEVICE_NAME];
- } ze_device_properties_t;
- typedef struct _zes_device_properties_t {
- zes_structure_type_t stype;
- void *pNext;
- ze_device_properties_t core;
- uint32_t numSubdevices;
- char serialNumber[ZES_STRING_PROPERTY_SIZE];
- char boardNumber[ZES_STRING_PROPERTY_SIZE];
- char brandName[ZES_STRING_PROPERTY_SIZE];
- char modelName[ZES_STRING_PROPERTY_SIZE];
- char vendorName[ZES_STRING_PROPERTY_SIZE];
- char driverVersion[ZES_STRING_PROPERTY_SIZE];
- } zes_device_properties_t;
- typedef struct _zes_device_ext_properties_t {
- zes_structure_type_t stype;
- void *pNext;
- zes_uuid_t uuid;
- zes_device_type_t type;
- zes_device_property_flags_t flags;
- } zes_device_ext_properties_t;
- typedef struct _zes_mem_properties_t {
- zes_structure_type_t stype;
- void *pNext;
- zes_mem_type_t type;
- ze_bool_t onSubdevice;
- uint32_t subdeviceId;
- zes_mem_loc_t location;
- uint64_t physicalSize;
- int32_t busWidth;
- int32_t numChannels;
- } zes_mem_properties_t;
- typedef struct _zes_mem_state_t {
- zes_structure_type_t stype;
- const void *pNext;
- zes_mem_health_t health;
- uint64_t free;
- uint64_t size;
- } zes_mem_state_t;
- typedef struct oneapi_handle {
- void *handle;
- uint16_t verbose;
- uint32_t num_drivers;
- zes_driver_handle_t *drivers;
- uint32_t *num_devices;
- zes_device_handle_t **devices;
- // TODO Driver major, minor information
- // int driver_major;
- // int driver_minor;
- ze_result_t (*zesInit)(int);
- ze_result_t (*zesDriverGet)(uint32_t *pCount, zes_driver_handle_t *phDrivers);
- ze_result_t (*zesDeviceGet)(zes_driver_handle_t hDriver, uint32_t *pCount,
- zes_device_handle_t *phDevices);
- ze_result_t (*zesDeviceGetProperties)(zes_device_handle_t hDevice,
- zes_device_properties_t *pProperties);
- ze_result_t (*zesDeviceEnumMemoryModules)(zes_device_handle_t hDevice,
- uint32_t *pCount,
- zes_mem_handle_t *phMemory);
- ze_result_t (*zesMemoryGetProperties)(zes_mem_handle_t hMemory,
- zes_mem_properties_t *pProperties);
- ze_result_t (*zesMemoryGetState)(zes_mem_handle_t hMemory,
- zes_mem_state_t *pState);
- } oneapi_handle_t;
- typedef struct oneapi_init_resp {
- char *err; // If err is non-null handle is invalid
- oneapi_handle_t oh;
- } oneapi_init_resp_t;
- typedef struct oneapi_version_resp {
- ze_result_t status;
- char *str; // Contains version or error string if status != 0
- } oneapi_version_resp_t;
- void oneapi_init(char *oneapi_lib_path, oneapi_init_resp_t *resp);
- void oneapi_check_vram(oneapi_handle_t h, int driver, int device,
- mem_info_t *resp);
- void oneapi_release(oneapi_handle_t h);
- int oneapi_get_device_count(oneapi_handle_t h, int driver);
- #endif // __GPU_INFO_INTEL_H__
- #endif // __APPLE__
|