PC Sampling: Add create and destroy APIs

Implement PC Sampling session create and destroy APIs.

Change-Id: I93370d3d01b74ee15e71b8b0e20feb8f0066a3dc

Signed-off-by: David Yat Sin <David.YatSin@amd.com>
Signed-off-by: Vladimir Indic <Vladimir.Indic@amd.com>
Change-Id: Ib0c64356a1a4616b12d5dbeebe16273fe2a84abe


[ROCm/ROCR-Runtime commit: 632f9e60f7]
This commit is contained in:
David Yat Sin
2023-09-23 15:48:46 +00:00
parent 0a4415f202
commit 566e2c60fd
7 changed files with 330 additions and 2 deletions
@@ -192,6 +192,13 @@ class GpuAgentInt : public core::Agent {
// @retval HSA_STATUS_SUCCESS if successful
virtual hsa_status_t PcSamplingIterateConfig(hsa_ven_amd_pcs_iterate_configuration_callback_t cb,
void* cb_data) = 0;
virtual hsa_status_t PcSamplingCreate(pcs::PcsRuntime::PcSamplingSession& session) = 0;
virtual hsa_status_t PcSamplingCreateFromId(HsaPcSamplingTraceId pcsId,
pcs::PcsRuntime::PcSamplingSession& session) = 0;
virtual hsa_status_t PcSamplingDestroy(pcs::PcsRuntime::PcSamplingSession& session) = 0;
};
class GpuAgent : public GpuAgentInt {
@@ -474,6 +481,10 @@ class GpuAgent : public GpuAgentInt {
hsa_status_t PcSamplingIterateConfig(hsa_ven_amd_pcs_iterate_configuration_callback_t cb,
void* cb_data);
hsa_status_t PcSamplingCreate(pcs::PcsRuntime::PcSamplingSession& session);
hsa_status_t PcSamplingCreateFromId(HsaPcSamplingTraceId pcsId,
pcs::PcsRuntime::PcSamplingSession& session);
hsa_status_t PcSamplingDestroy(pcs::PcsRuntime::PcSamplingSession& session);
// @brief Node properties.
const HsaNodeProperties properties_;
@@ -677,6 +688,15 @@ class GpuAgent : public GpuAgentInt {
std::function<void*(size_t size, core::MemoryRegion::AllocateFlags flags)> finegrain_allocator_;
std::function<void(void*)> finegrain_deallocator_;
/* PC Sampling fields - begin */
typedef struct {
pcs::PcsRuntime::PcSamplingSession* session;
} pcs_hosttrap_t;
pcs_hosttrap_t pcs_hosttrap_data_;
/* PC Sampling fields - end */
// @brief device handle
amdgpu_device_handle ldrm_dev_;