gpu_info_rocm.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef __APPLE__
  2. #ifndef __GPU_INFO_ROCM_H__
  3. #define __GPU_INFO_ROCM_H__
  4. #include "gpu_info.h"
  5. // Just enough typedef's to dlopen/dlsym for memory information
  6. typedef enum rsmi_status_return {
  7. RSMI_STATUS_SUCCESS = 0,
  8. // Other values omitted for now...
  9. } rsmi_status_t;
  10. typedef enum rsmi_memory_type {
  11. RSMI_MEM_TYPE_VRAM = 0,
  12. RSMI_MEM_TYPE_VIS_VRAM,
  13. RSMI_MEM_TYPE_GTT,
  14. } rsmi_memory_type_t;
  15. typedef struct {
  16. uint32_t major;
  17. uint32_t minor;
  18. uint32_t patch;
  19. const char *build;
  20. } rsmi_version_t;
  21. typedef struct rocm_handle {
  22. void *handle;
  23. uint16_t verbose;
  24. rsmi_status_t (*rsmi_init)(uint64_t);
  25. rsmi_status_t (*rsmi_shut_down)(void);
  26. rsmi_status_t (*rsmi_dev_memory_total_get)(uint32_t, rsmi_memory_type_t, uint64_t *);
  27. rsmi_status_t (*rsmi_dev_memory_usage_get)(uint32_t, rsmi_memory_type_t, uint64_t *);
  28. rsmi_status_t (*rsmi_version_get) (rsmi_version_t *version);
  29. rsmi_status_t (*rsmi_num_monitor_devices) (uint32_t *);
  30. rsmi_status_t (*rsmi_dev_id_get)(uint32_t, uint16_t *);
  31. rsmi_status_t (*rsmi_dev_name_get) (uint32_t,char *,size_t);
  32. rsmi_status_t (*rsmi_dev_brand_get) (uint32_t, char *, uint32_t);
  33. rsmi_status_t (*rsmi_dev_vendor_name_get) (uint32_t, char *, uint32_t);
  34. rsmi_status_t (*rsmi_dev_vram_vendor_get) (uint32_t, char *, uint32_t);
  35. rsmi_status_t (*rsmi_dev_serial_number_get) (uint32_t, char *, uint32_t);
  36. rsmi_status_t (*rsmi_dev_subsystem_name_get) (uint32_t, char *, uint32_t);
  37. rsmi_status_t (*rsmi_dev_vbios_version_get) (uint32_t, char *, uint32_t);
  38. } rocm_handle_t;
  39. typedef struct rocm_init_resp {
  40. char *err; // If err is non-null handle is invalid
  41. rocm_handle_t rh;
  42. } rocm_init_resp_t;
  43. typedef struct rocm_version_resp {
  44. rsmi_status_t status;
  45. char *str; // Contains version or error string if status != 0
  46. } rocm_version_resp_t;
  47. void rocm_init(char *rocm_lib_path, rocm_init_resp_t *resp);
  48. void rocm_check_vram(rocm_handle_t rh, mem_info_t *resp);
  49. void rocm_get_version(rocm_handle_t rh, rocm_version_resp_t *resp);
  50. #endif // __GPU_INFO_ROCM_H__
  51. #endif // __APPLE__