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:
foreman
2015-10-20 11:02:14 -04:00
rodič 3b9fcfeb89
revize 25bfbb8085
4 změnil soubory, kde provedl 21 přidání a 2 odebrání
+4
Zobrazit soubor
@@ -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 +
+7 -2
Zobrazit soubor
@@ -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;
}
+9
Zobrazit soubor
@@ -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 ?
+1
Zobrazit soubor
@@ -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: