diff --git a/src/util/hsa_rsrc_factory.cpp b/src/util/hsa_rsrc_factory.cpp index 6d60882b23..50d4ec1eb6 100644 --- a/src/util/hsa_rsrc_factory.cpp +++ b/src/util/hsa_rsrc_factory.cpp @@ -366,7 +366,13 @@ const AgentInfo* HsaRsrcFactory::AddAgentInfo(const hsa_agent_t agent) { agent_info->vgpr_block_size = 4; // Set GPU index - agent_info->dev_index = gpu_list_.size(); + uint32_t driver_node_id; + status = hsa_api_.hsa_agent_get_info( + agent, + static_cast(HSA_AMD_AGENT_INFO_DRIVER_NODE_ID), + &driver_node_id); + CHECK_STATUS("hsa_agent_get_info(gpu hsa_driver_node_id)", status); + agent_info->dev_index = driver_node_id; gpu_list_.push_back(agent_info); gpu_agents_.push_back(agent); } diff --git a/test/util/hsa_rsrc_factory.cpp b/test/util/hsa_rsrc_factory.cpp index f20e66f057..21f340e0d5 100644 --- a/test/util/hsa_rsrc_factory.cpp +++ b/test/util/hsa_rsrc_factory.cpp @@ -355,7 +355,13 @@ const AgentInfo* HsaRsrcFactory::AddAgentInfo(const hsa_agent_t agent) { CHECK_ITER_STATUS("hsa_amd_agent_iterate_memory_pools(gpu pool)", status); // Set GPU index - agent_info->dev_index = gpu_list_.size(); + uint32_t driver_node_id; + status = hsa_api_.hsa_agent_get_info( + agent, + static_cast(HSA_AMD_AGENT_INFO_DRIVER_NODE_ID), + &driver_node_id); + CHECK_STATUS("hsa_agent_get_info(gpu hsa_driver_node_id)", status); + agent_info->dev_index = driver_node_id; gpu_list_.push_back(agent_info); gpu_agents_.push_back(agent); }