P4 to Git Change 1084301 by xcui@merged_opencl_jxcwin on 2014/10/03 21:15:33
EPR #406328 - changed the device open algorithm so that the we only open the first OpenCL device. This is the OPENCL runtime changes, but this will be removed once we implemented multiple device support for SVM.
the code review and precheckin test:
http://ocltc.amd.com/reviews/r/5942/
http://ocltc.amd.com:8111/viewModification.html?modId=40902&personal=true&buildTypeId=&tab=vcsModificationBuilds&show_all_builds=true
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#466 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.cpp#287 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.hpp#87 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/include/cal/cal.h#29 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp#100 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.h#40 edit
[ROCm/clr commit: c248f04970]
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -155,6 +155,7 @@ CALGSLDevice::getAttribs_int(gsl::gsCtx* cs)
|
||||
m_attribs.vaStart = static_cast<CALuint64>(m_adp->pAsicInfo->vaStart);
|
||||
m_attribs.vaEnd = static_cast<CALuint64>(m_adp->pAsicInfo->vaEnd);
|
||||
m_attribs.numOfVpu = m_adp->pAsicInfo->numberOfVPU;
|
||||
m_attribs.isOpenCL200Device = m_adp->pAsicInfo->bIsOpen2Device;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -209,6 +209,7 @@ private:
|
||||
CALdevicestatus m_deviceStatus;
|
||||
gslTextureResourceObject m_textureResource;
|
||||
gslSamplerObject m_textureSampler;
|
||||
bool m_isOpenCL200Device;
|
||||
|
||||
union {
|
||||
struct {
|
||||
|
||||
Viittaa uudesa ongelmassa
Block a user