From e4ee918633669d9fd3f1c2df41b0aa3e9d9cf45e Mon Sep 17 00:00:00 2001 From: foreman Date: Fri, 5 Jan 2018 11:23:11 -0500 Subject: [PATCH] P4 to Git Change 1500415 by gandryey@gera-w8 on 2018/01/05 11:17:48 SWDEV-136522 - Tools need a way to query the PCIE device id via the OpenCL API. - Add CL_DEVICE_PCIE_ID query Affected files ... ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_device.cpp#69 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/headers/opencl1.2/CL/cl_ext.h#20 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/headers/opencl2.0/CL/cl_ext.h#36 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/headers/opencl2.1/CL/cl_ext.h#13 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/headers/opencl2.2/CL/cl_ext.h#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#580 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp#181 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/backend.h#15 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#69 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#79 edit [ROCm/clr commit: 1317a4c2f9eaf9f0bcc109cbfdb85b5414e4df07] --- .../rocclr/runtime/device/gpu/gpudevice.cpp | 19 ++++++++++----- .../device/gpu/gslbe/src/rt/GSLDevice.cpp | 2 ++ .../runtime/device/gpu/gslbe/src/rt/backend.h | 2 ++ .../rocclr/runtime/device/pal/paldevice.cpp | 24 +++++++++++-------- .../rocclr/runtime/device/rocm/rocdevice.cpp | 1 + 5 files changed, 32 insertions(+), 16 deletions(-) diff --git a/projects/clr/rocclr/runtime/device/gpu/gpudevice.cpp b/projects/clr/rocclr/runtime/device/gpu/gpudevice.cpp index 0126167072..3843fbf5c0 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gpudevice.cpp +++ b/projects/clr/rocclr/runtime/device/gpu/gpudevice.cpp @@ -519,12 +519,6 @@ void NullDevice::fillDeviceInfo(const CALdeviceattribs& calAttr, const gslMemInf info_.extensions_ = getExtensionString(); - info_.deviceTopology_.pcie.type = CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD; - info_.deviceTopology_.pcie.bus = (calAttr.pciTopologyInformation & (0xFF << 8)) >> 8; - info_.deviceTopology_.pcie.device = (calAttr.pciTopologyInformation & (0x1F << 3)) >> 3; - info_.deviceTopology_.pcie.function = (calAttr.pciTopologyInformation & 0x07); - - ::strncpy(info_.boardName_, calAttr.boardName, sizeof(info_.boardName_)); ::strncpy(info_.driverStore_, calAttr.driverStore, sizeof(info_.driverStore_)); // OpenCL1.2 device info fields @@ -565,6 +559,13 @@ void NullDevice::fillDeviceInfo(const CALdeviceattribs& calAttr, const gslMemInf } if (settings().checkExtension(ClAmdDeviceAttributeQuery)) { + ::strncpy(info_.boardName_, calAttr.boardName, sizeof(info_.boardName_)); + + info_.deviceTopology_.pcie.type = CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD; + info_.deviceTopology_.pcie.bus = (calAttr.pciTopologyInformation & (0xFF << 8)) >> 8; + info_.deviceTopology_.pcie.device = (calAttr.pciTopologyInformation & (0x1F << 3)) >> 3; + info_.deviceTopology_.pcie.function = (calAttr.pciTopologyInformation & 0x07); + info_.simdPerCU_ = hwInfo()->simdPerCU_; info_.simdWidth_ = hwInfo()->simdWidth_; info_.simdInstructionWidth_ = hwInfo()->simdInstructionWidth_; @@ -575,10 +576,16 @@ void NullDevice::fillDeviceInfo(const CALdeviceattribs& calAttr, const gslMemInf info_.localMemSizePerCU_ = hwInfo()->localMemSizePerCU_; info_.localMemBanks_ = hwInfo()->localMemBanks_; info_.gfxipVersion_ = hwInfo()->gfxipVersion_; + info_.numAsyncQueues_ = numComputeRings; + info_.numRTQueues_ = numComputeRingsRT; info_.numRTCUs_ = calAttr.maxRTCUs; + info_.threadTraceEnable_ = settings().threadTraceEnable_; + + info_.pcieDeviceId_ = calAttr.pcieDeviceID; + info_.pcieRevisionId_ = calAttr.pcieRevisionID; } } diff --git a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp index 52f2f59f47..e903a16244 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp +++ b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp @@ -119,6 +119,8 @@ CALGSLDevice::getAttribs_int(gsl::gsCtx* cs) m_attribs.isWDDM2Enabled = m_adp->pAsicInfo->vaAvailable && m_adp->pAsicInfo->bNoVATranslation; m_attribs.maxRTCUs = cs->getMaxRTCUs(); m_attribs.asicRevision = cs->getChipRev(); + m_attribs.pcieDeviceID = cs->getAsicDID(); + m_attribs.pcieRevisionID = cs->getPciRevID(); } bool diff --git a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/backend.h b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/backend.h index 183d7ae85b..ce6b129f14 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/backend.h +++ b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/backend.h @@ -88,6 +88,8 @@ typedef struct CALdeviceattribsRec { CALuint maxRTCUs; /**< The maximum number of RT CUs for RT queues */ CALuint asicRevision; /**< The ASIC revision ID */ CALchar driverStore[CAL_DRIVER_STORE_MAX_LEN];/**< Driver store location. */ + CALuint pcieDeviceID; /**< The ASIC PCIE device ID */ + CALuint pcieRevisionID; /**< The ASIC PCIE revision ID */ } CALdeviceattribs; diff --git a/projects/clr/rocclr/runtime/device/pal/paldevice.cpp b/projects/clr/rocclr/runtime/device/pal/paldevice.cpp index 3fffab7c19..376a6ead90 100644 --- a/projects/clr/rocclr/runtime/device/pal/paldevice.cpp +++ b/projects/clr/rocclr/runtime/device/pal/paldevice.cpp @@ -465,14 +465,6 @@ void NullDevice::fillDeviceInfo(const Pal::DeviceProperties& palProp, info_.localMemSize_ = settings().hwLDSSize_; info_.extensions_ = getExtensionString(); - info_.deviceTopology_.pcie.type = CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD; - info_.deviceTopology_.pcie.bus = palProp.pciProperties.busNumber; - info_.deviceTopology_.pcie.device = palProp.pciProperties.deviceNumber; - info_.deviceTopology_.pcie.function = palProp.pciProperties.functionNumber; - - ::strncpy(info_.boardName_, palProp.gpuName, - ::strnlen(palProp.gpuName, sizeof(info_.boardName_))); - // OpenCL1.2 device info fields info_.builtInKernels_ = ""; info_.imageMaxBufferSize_ = MaxImageBufferSize; @@ -511,6 +503,14 @@ void NullDevice::fillDeviceInfo(const Pal::DeviceProperties& palProp, } if (settings().checkExtension(ClAmdDeviceAttributeQuery)) { + ::strncpy(info_.boardName_, palProp.gpuName, + ::strnlen(palProp.gpuName, sizeof(info_.boardName_))); + + info_.deviceTopology_.pcie.type = CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD; + info_.deviceTopology_.pcie.bus = palProp.pciProperties.busNumber; + info_.deviceTopology_.pcie.device = palProp.pciProperties.deviceNumber; + info_.deviceTopology_.pcie.function = palProp.pciProperties.functionNumber; + info_.simdPerCU_ = hwInfo()->simdPerCU_; info_.simdWidth_ = hwInfo()->simdWidth_; info_.simdInstructionWidth_ = hwInfo()->simdInstructionWidth_; @@ -521,13 +521,17 @@ void NullDevice::fillDeviceInfo(const Pal::DeviceProperties& palProp, info_.localMemSizePerCU_ = hwInfo()->localMemSizePerCU_; info_.localMemBanks_ = hwInfo()->localMemBanks_; info_.gfxipVersion_ = hwInfo()->gfxipVersion_; + info_.numAsyncQueues_ = numComputeRings; + info_.numRTQueues_ = numExclusiveComputeRings; info_.numRTCUs_ = palProp.engineProperties[Pal::EngineTypeExclusiveCompute].maxNumDedicatedCu; + info_.threadTraceEnable_ = settings().threadTraceEnable_; + + info_.pcieDeviceId_ = palProp.deviceId; + info_.pcieRevisionId_ = palProp.revisionId; } - info_.pcieDeviceId_ = palProp.deviceId; - info_.pcieRevisionId_ = palProp.revisionId; } Device::XferBuffers::~XferBuffers() { diff --git a/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp b/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp index f1e5b50c65..25292b035c 100644 --- a/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp +++ b/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp @@ -1136,6 +1136,7 @@ bool Device::populateOCLDeviceConstants() { } //TODO: set to true once thread trace support is available info_.threadTraceEnable_ = false; + info_.pcieDeviceId_ = deviceInfo_.pciDeviceId_; } info_.maxPipePacketSize_ = info_.maxMemAllocSize_;