Support different HSA table sizes (#44)

* Support different HSA table sizes

- Use hsa-runtime64_VERSION to define pp defs for major and minor version in version.h.in
- Update version.h.in to define ROCPROFILER_HSA_RUNTIME_VERSION_{MAJOR,MINOR}
- Use HSA_AMD_INTERFACE_VERSION_{MAJOR,MINOR} to handle hsa_amd_vmem_* support
- add template specializations for hsa_amd_vmem_* functions
- implement HSA version based static asserts

* Debug commit

- print pp value for ROCPROFILER_HSA_RUNTIME_VERSION and ROCPROFILER_HSA_RUNTIME_EXT_AMD_VERSION

* Debug commit

- fix ROCPROFILER_HSA_RUNTIME_VERSION value

* Remove debug edits

* Update lib/rocprofiler/hsa/utils.hpp

- support outputting:
  - hsa_amd_memory_pool_t
  - hsa_amd_vmem_alloc_handle_t
  - hsa_amd_memory_access_desc_t
  - hsa_amd_memory_pool_t

* Update lib/rocprofiler/hsa/utils.hpp

- tweak to join_impl

* Update lib/rocprofiler/hsa/utils.hpp

- use formatting when possible

* Update lib/rocprofiler/hsa/types.hpp

- Support API_TABLE_MAJOR_VERSIONS > 1

* Update lib/rocprofiler/hsa/types.hpp

- remove inherit from undefined template specialization

* Update lib/rocprofiler/hsa/utils.hpp

- remove duplicate formatter specialization

* Update include/rocprofiler/hsa/api_args.h

- remove const from non-pointer anonymous structs in union

* Use HSA_AMD_EXT_API_TABLE_MAJOR_VERSION
此提交包含在:
Jonathan R. Madsen
2023-09-13 13:14:28 -05:00
提交者 GitHub
父節點 729c34fb60
當前提交 c0cb907fee
共有 8 個檔案被更改,包括 425 行新增 和 34 行删除
+75
查看文件
@@ -24,6 +24,7 @@
#include <hsa/hsa_api_trace.h>
#include <hsa/hsa_ext_amd.h>
#include <hsa/hsa_ext_image.h>
#include <rocprofiler/version.h>
typedef union rocprofiler_hsa_api_args_u
{
@@ -1221,4 +1222,78 @@ typedef union rocprofiler_hsa_api_args_u
size_t image_data_slice_pitch;
hsa_ext_image_t* image;
} hsa_ext_image_create_with_layout;
#if HSA_AMD_EXT_API_TABLE_MAJOR_VERSION >= 0x02
struct
{
void** ptr;
size_t size;
uint64_t address;
uint64_t flags;
} hsa_amd_vmem_address_reserve;
struct
{
void* ptr;
size_t size;
} hsa_amd_vmem_address_free;
struct
{
hsa_amd_memory_pool_t pool;
size_t size;
hsa_amd_memory_type_t type;
uint64_t flags;
hsa_amd_vmem_alloc_handle_t* memory_handle;
} hsa_amd_vmem_handle_create;
struct
{
hsa_amd_vmem_alloc_handle_t memory_handle;
} hsa_amd_vmem_handle_release;
struct
{
void* va;
size_t size;
size_t in_offset;
hsa_amd_vmem_alloc_handle_t memory_handle;
uint64_t flags;
} hsa_amd_vmem_map;
struct
{
void* va;
size_t size;
} hsa_amd_vmem_unmap;
struct
{
void* va;
size_t size;
const hsa_amd_memory_access_desc_t* desc;
size_t desc_cnt;
} hsa_amd_vmem_set_access;
struct
{
void* va;
hsa_access_permission_t* perms;
hsa_agent_t agent_handle;
} hsa_amd_vmem_get_access;
struct
{
int* dmabuf_fd;
hsa_amd_vmem_alloc_handle_t handle;
uint64_t flags;
} hsa_amd_vmem_export_shareable_handle;
struct
{
int dmabuf_fd;
hsa_amd_vmem_alloc_handle_t* handle;
} hsa_amd_vmem_import_shareable_handle;
struct
{
hsa_amd_vmem_alloc_handle_t* handle;
void* addr;
} hsa_amd_vmem_retain_alloc_handle;
struct
{
hsa_amd_vmem_alloc_handle_t alloc_handle;
hsa_amd_memory_pool_t* pool;
hsa_amd_memory_type_t* type;
} hsa_amd_vmem_get_alloc_properties_from_handle;
#endif
} rocprofiler_hsa_api_args_t;