Separate agent cache from queue controller (#145)
* Update lib/rocprofiler/agent.{hpp,cpp}
- get_agents() function for internal access to agent pointers
* Update AgentCache
- make member variables and member functions distinguish b/t hsa agent and rocprofiler agent clear
* Change ctor of AgentCache
* Update lib/rocprofiler/hsa/queue_controller.cpp
- QueueController::init uses agent::get_agent_cache
* Update lib/rocprofiler/hsa/agent_cache.*
- member function to get index
- operator== for rocprofiler_agent_t and hsa_agent_t
- removed hsa_iterate_agents from ctor (now in agent.cpp)
* Update lib/rocprofiler/agent.*
- construct_agent_cache function
- functions for rocprofiler agent <-> HSA agent
- functions for getting agent cache
* Update lib/rocprofiler/registration.cpp
- invoke construct_agent_cache when HSA table is receieved
* Update lib/rocprofiler/agent.cpp
- loosen failure conditions
- handle spurious duplicate entry warning
* Update lib/rocprofiler/agent.cpp
- improve read_map diagnostics
* Update lib/rocprofiler/agent.cpp
- avoid infinite loop in read_map
* Update lib/rocprofiler/agent.cpp
- handle empty kfd node properties file
* Update lib/rocprofiler/agent.cpp
- check for permissions to read a node properties file
* Update lib/rocprofiler/agent.cpp
- more checks on file readability
* Update lib/rocprofiler/tests/agent.cpp
- print virtual kfd topology
* Update lib/rocprofiler/tests/agent.cpp
- verify id.handle == hsa_agent internal node id
* Update lib/rocprofiler/tests/agent.cpp
- check node_id
- check location id
- check device id
- update abi test
* Update include/rocprofiler/agent.h
- add node_id field
- add reserved0 field to ensure new field increases struct size
* Update lib/rocprofiler/agent.cpp
- node_id instead of id.handle
* Update lib/rocprofiler/agent_cache.cpp
- node_id instead of id.handle
* Update samples/pc_sampling
- node_id for agent instead of id.handle
* Update lib/rocprofiler/buffer.cpp
- remove debug prints
This commit is contained in:
committed by
GitHub
parent
87cc748c3d
commit
7f631de401
@@ -21,7 +21,7 @@ AQLPacketConstruct::AQLPacketConstruct(const hsa::AgentCache& agen
|
||||
// for the counter.
|
||||
for(const auto& x : metrics)
|
||||
{
|
||||
auto query_info = get_query_info(_agent.get_agent(), x);
|
||||
auto query_info = get_query_info(_agent.get_hsa_agent(), x);
|
||||
_metrics.emplace_back().metric = x;
|
||||
uint32_t event_id = std::atoi(x.event().c_str());
|
||||
for(unsigned block_index = 0; block_index < query_info.instance_count; ++block_index)
|
||||
@@ -32,7 +32,7 @@ AQLPacketConstruct::AQLPacketConstruct(const hsa::AgentCache& agen
|
||||
event_id});
|
||||
bool validate_event_result;
|
||||
LOG_IF(FATAL,
|
||||
hsa_ven_amd_aqlprofile_validate_event(_agent.get_agent(),
|
||||
hsa_ven_amd_aqlprofile_validate_event(_agent.get_hsa_agent(),
|
||||
&_metrics.back().instances.back(),
|
||||
&validate_event_result) !=
|
||||
HSA_STATUS_SUCCESS);
|
||||
@@ -58,7 +58,7 @@ AQLPacketConstruct::construct_packet(const AmdExtTable& ext) const
|
||||
}
|
||||
|
||||
pkt.profile = hsa_ven_amd_aqlprofile_profile_t{
|
||||
_agent.get_agent(),
|
||||
_agent.get_hsa_agent(),
|
||||
HSA_VEN_AMD_AQLPROFILE_EVENT_TYPE_PMC, // SPM?
|
||||
_events.data(),
|
||||
static_cast<uint32_t>(_events.size()),
|
||||
@@ -69,7 +69,7 @@ AQLPacketConstruct::construct_packet(const AmdExtTable& ext) const
|
||||
auto& profile = pkt.profile;
|
||||
|
||||
hsa_amd_memory_pool_access_t _access = HSA_AMD_MEMORY_POOL_ACCESS_NEVER_ALLOWED;
|
||||
ext.hsa_amd_agent_memory_pool_get_info_fn(_agent.get_agent(),
|
||||
ext.hsa_amd_agent_memory_pool_get_info_fn(_agent.get_hsa_agent(),
|
||||
_agent.kernarg_pool(),
|
||||
HSA_AMD_AGENT_MEMORY_POOL_INFO_ACCESS,
|
||||
static_cast<void*>(&_access));
|
||||
@@ -79,7 +79,7 @@ AQLPacketConstruct::construct_packet(const AmdExtTable& ext) const
|
||||
{
|
||||
throw std::runtime_error(
|
||||
fmt::format("Agent {} does not allow memory pool access for counter collection",
|
||||
_agent.get_agent().handle));
|
||||
_agent.get_hsa_agent().handle));
|
||||
}
|
||||
|
||||
auto throw_if_failed = [](auto status, auto& message) {
|
||||
@@ -113,7 +113,7 @@ AQLPacketConstruct::construct_packet(const AmdExtTable& ext) const
|
||||
else
|
||||
{
|
||||
CHECK(*mem_loc);
|
||||
hsa_agent_t agent = _agent.get_agent();
|
||||
hsa_agent_t agent = _agent.get_hsa_agent();
|
||||
// Memory is accessable by both the GPU and CPU, unlock the command buffer for
|
||||
// sharing.
|
||||
LOG_IF(FATAL,
|
||||
@@ -167,7 +167,8 @@ AQLPacketConstruct::can_collect()
|
||||
iter->second++;
|
||||
if(inserted)
|
||||
{
|
||||
max_allowed.emplace(block_pair, get_block_counters(_agent.get_agent(), instance));
|
||||
max_allowed.emplace(block_pair,
|
||||
get_block_counters(_agent.get_hsa_agent(), instance));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user