diff --git a/projects/clr/rocclr/runtime/device/gpu/gpudevice.cpp b/projects/clr/rocclr/runtime/device/gpu/gpudevice.cpp index be0216c447..cbb025eab9 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gpudevice.cpp +++ b/projects/clr/rocclr/runtime/device/gpu/gpudevice.cpp @@ -756,11 +756,8 @@ Device::create(CALuint ordinal, CALuint numOfDevices) appProfile_.init(); // Open GSL device - bool reportOCL12Device = (OPENCL_VERSION < 200); - - reportOCL12Device = (numOfDevices < 2) ? (OPENCL_VERSION < 200) : true; if (!open(ordinal, appProfile_.enableHighPerformanceState(), - appProfile_.reportAsOCL12Device() || reportOCL12Device)) { + appProfile_.reportAsOCL12Device())) { return false; } @@ -775,7 +772,7 @@ Device::create(CALuint ordinal, CALuint numOfDevices) #if cl_amd_open_video , getVideoAttribs() #endif // cl_amd_open_video - , appProfile_.reportAsOCL12Device() || reportOCL12Device + , appProfile_.reportAsOCL12Device() )) { return false; } diff --git a/projects/clr/rocclr/runtime/device/gpu/gpusettings.cpp b/projects/clr/rocclr/runtime/device/gpu/gpusettings.cpp index 8a446bc4b5..10fbac7c4c 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gpusettings.cpp +++ b/projects/clr/rocclr/runtime/device/gpu/gpusettings.cpp @@ -291,14 +291,11 @@ Settings::create( if (ciPlus_) { libSelector_ = amd::GPU_Library_CI; #if defined(_LP64) - oclVersion_ = reportAsOCL12Device ? OpenCL12 : XCONCAT(OpenCL,XCONCAT(OPENCL_MAJOR,OPENCL_MINOR)); + oclVersion_ = !reportAsOCL12Device && calAttr.isOpenCL200Device ? XCONCAT(OpenCL, XCONCAT(OPENCL_MAJOR, OPENCL_MINOR)) : OpenCL12; #endif - if (calAttr.numOfVpu > 1) { - oclVersion_ = OpenCL12; - } if (GPU_FORCE_OCL20_32BIT) { force32BitOcl20_ = true; - oclVersion_ = reportAsOCL12Device ? OpenCL12 : XCONCAT(OpenCL,XCONCAT(OPENCL_MAJOR,OPENCL_MINOR)); + oclVersion_ = !reportAsOCL12Device && calAttr.isOpenCL200Device ? XCONCAT(OpenCL, XCONCAT(OPENCL_MAJOR, OPENCL_MINOR)) : OpenCL12; } if (hsail_ || (OPENCL_VERSION < 200)) { oclVersion_ = OpenCL12; diff --git a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/include/cal/cal.h b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/include/cal/cal.h index caef5dff22..a9b8b14608 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/include/cal/cal.h +++ b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/include/cal/cal.h @@ -238,6 +238,7 @@ typedef struct CALdeviceattribsRec { CALuint64 vaEnd; /**< VA end address */ bool isWorkstation; /**< Whether Device is a Workstation/Server part */ CALuint numOfVpu; /**< number of vpu in the device*/ + bool isOpenCL200Device; /**< the flag to mark if the device is OpenCL 200*/ } CALdeviceattribs; /** CAL device status */ 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 8f82725d0e..3af8cb0ea0 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 @@ -155,6 +155,7 @@ CALGSLDevice::getAttribs_int(gsl::gsCtx* cs) m_attribs.vaStart = static_cast(m_adp->pAsicInfo->vaStart); m_attribs.vaEnd = static_cast(m_adp->pAsicInfo->vaEnd); m_attribs.numOfVpu = m_adp->pAsicInfo->numberOfVPU; + m_attribs.isOpenCL200Device = m_adp->pAsicInfo->bIsOpen2Device; } void diff --git a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.h b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.h index c0ed5bb5d1..121f6c26cb 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.h +++ b/projects/clr/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.h @@ -209,6 +209,7 @@ private: CALdevicestatus m_deviceStatus; gslTextureResourceObject m_textureResource; gslSamplerObject m_textureSampler; + bool m_isOpenCL200Device; union { struct {