Add Read Mostly attribute support.

Change-Id: Ia7c60edacb892cbf14bdb50350c0a0a627e53964
This commit is contained in:
Sean Keely
2021-06-01 23:38:33 -05:00
rodzic 7361fc18ee
commit f6c2aa1c78
2 zmienionych plików z 19 dodań i 2 usunięć
@@ -1701,6 +1701,14 @@ hsa_status_t Runtime::SetSvmAttrib(void* ptr, size_t size,
attribs.push_back(kmtPair(HSA_SVM_ATTR_PREFERRED_LOC, agent->node_id()));
break;
}
case HSA_AMD_SVM_ATTRIB_READ_MOSTLY: {
Check(attrib);
if (value)
set_flags |= HSA_SVM_FLAG_GPU_READ_MOSTLY;
else
clear_flags |= HSA_SVM_FLAG_GPU_READ_MOSTLY;
break;
}
case HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE: {
Agent* agent = Convert(value);
ConfirmNew(agent);
@@ -1786,7 +1794,8 @@ hsa_status_t Runtime::GetSvmAttrib(void* ptr, size_t size,
switch (attrib) {
case HSA_AMD_SVM_ATTRIB_GLOBAL_FLAG:
case HSA_AMD_SVM_ATTRIB_READ_ONLY:
case HSA_AMD_SVM_ATTRIB_HIVE_LOCAL: {
case HSA_AMD_SVM_ATTRIB_HIVE_LOCAL:
case HSA_AMD_SVM_ATTRIB_READ_MOSTLY: {
getFlags = true;
kmtIndices[i] = -1;
break;
@@ -1868,6 +1877,10 @@ hsa_status_t Runtime::GetSvmAttrib(void* ptr, size_t size,
case HSA_AMD_SVM_ATTRIB_PREFETCH_LOCATION: {
break;
}
case HSA_AMD_SVM_ATTRIB_READ_MOSTLY: {
value = (attribs[attribs.size() - 1].value & HSA_SVM_FLAG_GPU_READ_MOSTLY);
break;
}
case HSA_AMD_SVM_ATTRIB_ACCESS_QUERY: {
if (kmtIndices[i] == -1) {
if (attribs[attribs.size() - 1].value & HSA_SVM_FLAG_HOST_ACCESS)
+5 -1
Wyświetl plik
@@ -2150,7 +2150,7 @@ typedef enum hsa_amd_svm_attribute_s {
HSA_AMD_SVM_ATTRIB_PREFERRED_LOCATION = 4,
// This attribute can not be used in ::hsa_amd_svm_attributes_set (see
// ::hsa_amd_svm_prefetch_async).
// Physical location of most recent prefetch command.
// Queries the physical location of most recent prefetch command.
// If the prefetch location has not been set or is not uniform across the
// address range then returned hsa_agent_t::handle will be 0.
// Querying this attribute will return the destination agent of the most
@@ -2160,6 +2160,10 @@ typedef enum hsa_amd_svm_attribute_s {
// the location of the most recently completed prefetch.
// Type of this attribute is hsa_agent_t.
HSA_AMD_SVM_ATTRIB_PREFETCH_LOCATION = 5,
// Optimizes with the anticipation that the majority of operations to the
// range will be read operations.
// Type of this attribute is bool.
HSA_AMD_SVM_ATTRIB_READ_MOSTLY = 6,
// This attribute can not be used in ::hsa_amd_svm_attributes_get.
// Enables an agent for access to the range. Access may incur a page fault
// and associated memory migration. Either this or