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;
+17
Просмотреть файл
@@ -20,6 +20,8 @@
#pragma once
#include <rocprofiler/version.h>
// NOLINTNEXTLINE(performance-enum-size)
typedef enum
{
@@ -223,5 +225,20 @@ typedef enum
ROCPROFILER_HSA_API_ID_hsa_ext_image_data_get_info_with_layout,
ROCPROFILER_HSA_API_ID_hsa_ext_image_create_with_layout,
#if HSA_AMD_EXT_API_TABLE_MAJOR_VERSION >= 0x02
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_address_reserve,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_address_free,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_handle_create,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_handle_release,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_map,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_unmap,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_set_access,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_get_access,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_export_shareable_handle,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_import_shareable_handle,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_retain_alloc_handle,
ROCPROFILER_HSA_API_ID_hsa_amd_vmem_get_alloc_properties_from_handle,
#endif
ROCPROFILER_HSA_API_ID_LAST,
} rocprofiler_hsa_api_id_t;
+8
Просмотреть файл
@@ -52,6 +52,9 @@
// compiler information
#define ROCPROFILER_COMPILER_ID "@CMAKE_CXX_COMPILER_ID@"
#define ROCPROFILER_COMPILER_VERSION "@CMAKE_CXX_COMPILER_VERSION@"
#define ROCPROFILER_HSA_RUNTIME_VERSION_MAJOR @HSA_RUNTIME_VERSION_MAJOR@
#define ROCPROFILER_HSA_RUNTIME_VERSION_MINOR @HSA_RUNTIME_VERSION_MINOR@
// clang-format on
#define ROCPROFILER_COMPILER_STRING ROCPROFILER_COMPILER_ID " v" ROCPROFILER_COMPILER_VERSION
@@ -59,3 +62,8 @@
#define ROCPROFILER_VERSION \
((10000 * ROCPROFILER_VERSION_MAJOR) + (100 * ROCPROFILER_VERSION_MINOR) + \
ROCPROFILER_VERSION_PATCH)
// latest hsa-runtime version supported
#define ROCPROFILER_HSA_RUNTIME_VERSION \
((10000 * ROCPROFILER_HSA_RUNTIME_VERSION_MAJOR) + \
(100 * ROCPROFILER_HSA_RUNTIME_VERSION_MINOR))