P4 to Git Change 1201490 by xcui@merged_opencl_jxcwin on 2015/10/20 10:47:18
SWDEV-41018 - if system is equal to or less than 2GB memory, disable CPU and APU for OpenCL, and force the device to be 1.2 if it is a discrete GPU. precheckin: http://ocltc.amd.com:8111/viewModification.html?modId=60516&personal=true&buildTypeId=&tab=vcsModificationBuilds&show_all_builds=true code review: http://ocltc.amd.com/reviews/r/8738/ Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.cpp#277 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#531 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.cpp#331 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.hpp#95 edit
Tento commit je obsažen v:
@@ -235,6 +235,10 @@ Device::init()
|
||||
virtualMemSize =
|
||||
(uintptr_t) std::min(statex.ullTotalPageFile, statex.ullTotalVirtual);
|
||||
#endif
|
||||
//disable CPU device if system memory is equal to or less than 2GB
|
||||
if (info.globalMemSize_ <= 2 * Gi) {
|
||||
return true;
|
||||
}
|
||||
|
||||
maxWorkerThreads_ = (size_t) (virtualMemSize /
|
||||
(uintptr_t) ((CPU_WORKER_THREAD_STACK_SIZE +
|
||||
|
||||
@@ -762,9 +762,14 @@ Device::create(CALuint ordinal, CALuint numOfDevices)
|
||||
{
|
||||
appProfile_.init();
|
||||
|
||||
bool smallMemSystem = false;
|
||||
if (amd::Os::hostTotalPhysicalMemory() < 2 * Gi) {
|
||||
smallMemSystem = true;
|
||||
}
|
||||
|
||||
// Open GSL device
|
||||
if (!open(ordinal, appProfile_.enableHighPerformanceState(),
|
||||
appProfile_.reportAsOCL12Device() || (OPENCL_VERSION < 200))) {
|
||||
smallMemSystem || appProfile_.reportAsOCL12Device() || (OPENCL_VERSION < 200))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -776,7 +781,7 @@ Device::create(CALuint ordinal, CALuint numOfDevices)
|
||||
settings_ = new gpu::Settings();
|
||||
gpu::Settings* gpuSettings = reinterpret_cast<gpu::Settings*>(settings_);
|
||||
if ((gpuSettings == NULL) || !gpuSettings->create(getAttribs()
|
||||
, appProfile_.reportAsOCL12Device()
|
||||
, appProfile_.reportAsOCL12Device(), smallMemSystem
|
||||
)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -146,6 +146,7 @@ bool
|
||||
Settings::create(
|
||||
const CALdeviceattribs& calAttr
|
||||
, bool reportAsOCL12Device
|
||||
, bool smallMemSystem
|
||||
)
|
||||
{
|
||||
CALuint target = calAttr.target;
|
||||
@@ -228,6 +229,14 @@ Settings::create(
|
||||
oclVersion_ = !reportAsOCL12Device && calAttr.isOpenCL200Device ?
|
||||
XCONCAT(OpenCL, XCONCAT(OPENCL_MAJOR, OPENCL_MINOR)) : OpenCL12;
|
||||
}
|
||||
if (smallMemSystem) { //force the dGPU to be 1.2 device for small memory system.
|
||||
if (apuSystem_) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
oclVersion_ = OpenCL12;
|
||||
}
|
||||
}
|
||||
if (GPU_FORCE_OCL20_32BIT) {
|
||||
force32BitOcl20_ = true;
|
||||
oclVersion_ = !reportAsOCL12Device && calAttr.isOpenCL200Device ?
|
||||
|
||||
@@ -110,6 +110,7 @@ public:
|
||||
bool create(
|
||||
const CALdeviceattribs& calAttr //!< CAL attributes structure
|
||||
, bool reportAsOCL12Device = false //!< Report As OpenCL1.2 Device
|
||||
, bool smallMemSystem = false //!< report the sys memory is small
|
||||
);
|
||||
|
||||
private:
|
||||
|
||||
Odkázat v novém úkolu
Zablokovat Uživatele