[SDK] KFD new events API (#321)
* Remove page-migration
* Add KFD events API
* Address review comments
* Move assert checks
* Update enum-string utils
* Update codeowners
* Update KFD header
* Add perfetto category
[ROCm/rocprofiler-sdk commit: 8a461afe20]
This commit is contained in:
committed by
GitHub
parent
58532974bc
commit
bde07e7baa
@@ -26,7 +26,7 @@
|
||||
#include <rocprofiler-sdk/defines.h>
|
||||
#include <rocprofiler-sdk/fwd.h>
|
||||
#include <rocprofiler-sdk/hip/api_args.h>
|
||||
#include <rocprofiler-sdk/kfd/page_migration_args.h>
|
||||
#include <rocprofiler-sdk/kfd/kfd_id.h>
|
||||
#include <rocprofiler-sdk/rocdecode/api_args.h>
|
||||
#include <rocprofiler-sdk/rocdecode/api_id.h>
|
||||
|
||||
@@ -339,17 +339,160 @@ typedef struct rocprofiler_buffer_tracing_kernel_dispatch_record_t
|
||||
} rocprofiler_buffer_tracing_kernel_dispatch_record_t;
|
||||
|
||||
/**
|
||||
* @brief ROCProfiler Buffer Page Migration Tracer Record
|
||||
* @brief ROCProfiler Buffer Page Migration event record from KFD.
|
||||
*/
|
||||
typedef struct rocprofiler_buffer_tracing_page_migration_record_t
|
||||
typedef struct rocprofiler_buffer_tracing_kfd_event_page_migrate_record_t
|
||||
{
|
||||
uint64_t size; ///< size of this struct
|
||||
rocprofiler_buffer_tracing_kind_t kind; ///< ROCPROFILER_BUFFER_TRACING_PAGE_MIGRATION
|
||||
rocprofiler_page_migration_operation_t operation;
|
||||
rocprofiler_timestamp_t timestamp; ///< start time in nanoseconds
|
||||
uint32_t pid;
|
||||
rocprofiler_page_migration_args_t args;
|
||||
} rocprofiler_buffer_tracing_page_migration_record_t;
|
||||
uint64_t size; ///< Size of this struct
|
||||
rocprofiler_buffer_tracing_kind_t kind;
|
||||
rocprofiler_kfd_event_page_migrate_operation_t operation;
|
||||
rocprofiler_timestamp_t timestamp; ///< Timestamp of the event as reported by KFD
|
||||
uint32_t pid; ///< PID of the process as reported by KFD
|
||||
rocprofiler_address_t start_address; ///< Start address of the memory range being migrated
|
||||
rocprofiler_address_t end_address; ///< End address of the memory range being migrated
|
||||
rocprofiler_agent_id_t src_agent; ///< Source agent from which pages were migrated
|
||||
rocprofiler_agent_id_t dst_agent; ///< Destination agent to which pages were migrated
|
||||
rocprofiler_agent_id_t prefetch_agent;
|
||||
rocprofiler_agent_id_t preferred_agent;
|
||||
int32_t error_code; ///< Non-zero if there was an error at migrate-end
|
||||
|
||||
///< @var kind
|
||||
///< @brief ::ROCPROFILER_BUFFER_TRACING_KFD_EVENT_PAGE_MIGRATE
|
||||
///< @var operation
|
||||
///< @brief @see rocprofiler_kfd_page_migrate_operation_t
|
||||
///< @var prefetch_agent
|
||||
///< @brief Agent to which memory is to be prefetched.
|
||||
/// This field should be ignored on a migrate-end event
|
||||
///< @var preferred_agent
|
||||
///< @brief Preferred location for this memory
|
||||
/// This field should be ignored on a migrate-end event
|
||||
} rocprofiler_buffer_tracing_kfd_event_page_migrate_record_t;
|
||||
|
||||
/**
|
||||
* @brief ROCProfiler Buffer Page Fault event record from KFD.
|
||||
*/
|
||||
typedef struct rocprofiler_buffer_tracing_kfd_event_page_fault_record_t
|
||||
{
|
||||
uint64_t size; ///< Size of this struct
|
||||
rocprofiler_buffer_tracing_kind_t kind; ///< ::ROCPROFILER_BUFFER_TRACING_KFD_EVENT_PAGE_FAULT
|
||||
rocprofiler_kfd_event_page_fault_operation_t operation;
|
||||
rocprofiler_timestamp_t timestamp; ///< Timestamp of the event as reported by KFD
|
||||
uint32_t pid; ///< PID of the process as reported by KFD
|
||||
rocprofiler_agent_id_t agent_id; ///< Agent ID which generated the fault
|
||||
rocprofiler_address_t address; ///< Memory access that generated the fault event
|
||||
|
||||
///< @var operation
|
||||
///< @brief @see rocprofiler_kfd_page_fault_operation_t
|
||||
} rocprofiler_buffer_tracing_kfd_event_page_fault_record_t;
|
||||
|
||||
/**
|
||||
* @brief ROCProfiler Buffer Queue event record from KFD.
|
||||
*/
|
||||
typedef struct rocprofiler_buffer_tracing_kfd_event_queue_record_t
|
||||
{
|
||||
uint64_t size; ///< Size of this struct
|
||||
rocprofiler_buffer_tracing_kind_t kind; ///< ::ROCPROFILER_BUFFER_TRACING_KFD_EVENT_QUEUE
|
||||
rocprofiler_kfd_event_queue_operation_t operation; ///< @see rocprofiler_kfd_queue_operation_t
|
||||
rocprofiler_timestamp_t timestamp; ///< Timestamp of the event as reported by KFD
|
||||
uint32_t pid; ///< PID of the process as reported by KFD
|
||||
rocprofiler_agent_id_t agent_id; ///< Agent ID on which this event occurred
|
||||
} rocprofiler_buffer_tracing_kfd_event_queue_record_t;
|
||||
|
||||
/**
|
||||
* @brief ROCProfiler Buffer Unmap of memory from GPU event record from KFD.
|
||||
*/
|
||||
typedef struct rocprofiler_buffer_tracing_kfd_event_unmap_from_gpu_record_t
|
||||
{
|
||||
uint64_t size; ///< Size of this struct
|
||||
rocprofiler_buffer_tracing_kind_t kind;
|
||||
rocprofiler_kfd_event_unmap_from_gpu_operation_t operation;
|
||||
rocprofiler_timestamp_t timestamp; ///< Timestamp of the event as reported by KFD
|
||||
uint32_t pid; ///< PID of the process as reported by KFD
|
||||
rocprofiler_agent_id_t agent_id; ///< Agent ID on which memory ranges were unmapped
|
||||
rocprofiler_address_t start_address; ///< Start address of the memory range being unmapped
|
||||
rocprofiler_address_t end_address; ///< End address of the memory range being unmapped
|
||||
|
||||
///< @var kind
|
||||
///< @brief ::ROCPROFILER_BUFFER_TRACING_KFD_EVENT_UNMAP_FROM_GPU
|
||||
///< @var operation
|
||||
///< @brief @see rocprofiler_kfd_unmap_from_gpu_operation_t
|
||||
} rocprofiler_buffer_tracing_kfd_event_unmap_from_gpu_record_t;
|
||||
|
||||
/**
|
||||
* @brief ROCProfiler Buffer Dropped events event record, for when KFD reports
|
||||
* that it has dropped some events.
|
||||
*/
|
||||
typedef struct rocprofiler_buffer_tracing_kfd_event_dropped_events_record_t
|
||||
{
|
||||
uint64_t size; ///< Size of this struct
|
||||
rocprofiler_buffer_tracing_kind_t kind;
|
||||
rocprofiler_kfd_event_dropped_events_operation_t operation;
|
||||
rocprofiler_timestamp_t timestamp; ///< Timestamp of the event as reported by KFD
|
||||
uint32_t pid; ///< PID of the process as reported by KFD
|
||||
uint32_t count; ///< Number of records that KFD dropped
|
||||
|
||||
///< @var kind
|
||||
///< @brief ::ROCPROFILER_BUFFER_TRACING_KFD_EVENT_DROPPED_EVENTS
|
||||
///< @var operation
|
||||
///< @brief @see rocprofiler_kfd_event_dropped_events_operation_t
|
||||
} rocprofiler_buffer_tracing_kfd_event_dropped_events_record_t;
|
||||
|
||||
/**
|
||||
* @brief ROCProfiler Buffer Page Migration (paired) record from KFD.
|
||||
*/
|
||||
typedef struct rocprofiler_buffer_tracing_kfd_page_migrate_record_t
|
||||
{
|
||||
uint64_t size; ///< Size of this struct
|
||||
rocprofiler_buffer_tracing_kind_t kind; ///< ::ROCPROFILER_BUFFER_TRACING_KFD_PAGE_MIGRATE
|
||||
rocprofiler_kfd_page_migrate_operation_t operation;
|
||||
rocprofiler_timestamp_t start_timestamp; ///< Start timestamp as reported by KFD
|
||||
rocprofiler_timestamp_t end_timestamp; ///< End timestamp as reported by KFD
|
||||
uint32_t pid; ///< PID of the process as reported by KFD
|
||||
rocprofiler_address_t start_address; ///< Start address of the memory range being migrated
|
||||
rocprofiler_address_t end_address; ///< End address of the memory range being migrated
|
||||
rocprofiler_agent_id_t src_agent; ///< Source agent from which pages were migrated
|
||||
rocprofiler_agent_id_t dst_agent; ///< Destination agent to which pages were migrated
|
||||
rocprofiler_agent_id_t prefetch_agent;
|
||||
rocprofiler_agent_id_t preferred_agent;
|
||||
int32_t error_code; ///< Non-zero codes are errors, as reported by KFD
|
||||
///< @var operation
|
||||
///< @brief @see rocprofiler_kfd_page_migrate_operation_t
|
||||
///< @var prefetch_agent
|
||||
///< @brief Agent to which memory is to be prefetched.
|
||||
///< @var preferred_agent
|
||||
///< @brief Preferred location for this memory
|
||||
} rocprofiler_buffer_tracing_kfd_page_migrate_record_t;
|
||||
|
||||
/**
|
||||
* @brief ROCProfiler Buffer Page Fault (paired) record from KFD.
|
||||
*/
|
||||
typedef struct rocprofiler_buffer_tracing_kfd_page_fault_record_t
|
||||
{
|
||||
uint64_t size; ///< Size of this struct
|
||||
rocprofiler_buffer_tracing_kind_t kind; ///< ::ROCPROFILER_BUFFER_TRACING_KFD_PAGE_FAULT
|
||||
rocprofiler_kfd_page_fault_operation_t operation;
|
||||
rocprofiler_timestamp_t start_timestamp; ///< Start timestamp as reported by KFD
|
||||
rocprofiler_timestamp_t end_timestamp; ///< End timestamp as reported by KFD
|
||||
uint32_t pid; ///< PID of the process as reported by KFD
|
||||
rocprofiler_agent_id_t agent_id; ///< Agent ID which generated the fault
|
||||
rocprofiler_address_t address; ///< Memory access that generated the page fault
|
||||
///< @var operation
|
||||
///< @brief @see rocprofiler_kfd_page_fault_operation_t
|
||||
} rocprofiler_buffer_tracing_kfd_page_fault_record_t;
|
||||
|
||||
/**
|
||||
* @brief ROCProfiler Buffer Queue suspend (paired) record from KFD.
|
||||
*/
|
||||
typedef struct rocprofiler_buffer_tracing_kfd_queue_record_t
|
||||
{
|
||||
uint64_t size; ///< Size of this struct
|
||||
rocprofiler_buffer_tracing_kind_t kind; ///< ::ROCPROFILER_BUFFER_TRACING_KFD_QUEUE
|
||||
rocprofiler_kfd_queue_operation_t operation; ///< @see rocprofiler_kfd_queue_operation_t
|
||||
rocprofiler_timestamp_t start_timestamp; ///< Start timestamp as reported by KFD
|
||||
rocprofiler_timestamp_t end_timestamp; ///< End timestamp as reported by KFD
|
||||
uint32_t pid; ///< PID of the process as reported by KFD
|
||||
rocprofiler_agent_id_t agent_id; ///< Agent ID on which this event occurred
|
||||
} rocprofiler_buffer_tracing_kfd_queue_record_t;
|
||||
|
||||
/**
|
||||
* @brief ROCProfiler Buffer Scratch Memory Tracer Record
|
||||
|
||||
@@ -1195,10 +1195,6 @@ ROCPROFILER_ENUM_INFO(rocprofiler_buffer_policy_t,
|
||||
ROCPROFILER_BUFFER_POLICY_NONE,
|
||||
ROCPROFILER_BUFFER_POLICY_LAST,
|
||||
false);
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_page_migration_operation_t,
|
||||
ROCPROFILER_PAGE_MIGRATION_NONE,
|
||||
ROCPROFILER_PAGE_MIGRATION_LAST,
|
||||
false);
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_scratch_memory_operation_t,
|
||||
ROCPROFILER_SCRATCH_MEMORY_NONE,
|
||||
ROCPROFILER_SCRATCH_MEMORY_LAST,
|
||||
@@ -1243,19 +1239,40 @@ ROCPROFILER_ENUM_INFO(rocprofiler_pc_sampling_record_kind_t,
|
||||
ROCPROFILER_PC_SAMPLING_RECORD_LAST,
|
||||
false);
|
||||
|
||||
// page-migration
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_page_migration_trigger_t,
|
||||
ROCPROFILER_PAGE_MIGRATION_TRIGGER_NONE,
|
||||
ROCPROFILER_PAGE_MIGRATION_TRIGGER_LAST,
|
||||
// kfd/kfd_id.h
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_kfd_event_page_migrate_operation_t,
|
||||
ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_NONE,
|
||||
ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_LAST,
|
||||
false);
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_page_migration_queue_suspend_trigger_t,
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_NONE,
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_LAST,
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_kfd_event_page_fault_operation_t,
|
||||
ROCPROFILER_KFD_EVENT_PAGE_FAULT_NONE,
|
||||
ROCPROFILER_KFD_EVENT_PAGE_FAULT_LAST,
|
||||
false);
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_page_migration_unmap_from_gpu_trigger_t,
|
||||
ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_NONE,
|
||||
ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_LAST,
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_kfd_event_queue_operation_t,
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_NONE,
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_LAST,
|
||||
false);
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_kfd_event_unmap_from_gpu_operation_t,
|
||||
ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_NONE,
|
||||
ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_LAST,
|
||||
false);
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_kfd_event_dropped_events_operation_t,
|
||||
ROCPROFILER_KFD_EVENT_DROPPED_EVENTS_NONE,
|
||||
ROCPROFILER_KFD_EVENT_DROPPED_EVENTS_LAST,
|
||||
false);
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_kfd_page_migrate_operation_t,
|
||||
ROCPROFILER_KFD_PAGE_MIGRATE_NONE,
|
||||
ROCPROFILER_KFD_PAGE_MIGRATE_LAST,
|
||||
false);
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_kfd_page_fault_operation_t,
|
||||
ROCPROFILER_KFD_PAGE_FAULT_NONE,
|
||||
ROCPROFILER_KFD_PAGE_FAULT_LAST,
|
||||
false);
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_kfd_queue_operation_t,
|
||||
ROCPROFILER_KFD_QUEUE_NONE,
|
||||
ROCPROFILER_KFD_QUEUE_LAST,
|
||||
false);
|
||||
|
||||
ROCPROFILER_ENUM_INFO(rocprofiler_external_correlation_id_request_kind_t,
|
||||
ROCPROFILER_EXTERNAL_CORRELATION_REQUEST_NONE,
|
||||
ROCPROFILER_EXTERNAL_CORRELATION_REQUEST_LAST,
|
||||
@@ -1404,7 +1421,6 @@ ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_MARKER_CONTROL_API);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_MARKER_NAME_API);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_MEMORY_COPY);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_KERNEL_DISPATCH);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_PAGE_MIGRATION);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_SCRATCH_MEMORY);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_CORRELATION_ID_RETIREMENT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_RCCL_API);
|
||||
@@ -1417,7 +1433,15 @@ ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_HIP_STREAM);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_HIP_RUNTIME_API_EXT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_HIP_COMPILER_API_EXT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_ROCDECODE_API_EXT);
|
||||
static_assert(ROCPROFILER_BUFFER_TRACING_LAST == 25);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_KFD_EVENT_PAGE_MIGRATE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_KFD_EVENT_PAGE_FAULT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_KFD_EVENT_QUEUE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_KFD_EVENT_UNMAP_FROM_GPU);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_KFD_EVENT_DROPPED_EVENTS);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_KFD_PAGE_MIGRATE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_KFD_PAGE_FAULT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_TRACING_KFD_QUEUE);
|
||||
static_assert(ROCPROFILER_BUFFER_TRACING_LAST == 32);
|
||||
|
||||
// rocprofiler_code_object_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_CODE_OBJECT_NONE);
|
||||
@@ -1467,18 +1491,6 @@ ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_POLICY_DISCARD);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_BUFFER_POLICY_LOSSLESS);
|
||||
static_assert(ROCPROFILER_BUFFER_POLICY_LAST == 3);
|
||||
|
||||
// rocprofiler_page_migration_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_NONE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_PAGE_MIGRATE_START);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_PAGE_MIGRATE_END);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_PAGE_FAULT_START);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_PAGE_FAULT_END);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_QUEUE_EVICTION);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_QUEUE_RESTORE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_DROPPED_EVENT);
|
||||
static_assert(ROCPROFILER_PAGE_MIGRATION_LAST == 9);
|
||||
|
||||
// rocprofiler_scratch_memory_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_SCRATCH_MEMORY_NONE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_SCRATCH_MEMORY_ALLOC);
|
||||
@@ -1546,23 +1558,65 @@ ROCPROFILER_ENUM_LABEL(ROCPROFILER_PC_SAMPLING_RECORD_HOST_TRAP_V0_SAMPLE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PC_SAMPLING_RECORD_STOCHASTIC_V0_SAMPLE);
|
||||
static_assert(ROCPROFILER_PC_SAMPLING_RECORD_LAST == 4);
|
||||
|
||||
// page-migration
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_TRIGGER_PREFETCH);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_TRIGGER_PAGEFAULT_GPU);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_TRIGGER_PAGEFAULT_CPU);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_TRIGGER_TTM_EVICTION);
|
||||
static_assert(ROCPROFILER_PAGE_MIGRATION_TRIGGER_LAST == 4);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_SVM);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_USERPTR);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_TTM);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_SUSPEND);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_CRIU_CHECKPOINT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_CRIU_RESTORE);
|
||||
static_assert(ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_LAST == 6);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_MMU_NOTIFY);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_MMU_NOTIFY_MIGRATE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_UNMAP_FROM_CPU);
|
||||
static_assert(ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_LAST == 3);
|
||||
// kfd events
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_PREFETCH);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_PAGEFAULT_GPU);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_PAGEFAULT_CPU);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_TTM_EVICTION);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_END);
|
||||
static_assert(ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_LAST == 5);
|
||||
|
||||
// rocprofiler_kfd_event_page_fault_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_FAULT_START);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_FAULT_START_READ_FAULT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_FAULT_START_WRITE_FAULT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_FAULT_END_PAGE_MIGRATED);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_PAGE_FAULT_END_PAGE_UPDATED);
|
||||
static_assert(ROCPROFILER_KFD_EVENT_PAGE_FAULT_LAST == 5);
|
||||
|
||||
// rocprofiler_kfd_event_queue_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_QUEUE_EVICT_SVM);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_QUEUE_EVICT_USERPTR);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_QUEUE_EVICT_TTM);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_QUEUE_EVICT_SUSPEND);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_QUEUE_EVICT_CRIU_CHECKPOINT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_QUEUE_EVICT_CRIU_RESTORE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_QUEUE_RESTORE_RESCHEDULED);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_QUEUE_RESTORE);
|
||||
static_assert(ROCPROFILER_KFD_EVENT_QUEUE_LAST == 8);
|
||||
|
||||
// rocprofiler_kfd_event_unmap_from_gpu_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_MMU_NOTIFY);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_MMU_NOTIFY_MIGRATE);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_UNMAP_FROM_CPU);
|
||||
static_assert(ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_LAST == 3);
|
||||
|
||||
// rocprofiler_kfd_event_dropped_events_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_EVENT_DROPPED_EVENTS);
|
||||
static_assert(ROCPROFILER_KFD_EVENT_DROPPED_EVENTS_LAST == 1);
|
||||
|
||||
// rocprofiler_kfd_page_migrate_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_PAGE_MIGRATE_PREFETCH);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_PAGE_MIGRATE_PAGEFAULT_GPU);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_PAGE_MIGRATE_PAGEFAULT_CPU);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_PAGE_MIGRATE_TTM_EVICTION);
|
||||
static_assert(ROCPROFILER_KFD_PAGE_MIGRATE_LAST == 4);
|
||||
|
||||
// rocprofiler_kfd_page_fault_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_PAGE_FAULT_READ_FAULT_MIGRATED);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_PAGE_FAULT_READ_FAULT_UPDATED);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_PAGE_FAULT_WRITE_FAULT_MIGRATED);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_PAGE_FAULT_WRITE_FAULT_UPDATED);
|
||||
static_assert(ROCPROFILER_KFD_PAGE_FAULT_LAST == 4);
|
||||
|
||||
// rocprofiler_kfd_queue_operation_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_QUEUE_EVICT_SVM);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_QUEUE_EVICT_USERPTR);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_QUEUE_EVICT_TTM);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_QUEUE_EVICT_SUSPEND);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_QUEUE_EVICT_CRIU_CHECKPOINT);
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_KFD_QUEUE_EVICT_CRIU_RESTORE);
|
||||
static_assert(ROCPROFILER_KFD_QUEUE_LAST == 6);
|
||||
|
||||
// rocprofiler_external_correlation_id_request_kind_t
|
||||
ROCPROFILER_ENUM_LABEL(ROCPROFILER_EXTERNAL_CORRELATION_REQUEST_NONE);
|
||||
|
||||
@@ -101,6 +101,7 @@ ROCPROFILER_DEFINE_CATEGORY(category, memory_allocation, "Memory Allocation")
|
||||
ROCPROFILER_DEFINE_CATEGORY(category, rocdecode_api, "rocDecode API function")
|
||||
ROCPROFILER_DEFINE_CATEGORY(category, rocjpeg_api, "rocJPEG API function")
|
||||
ROCPROFILER_DEFINE_CATEGORY(category, counter_collection, "Counter Collection")
|
||||
ROCPROFILER_DEFINE_CATEGORY(category, kfd_events, "KFD events collection")
|
||||
ROCPROFILER_DEFINE_CATEGORY(category, none, "Unknown category")
|
||||
|
||||
#define ROCPROFILER_PERFETTO_CATEGORIES \
|
||||
@@ -215,7 +216,6 @@ ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(MARKER_NAME_API, marker_api)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(MEMORY_COPY, memory_copy)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(MEMORY_ALLOCATION, memory_allocation)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(KERNEL_DISPATCH, kernel_dispatch)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(PAGE_MIGRATION, none)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(SCRATCH_MEMORY, memory_allocation)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(CORRELATION_ID_RETIREMENT, none)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(RCCL_API, rccl_api)
|
||||
@@ -227,6 +227,14 @@ ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(HIP_STREAM, hip_api)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(HIP_RUNTIME_API_EXT, hip_api)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(HIP_COMPILER_API_EXT, hip_api)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(ROCDECODE_API_EXT, rocdecode_api)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(KFD_EVENT_PAGE_MIGRATE, kfd_events)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(KFD_EVENT_PAGE_FAULT, kfd_events)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(KFD_EVENT_QUEUE, kfd_events)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(KFD_EVENT_UNMAP_FROM_GPU, kfd_events)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(KFD_EVENT_DROPPED_EVENTS, kfd_events)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(KFD_PAGE_MIGRATE, kfd_events)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(KFD_PAGE_FAULT, kfd_events)
|
||||
ROCPROFILER_PERFETTO_BUFFER_TRACING_CATEGORY(KFD_QUEUE, kfd_events)
|
||||
|
||||
ROCPROFILER_PERFETTO_CALLBACK_TRACING_CATEGORY(NONE, none)
|
||||
ROCPROFILER_PERFETTO_CALLBACK_TRACING_CATEGORY(HSA_CORE_API, hsa_api)
|
||||
|
||||
+90
-121
@@ -729,140 +729,109 @@ save(ArchiveT& ar, rocprofiler_buffer_tracing_memory_allocation_record_t data)
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, const rocprofiler_page_migration_page_fault_start_t& data)
|
||||
save(ArchiveT& ar, rocprofiler_buffer_tracing_kfd_event_page_migrate_record_t data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_BITFIELD("read_fault", read_fault);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(address);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, const rocprofiler_page_migration_page_fault_end_t& data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_BITFIELD("migrated", migrated);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(address);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, const rocprofiler_page_migration_page_migrate_start_t& data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(start_addr);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(end_addr);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(from_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(to_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(size);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(operation);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(pid);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(start_address);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(end_address);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(src_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(dst_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(prefetch_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(preferred_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(trigger);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, const rocprofiler_page_migration_page_migrate_end_t& data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(start_addr);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(end_addr);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(from_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(to_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(trigger);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(error_code);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, const rocprofiler_page_migration_queue_eviction_t& data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(trigger);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, const rocprofiler_page_migration_queue_restore_t& data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_BITFIELD("rescheduled", rescheduled);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, const rocprofiler_page_migration_unmap_from_gpu_t& data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(start_addr);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(end_addr);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(trigger);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, const rocprofiler_page_migration_dropped_event_t& data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(dropped_events_count);
|
||||
}
|
||||
|
||||
namespace details
|
||||
{
|
||||
template <size_t Idx>
|
||||
struct save_page_migration_arg;
|
||||
|
||||
#define ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(ENUM_VALUE, UNION_ARG) \
|
||||
template <> \
|
||||
struct save_page_migration_arg<ROCPROFILER_PAGE_MIGRATION_##ENUM_VALUE> \
|
||||
{ \
|
||||
static constexpr auto value = ROCPROFILER_PAGE_MIGRATION_##ENUM_VALUE; \
|
||||
template <typename ArchiveT> \
|
||||
void operator()(ArchiveT& ar, rocprofiler_page_migration_args_t args) \
|
||||
{ \
|
||||
ar(make_nvp(#UNION_ARG, args.UNION_ARG)); \
|
||||
} \
|
||||
};
|
||||
|
||||
ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(NONE, none)
|
||||
ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(PAGE_MIGRATE_START, page_migrate_start)
|
||||
ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(PAGE_MIGRATE_END, page_migrate_end)
|
||||
ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(PAGE_FAULT_START, page_fault_start)
|
||||
ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(PAGE_FAULT_END, page_fault_end)
|
||||
ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(QUEUE_EVICTION, queue_eviction)
|
||||
ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(QUEUE_RESTORE, queue_restore)
|
||||
ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(UNMAP_FROM_GPU, unmap_from_gpu)
|
||||
ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG(DROPPED_EVENT, dropped_event)
|
||||
|
||||
#undef ROCP_SDK_SPECIALIZE_PAGE_MIGRATION_ARG
|
||||
|
||||
template <typename ArchiveT, size_t Idx, size_t... IdxTail>
|
||||
void
|
||||
save_page_migration_args(ArchiveT& ar,
|
||||
rocprofiler_page_migration_operation_t op,
|
||||
rocprofiler_page_migration_args_t args,
|
||||
std::index_sequence<Idx, IdxTail...>)
|
||||
{
|
||||
using save_page_migration_type = save_page_migration_arg<Idx>;
|
||||
if(op == save_page_migration_type::value)
|
||||
{
|
||||
if constexpr(save_page_migration_type::value != ROCPROFILER_PAGE_MIGRATION_NONE)
|
||||
save_page_migration_type{}(ar, args);
|
||||
}
|
||||
else if constexpr(sizeof...(IdxTail) > 0)
|
||||
{
|
||||
save_page_migration_args(ar, op, args, std::index_sequence<IdxTail...>{});
|
||||
}
|
||||
}
|
||||
} // namespace details
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, const rocprofiler_buffer_tracing_page_migration_record_t& data)
|
||||
save(ArchiveT& ar, rocprofiler_buffer_tracing_kfd_event_page_fault_record_t data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(size);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(kind);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(operation);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(pid);
|
||||
details::save_page_migration_args(
|
||||
ar, data.operation, data.args, std::make_index_sequence<ROCPROFILER_PAGE_MIGRATION_LAST>{});
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(address);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, rocprofiler_buffer_tracing_kfd_event_queue_record_t data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(size);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(operation);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(pid);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, rocprofiler_buffer_tracing_kfd_event_unmap_from_gpu_record_t data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(size);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(operation);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(pid);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(start_address);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(end_address);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, rocprofiler_buffer_tracing_kfd_event_dropped_events_record_t data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(size);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(operation);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(pid);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(count);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, rocprofiler_buffer_tracing_kfd_page_migrate_record_t data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(size);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(operation);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(pid);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(start_address);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(end_address);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(src_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(dst_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(prefetch_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(preferred_agent);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(error_code);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, rocprofiler_buffer_tracing_kfd_page_fault_record_t data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(size);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(operation);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(pid);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(address);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
void
|
||||
save(ArchiveT& ar, rocprofiler_buffer_tracing_kfd_queue_record_t data)
|
||||
{
|
||||
ROCP_SDK_SAVE_DATA_FIELD(size);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(operation);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(pid);
|
||||
ROCP_SDK_SAVE_DATA_FIELD(agent_id);
|
||||
}
|
||||
|
||||
template <typename ArchiveT>
|
||||
|
||||
@@ -196,7 +196,6 @@ typedef enum rocprofiler_buffer_tracing_kind_t // NOLINT(performance-enum-size)
|
||||
ROCPROFILER_BUFFER_TRACING_MARKER_NAME_API, ///< @see ::rocprofiler_marker_name_api_id_t
|
||||
ROCPROFILER_BUFFER_TRACING_MEMORY_COPY, ///< @see ::rocprofiler_memory_copy_operation_t
|
||||
ROCPROFILER_BUFFER_TRACING_KERNEL_DISPATCH, ///< Buffer kernel dispatch info
|
||||
ROCPROFILER_BUFFER_TRACING_PAGE_MIGRATION, ///< Buffer page migration info
|
||||
ROCPROFILER_BUFFER_TRACING_SCRATCH_MEMORY, ///< Buffer scratch memory reclaimation info
|
||||
ROCPROFILER_BUFFER_TRACING_CORRELATION_ID_RETIREMENT, ///< Correlation ID in no longer in use
|
||||
ROCPROFILER_BUFFER_TRACING_RCCL_API, ///< RCCL tracing
|
||||
@@ -212,6 +211,20 @@ typedef enum rocprofiler_buffer_tracing_kind_t // NOLINT(performance-enum-size)
|
||||
ROCPROFILER_BUFFER_TRACING_HIP_RUNTIME_API_EXT,
|
||||
ROCPROFILER_BUFFER_TRACING_HIP_COMPILER_API_EXT,
|
||||
ROCPROFILER_BUFFER_TRACING_ROCDECODE_API_EXT,
|
||||
|
||||
ROCPROFILER_BUFFER_TRACING_KFD_EVENT_PAGE_MIGRATE, ///< @see
|
||||
///< rocprofiler_kfd_event_page_migrate_operation_t
|
||||
ROCPROFILER_BUFFER_TRACING_KFD_EVENT_PAGE_FAULT, ///< @see
|
||||
///< rocprofiler_kfd_event_page_fault_operation_t
|
||||
ROCPROFILER_BUFFER_TRACING_KFD_EVENT_QUEUE, ///< @see rocprofiler_kfd_event_queue_operation_t
|
||||
ROCPROFILER_BUFFER_TRACING_KFD_EVENT_UNMAP_FROM_GPU, ///< @see
|
||||
///< rocprofiler_kfd_event_unmap_from_gpu_operation_t
|
||||
ROCPROFILER_BUFFER_TRACING_KFD_EVENT_DROPPED_EVENTS, ///< @see
|
||||
///< rocprofiler_kfd_event_dropped_events_operation_t
|
||||
ROCPROFILER_BUFFER_TRACING_KFD_PAGE_MIGRATE, ///< @see rocprofiler_kfd_page_migrate_operation_t
|
||||
ROCPROFILER_BUFFER_TRACING_KFD_PAGE_FAULT, ///< @see rocprofiler_kfd_page_fault_operation_t
|
||||
ROCPROFILER_BUFFER_TRACING_KFD_QUEUE, ///< @see rocprofiler_kfd_queue_operation_t
|
||||
|
||||
ROCPROFILER_BUFFER_TRACING_LAST,
|
||||
|
||||
/// @var ROCPROFILER_BUFFER_TRACING_HIP_RUNTIME_API_EXT
|
||||
@@ -361,23 +374,6 @@ typedef enum rocprofiler_buffer_policy_t // NOLINT(performance-enum-size)
|
||||
ROCPROFILER_BUFFER_POLICY_LAST,
|
||||
} rocprofiler_buffer_policy_t;
|
||||
|
||||
/**
|
||||
* @brief Page migration event.
|
||||
*/
|
||||
typedef enum rocprofiler_page_migration_operation_t // NOLINT(performance-enum-size)
|
||||
{
|
||||
ROCPROFILER_PAGE_MIGRATION_NONE = 0, ///< Unknown event
|
||||
ROCPROFILER_PAGE_MIGRATION_PAGE_MIGRATE_START,
|
||||
ROCPROFILER_PAGE_MIGRATION_PAGE_MIGRATE_END,
|
||||
ROCPROFILER_PAGE_MIGRATION_PAGE_FAULT_START,
|
||||
ROCPROFILER_PAGE_MIGRATION_PAGE_FAULT_END,
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_EVICTION,
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_RESTORE,
|
||||
ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU,
|
||||
ROCPROFILER_PAGE_MIGRATION_DROPPED_EVENT,
|
||||
ROCPROFILER_PAGE_MIGRATION_LAST,
|
||||
} rocprofiler_page_migration_operation_t;
|
||||
|
||||
/**
|
||||
* @brief Scratch event kind
|
||||
*/
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Installation of public KFD headers
|
||||
#
|
||||
#
|
||||
set(ROCPROFILER_KFD_HEADER_FILES page_migration_args.h page_migration_id.h)
|
||||
set(ROCPROFILER_KFD_HEADER_FILES kfd_id.h)
|
||||
|
||||
install(
|
||||
FILES ${ROCPROFILER_KFD_HEADER_FILES}
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
// MIT License
|
||||
//
|
||||
// Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <rocprofiler-sdk/defines.h>
|
||||
#include <rocprofiler-sdk/hsa.h>
|
||||
#include <rocprofiler-sdk/hsa/api_trace_version.h>
|
||||
#include <rocprofiler-sdk/version.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
ROCPROFILER_EXTERN_C_INIT
|
||||
|
||||
/**
|
||||
* @brief Page migration event operations. @see
|
||||
* rocprofiler_buffer_tracing_kfd_event_page_migrate_record_t
|
||||
*/
|
||||
typedef enum rocprofiler_kfd_event_page_migrate_operation_t
|
||||
{
|
||||
ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_NONE = -1,
|
||||
ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_PREFETCH, ///< Migration triggered by a prefetch
|
||||
ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_PAGEFAULT_GPU, ///< Migration triggered by a page fault on
|
||||
///< the GPU
|
||||
ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_PAGEFAULT_CPU, ///< Migration triggered by a page fault on
|
||||
///< the CPU
|
||||
ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_TTM_EVICTION, ///< Page evicted by linux TTM (Translation
|
||||
///< Table Manager)
|
||||
ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_END,
|
||||
ROCPROFILER_KFD_EVENT_PAGE_MIGRATE_LAST,
|
||||
} rocprofiler_kfd_event_page_migrate_operation_t;
|
||||
|
||||
/**
|
||||
* @brief Page fault event operations. @see rocprofiler_buffer_tracing_kfd_event_page_fault_record_t
|
||||
*/
|
||||
typedef enum rocprofiler_kfd_event_page_fault_operation_t
|
||||
{
|
||||
ROCPROFILER_KFD_EVENT_PAGE_FAULT_NONE = -1,
|
||||
ROCPROFILER_KFD_EVENT_PAGE_FAULT_START,
|
||||
ROCPROFILER_KFD_EVENT_PAGE_FAULT_START_READ_FAULT, ///< Page fault was due to a read operation
|
||||
ROCPROFILER_KFD_EVENT_PAGE_FAULT_START_WRITE_FAULT, ///< Page fault was due to a write
|
||||
///< operation
|
||||
ROCPROFILER_KFD_EVENT_PAGE_FAULT_END_PAGE_MIGRATED, ///< Fault resolved through a migration
|
||||
ROCPROFILER_KFD_EVENT_PAGE_FAULT_END_PAGE_UPDATED, ///< Fault resolved through an update
|
||||
ROCPROFILER_KFD_EVENT_PAGE_FAULT_LAST,
|
||||
} rocprofiler_kfd_event_page_fault_operation_t;
|
||||
|
||||
/**
|
||||
* @brief Queue evict/restore event operations. @see
|
||||
* rocprofiler_buffer_tracing_kfd_event_queue_record_t
|
||||
*/
|
||||
typedef enum rocprofiler_kfd_event_queue_operation_t
|
||||
{
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_NONE = -1,
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_EVICT_SVM, ///< SVM Buffer migration
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_EVICT_USERPTR, ///< userptr movement
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_EVICT_TTM, ///< TTM move buffer
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_EVICT_SUSPEND, ///< GPU suspend
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_EVICT_CRIU_CHECKPOINT, ///< Queues evicted due to process
|
||||
///< checkpoint by CRIU
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_EVICT_CRIU_RESTORE, ///< Queues restored during process restore by
|
||||
///< CRIU
|
||||
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_RESTORE_RESCHEDULED, ///< Queue was not restored; will be restored
|
||||
///< later
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_RESTORE, ///< Queue was restored
|
||||
ROCPROFILER_KFD_EVENT_QUEUE_LAST,
|
||||
} rocprofiler_kfd_event_queue_operation_t;
|
||||
|
||||
/**
|
||||
* @brief Memory unmap from GPU event operations. @see
|
||||
* rocprofiler_buffer_tracing_kfd_event_unmap_from_gpu_record_t
|
||||
*/
|
||||
typedef enum rocprofiler_kfd_event_unmap_from_gpu_operation_t
|
||||
{
|
||||
ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_NONE = -1,
|
||||
ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_MMU_NOTIFY, ///< MMU notifier CPU buffer movement
|
||||
ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_MMU_NOTIFY_MIGRATE, ///< MMU notifier page migration
|
||||
ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_UNMAP_FROM_CPU, ///< Unmap to free the buffer
|
||||
ROCPROFILER_KFD_EVENT_UNMAP_FROM_GPU_LAST,
|
||||
} rocprofiler_kfd_event_unmap_from_gpu_operation_t;
|
||||
|
||||
/**
|
||||
* @brief KFD dropped event operations. @see
|
||||
* rocprofiler_buffer_tracing_kfd_event_dropped_events_record_t
|
||||
*/
|
||||
typedef enum rocprofiler_kfd_event_dropped_events_operation_t
|
||||
{
|
||||
ROCPROFILER_KFD_EVENT_DROPPED_EVENTS_NONE = -1,
|
||||
ROCPROFILER_KFD_EVENT_DROPPED_EVENTS,
|
||||
ROCPROFILER_KFD_EVENT_DROPPED_EVENTS_LAST,
|
||||
} rocprofiler_kfd_event_dropped_events_operation_t;
|
||||
|
||||
/**
|
||||
* @brief Operation kinds for @see rocprofiler_buffer_tracing_kfd_page_migrate_record_t
|
||||
*/
|
||||
typedef enum rocprofiler_kfd_page_migrate_operation_t
|
||||
{
|
||||
ROCPROFILER_KFD_PAGE_MIGRATE_NONE = -1,
|
||||
ROCPROFILER_KFD_PAGE_MIGRATE_PREFETCH, ///< Migration triggered by a prefetch
|
||||
ROCPROFILER_KFD_PAGE_MIGRATE_PAGEFAULT_GPU, ///< Migration triggered by a page fault on the
|
||||
///< GPU
|
||||
ROCPROFILER_KFD_PAGE_MIGRATE_PAGEFAULT_CPU, ///< Migration triggered by a page fault on the
|
||||
///< CPU
|
||||
ROCPROFILER_KFD_PAGE_MIGRATE_TTM_EVICTION, ///< Page evicted by linux TTM (Translation Table
|
||||
///< Manager)
|
||||
ROCPROFILER_KFD_PAGE_MIGRATE_LAST,
|
||||
} rocprofiler_kfd_page_migrate_operation_t;
|
||||
|
||||
/**
|
||||
* @brief Operation kinds for @see rocprofiler_buffer_tracing_kfd_page_fault_record_t
|
||||
*/
|
||||
typedef enum rocprofiler_kfd_page_fault_operation_t
|
||||
{
|
||||
ROCPROFILER_KFD_PAGE_FAULT_NONE = -1,
|
||||
ROCPROFILER_KFD_PAGE_FAULT_READ_FAULT_MIGRATED, ///< read fault resolved with a migrate
|
||||
ROCPROFILER_KFD_PAGE_FAULT_READ_FAULT_UPDATED, ///< read fault resolved with an update
|
||||
ROCPROFILER_KFD_PAGE_FAULT_WRITE_FAULT_MIGRATED, ///< write fault resolved with an migrate
|
||||
ROCPROFILER_KFD_PAGE_FAULT_WRITE_FAULT_UPDATED, ///< write fault resolved with an update
|
||||
ROCPROFILER_KFD_PAGE_FAULT_LAST,
|
||||
} rocprofiler_kfd_page_fault_operation_t;
|
||||
|
||||
/**
|
||||
* @brief Operation kinds for @see rocprofiler_buffer_tracing_kfd_queue_record_t
|
||||
*/
|
||||
typedef enum rocprofiler_kfd_queue_operation_t
|
||||
{
|
||||
ROCPROFILER_KFD_QUEUE_NONE = -1,
|
||||
ROCPROFILER_KFD_QUEUE_EVICT_SVM, ///< SVM Buffer migration
|
||||
ROCPROFILER_KFD_QUEUE_EVICT_USERPTR, ///< userptr movement
|
||||
ROCPROFILER_KFD_QUEUE_EVICT_TTM, ///< TTM move buffer
|
||||
ROCPROFILER_KFD_QUEUE_EVICT_SUSPEND, ///< GPU suspend
|
||||
ROCPROFILER_KFD_QUEUE_EVICT_CRIU_CHECKPOINT, ///< Queues evicted due to process checkpoint by
|
||||
///< CRIU
|
||||
ROCPROFILER_KFD_QUEUE_EVICT_CRIU_RESTORE, ///< Queues restored during process restore by CRIU
|
||||
|
||||
ROCPROFILER_KFD_QUEUE_LAST,
|
||||
} rocprofiler_kfd_queue_operation_t;
|
||||
|
||||
ROCPROFILER_EXTERN_C_FINI
|
||||
@@ -1,111 +0,0 @@
|
||||
// MIT License
|
||||
//
|
||||
// Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <rocprofiler-sdk/defines.h>
|
||||
#include <rocprofiler-sdk/kfd/page_migration_id.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
ROCPROFILER_EXTERN_C_INIT
|
||||
|
||||
typedef struct rocprofiler_page_migration_none_t
|
||||
{
|
||||
char empty;
|
||||
} rocprofiler_page_migration_none_t;
|
||||
|
||||
typedef struct rocprofiler_page_migration_page_migrate_start_t
|
||||
{
|
||||
uint64_t start_addr;
|
||||
uint64_t end_addr;
|
||||
rocprofiler_agent_id_t from_agent;
|
||||
rocprofiler_agent_id_t to_agent;
|
||||
rocprofiler_agent_id_t prefetch_agent;
|
||||
rocprofiler_agent_id_t preferred_agent;
|
||||
rocprofiler_page_migration_trigger_t trigger;
|
||||
} rocprofiler_page_migration_page_migrate_start_t;
|
||||
|
||||
typedef struct rocprofiler_page_migration_page_migrate_end_t
|
||||
{
|
||||
uint64_t start_addr;
|
||||
uint64_t end_addr;
|
||||
rocprofiler_agent_id_t from_agent;
|
||||
rocprofiler_agent_id_t to_agent;
|
||||
rocprofiler_page_migration_trigger_t trigger;
|
||||
int32_t error_code;
|
||||
} rocprofiler_page_migration_page_migrate_end_t;
|
||||
|
||||
typedef struct rocprofiler_page_migration_page_fault_start_t
|
||||
{
|
||||
uint32_t read_fault : 1;
|
||||
rocprofiler_agent_id_t agent_id;
|
||||
uint64_t address;
|
||||
} rocprofiler_page_migration_page_fault_start_t;
|
||||
|
||||
typedef struct rocprofiler_page_migration_page_fault_end_t
|
||||
{
|
||||
uint32_t migrated : 1;
|
||||
rocprofiler_agent_id_t agent_id;
|
||||
uint64_t address;
|
||||
} rocprofiler_page_migration_page_fault_end_t;
|
||||
|
||||
typedef struct rocprofiler_page_migration_queue_eviction_t
|
||||
{
|
||||
rocprofiler_agent_id_t agent_id;
|
||||
rocprofiler_page_migration_queue_suspend_trigger_t trigger;
|
||||
} rocprofiler_page_migration_queue_eviction_t;
|
||||
|
||||
typedef struct rocprofiler_page_migration_queue_restore_t
|
||||
{
|
||||
uint32_t rescheduled : 1;
|
||||
rocprofiler_agent_id_t agent_id;
|
||||
} rocprofiler_page_migration_queue_restore_t;
|
||||
|
||||
typedef struct rocprofiler_page_migration_unmap_from_gpu_t
|
||||
{
|
||||
uint64_t start_addr;
|
||||
uint64_t end_addr;
|
||||
rocprofiler_agent_id_t agent_id;
|
||||
rocprofiler_page_migration_unmap_from_gpu_trigger_t trigger;
|
||||
} rocprofiler_page_migration_unmap_from_gpu_t;
|
||||
|
||||
typedef struct rocprofiler_page_migration_dropped_event_t
|
||||
{
|
||||
uint32_t dropped_events_count;
|
||||
} rocprofiler_page_migration_dropped_event_t;
|
||||
|
||||
typedef union rocprofiler_page_migration_args_t
|
||||
{
|
||||
rocprofiler_page_migration_none_t none;
|
||||
rocprofiler_page_migration_page_migrate_start_t page_migrate_start;
|
||||
rocprofiler_page_migration_page_migrate_end_t page_migrate_end;
|
||||
rocprofiler_page_migration_page_fault_start_t page_fault_start;
|
||||
rocprofiler_page_migration_page_fault_end_t page_fault_end;
|
||||
rocprofiler_page_migration_queue_eviction_t queue_eviction;
|
||||
rocprofiler_page_migration_queue_restore_t queue_restore;
|
||||
rocprofiler_page_migration_unmap_from_gpu_t unmap_from_gpu;
|
||||
rocprofiler_page_migration_dropped_event_t dropped_event;
|
||||
uint64_t reserved[16];
|
||||
} rocprofiler_page_migration_args_t;
|
||||
|
||||
ROCPROFILER_EXTERN_C_FINI
|
||||
@@ -1,82 +0,0 @@
|
||||
// MIT License
|
||||
//
|
||||
// Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <rocprofiler-sdk/defines.h>
|
||||
#include <rocprofiler-sdk/fwd.h>
|
||||
#include <rocprofiler-sdk/hsa.h>
|
||||
#include <rocprofiler-sdk/hsa/api_trace_version.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
ROCPROFILER_EXTERN_C_INIT
|
||||
|
||||
/**
|
||||
* @brief Page migration triggers
|
||||
*
|
||||
*/
|
||||
typedef enum rocprofiler_page_migration_trigger_t
|
||||
{
|
||||
ROCPROFILER_PAGE_MIGRATION_TRIGGER_NONE = -1,
|
||||
ROCPROFILER_PAGE_MIGRATION_TRIGGER_PREFETCH, ///< Migration triggered by a prefetch
|
||||
ROCPROFILER_PAGE_MIGRATION_TRIGGER_PAGEFAULT_GPU, ///< Triggered by a page fault on the GPU
|
||||
ROCPROFILER_PAGE_MIGRATION_TRIGGER_PAGEFAULT_CPU, ///< Triggered by a page fault on the CPU
|
||||
ROCPROFILER_PAGE_MIGRATION_TRIGGER_TTM_EVICTION, ///< Page evicted by linux TTM (Translation
|
||||
///< Table Manager)
|
||||
ROCPROFILER_PAGE_MIGRATION_TRIGGER_LAST,
|
||||
} rocprofiler_page_migration_trigger_t;
|
||||
|
||||
/**
|
||||
* @brief Page migration triggers causing the queue to suspend
|
||||
*
|
||||
*/
|
||||
typedef enum rocprofiler_page_migration_queue_suspend_trigger_t
|
||||
{
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_NONE = -1,
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_SVM,
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_USERPTR,
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_TTM, ///< Queue suspended by TTM (Translation
|
||||
///< Table Manager) operation
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_SUSPEND,
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_CRIU_CHECKPOINT, ///< Queues evicted due to
|
||||
///< process save
|
||||
///< (checkpoint) by CRIU
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_CRIU_RESTORE, ///< Queues restored during
|
||||
///< process restore by CRIU
|
||||
ROCPROFILER_PAGE_MIGRATION_QUEUE_SUSPEND_TRIGGER_LAST,
|
||||
} rocprofiler_page_migration_queue_suspend_trigger_t;
|
||||
|
||||
/**
|
||||
* @brief Page migration triggers causing an unmap from the GPU
|
||||
*
|
||||
*/
|
||||
typedef enum rocprofiler_page_migration_unmap_from_gpu_trigger_t
|
||||
{
|
||||
ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_NONE = -1,
|
||||
ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_MMU_NOTIFY,
|
||||
ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_MMU_NOTIFY_MIGRATE,
|
||||
ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_UNMAP_FROM_CPU,
|
||||
ROCPROFILER_PAGE_MIGRATION_UNMAP_FROM_GPU_TRIGGER_LAST,
|
||||
} rocprofiler_page_migration_unmap_from_gpu_trigger_t;
|
||||
|
||||
ROCPROFILER_EXTERN_C_FINI
|
||||
Reference in New Issue
Block a user