From 044a7e55ad4089bf7eec85fb940dcddc2679ceee Mon Sep 17 00:00:00 2001 From: Alex Xie Date: Thu, 30 Apr 2020 22:19:15 -0400 Subject: [PATCH] SWDEV-221166 - Detect support for large bar access through HIP runtime API Change-Id: Iaa9756c1b5e40c1ab5afb38e44a6699fa5f6c13f --- hipamd/include/hip/hip_runtime_api.h | 2 +- hipamd/samples/1_Utils/hipInfo/hipInfo.cpp | 3 ++- hipamd/src/hip_hcc.cpp | 2 +- hipamd/src/hip_hcc_internal.h | 3 --- hipamd/vdi/hip_device.cpp | 1 + 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/hipamd/include/hip/hip_runtime_api.h b/hipamd/include/hip/hip_runtime_api.h index b0974aeef6..4dbaaf8d18 100644 --- a/hipamd/include/hip/hip_runtime_api.h +++ b/hipamd/include/hip/hip_runtime_api.h @@ -136,7 +136,7 @@ typedef struct hipDeviceProp_t { ///devices with unmatched block dimensions int cooperativeMultiDeviceUnmatchedSharedMem; ///< HIP device supports cooperative launch on multiple ///devices with unmatched shared memories - + int isLargeBar; ///< 1: if it is a large PCI bar device, else 0 } hipDeviceProp_t; diff --git a/hipamd/samples/1_Utils/hipInfo/hipInfo.cpp b/hipamd/samples/1_Utils/hipInfo/hipInfo.cpp index 14faa7671b..31a5430486 100644 --- a/hipamd/samples/1_Utils/hipInfo/hipInfo.cpp +++ b/hipamd/samples/1_Utils/hipInfo/hipInfo.cpp @@ -146,7 +146,8 @@ void printDeviceProp(int deviceId) { cout << setw(w1) << "maxTexture3D.width: " << props.maxTexture3D[0] << endl; cout << setw(w1) << "maxTexture3D.height: " << props.maxTexture3D[1] << endl; cout << setw(w1) << "maxTexture3D.depth: " << props.maxTexture3D[2] << endl; - + cout << setw(w1) << "isLargeBar: " << props.isLargeBar << endl; + int deviceCnt; hipGetDeviceCount(&deviceCnt); cout << setw(w1) << "peers: "; diff --git a/hipamd/src/hip_hcc.cpp b/hipamd/src/hip_hcc.cpp index 5159254d57..ced16739d9 100644 --- a/hipamd/src/hip_hcc.cpp +++ b/hipamd/src/hip_hcc.cpp @@ -864,7 +864,7 @@ hipError_t ihipDevice_t::initProperties(hipDeviceProp_t* prop) { /* Computemode for HSA Devices is always : cudaComputeModeDefault */ prop->computeMode = 0; - _isLargeBar = _acc.has_cpu_accessible_am(); + prop->isLargeBar = _acc.has_cpu_accessible_am() ? 1 : 0; // Get Max Threads Per Multiprocessor uint32_t max_waves_per_cu; diff --git a/hipamd/src/hip_hcc_internal.h b/hipamd/src/hip_hcc_internal.h index 803abe28e2..cf3b7f6d45 100644 --- a/hipamd/src/hip_hcc_internal.h +++ b/hipamd/src/hip_hcc_internal.h @@ -836,9 +836,6 @@ class ihipDevice_t { unsigned _computeUnits; hipDeviceProp_t _props; // saved device properties. - // TODO - report this through device properties, base on HCC API call. - int _isLargeBar; - // Node id reported by kfd for this device uint32_t _driver_node_id; diff --git a/hipamd/vdi/hip_device.cpp b/hipamd/vdi/hip_device.cpp index 5dfc595ee9..65c09398fe 100644 --- a/hipamd/vdi/hip_device.cpp +++ b/hipamd/vdi/hip_device.cpp @@ -230,6 +230,7 @@ hipError_t hipGetDeviceProperties ( hipDeviceProp_t* props, hipDevice_t device ) deviceProps.texturePitchAlignment = info.imagePitchAlignment_; deviceProps.kernelExecTimeoutEnabled = 0; deviceProps.ECCEnabled = info.errorCorrectionSupport_? 1:0; + deviceProps.isLargeBar = info.largeBar_ ? 1 : 0; *props = deviceProps; HIP_RETURN(hipSuccess);