Add experimental option to force discovery of all copy agents.
Discards all user provided async copy agent info and relies on pointer info discovery. Change-Id: Ife3e708a49ffccbede4983ab47d5ed0032970857
This commit is contained in:
@@ -469,8 +469,9 @@ hsa_status_t Runtime::CopyMemory(void* dst, core::Agent* dst_agent, const void*
|
|||||||
core::Agent* src_agent, size_t size,
|
core::Agent* src_agent, size_t size,
|
||||||
std::vector<core::Signal*>& dep_signals,
|
std::vector<core::Signal*>& dep_signals,
|
||||||
core::Signal& completion_signal) {
|
core::Signal& completion_signal) {
|
||||||
|
|
||||||
auto lookupAgent = [this](core::Agent* agent, const void* ptr) {
|
auto lookupAgent = [this](core::Agent* agent, const void* ptr) {
|
||||||
if (agent == nullptr) {
|
if (agent == nullptr || flag().discover_copy_agents()) {
|
||||||
hsa_amd_pointer_info_t info;
|
hsa_amd_pointer_info_t info;
|
||||||
PtrInfoBlockData block;
|
PtrInfoBlockData block;
|
||||||
info.size = sizeof(info);
|
info.size = sizeof(info);
|
||||||
@@ -628,11 +629,11 @@ hsa_status_t Runtime::GetSystemInfo(hsa_system_info_t attribute, void* value) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED: {
|
case HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED: {
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
for (auto agent : gpu_agents_) {
|
for (auto agent : gpu_agents_) {
|
||||||
AMD::GpuAgent* gpu = (AMD::GpuAgent*)agent;
|
AMD::GpuAgent* gpu = (AMD::GpuAgent*)agent;
|
||||||
ret &= (gpu->properties().Capability.ui32.SVMAPISupported == 1);
|
ret &= (gpu->properties().Capability.ui32.SVMAPISupported == 1);
|
||||||
}
|
}
|
||||||
*(bool*)value = ret;
|
*(bool*)value = ret;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,6 +153,9 @@ class Flag {
|
|||||||
// Will become opt-out and possibly removed in future releases.
|
// Will become opt-out and possibly removed in future releases.
|
||||||
var = os::GetEnvVar("HSA_COOP_CU_COUNT");
|
var = os::GetEnvVar("HSA_COOP_CU_COUNT");
|
||||||
coop_cu_count_ = (var == "1") ? true : false;
|
coop_cu_count_ = (var == "1") ? true : false;
|
||||||
|
|
||||||
|
var = os::GetEnvVar("HSA_DISCOVER_COPY_AGENTS");
|
||||||
|
discover_copy_agents_ = (var == "1") ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void parse_masks(uint32_t maxGpu, uint32_t maxCU) {
|
void parse_masks(uint32_t maxGpu, uint32_t maxCU) {
|
||||||
@@ -221,6 +224,8 @@ class Flag {
|
|||||||
|
|
||||||
bool coop_cu_count() const { return coop_cu_count_; }
|
bool coop_cu_count() const { return coop_cu_count_; }
|
||||||
|
|
||||||
|
bool discover_copy_agents() const { return discover_copy_agents_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool check_flat_scratch_;
|
bool check_flat_scratch_;
|
||||||
bool enable_vm_fault_message_;
|
bool enable_vm_fault_message_;
|
||||||
@@ -241,6 +246,7 @@ class Flag {
|
|||||||
bool debug_;
|
bool debug_;
|
||||||
bool cu_mask_skip_init_;
|
bool cu_mask_skip_init_;
|
||||||
bool coop_cu_count_;
|
bool coop_cu_count_;
|
||||||
|
bool discover_copy_agents_;
|
||||||
|
|
||||||
SDMA_OVERRIDE enable_sdma_;
|
SDMA_OVERRIDE enable_sdma_;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user