From a96fdd7c1fd11a110c336a71a24eed41b7ca21ea Mon Sep 17 00:00:00 2001
From: foreman
Date: Mon, 13 Apr 2015 14:57:09 -0400
Subject: [PATCH] P4 to Git Change 1140158 by gandryey@gera-w8 on 2015/04/13
14:47:04
ECR #304775 - Add capability to provide just free memory for CL_DEVICE_GLOBAL_FREE_MEMORY_AMD
- if the app provided space just for one value, then return total free memory only
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_device.cpp#57 edit
[ROCm/clr commit: 8fabccae76438609d2fcfef0ef5466f6d1672f8c]
---
projects/clr/opencl/api/opencl/amdocl/cl_device.cpp | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/projects/clr/opencl/api/opencl/amdocl/cl_device.cpp b/projects/clr/opencl/api/opencl/amdocl/cl_device.cpp
index 4d2e35c943..c0778d554b 100644
--- a/projects/clr/opencl/api/opencl/amdocl/cl_device.cpp
+++ b/projects/clr/opencl/api/opencl/amdocl/cl_device.cpp
@@ -615,13 +615,20 @@ RUNTIME_ENTRY(cl_int, clGetDeviceInfo, (
if (as_amd(device)->type() == CL_DEVICE_TYPE_GPU) {
switch (param_name) {
case CL_DEVICE_GLOBAL_FREE_MEMORY_AMD: {
+ // Free memory should contain 2 values:
+ // total free memory and the biggest free block
size_t freeMemory[2];
- if (as_amd(device)->globalFreeMemory(freeMemory)) {
+ if (!as_amd(device)->globalFreeMemory(freeMemory)) {
+ return CL_INVALID_DEVICE;
+ }
+ if (param_value_size < sizeof(freeMemory)) {
+ // Return just total free memory if the app provided space for one value
return amd::clGetInfo(
- freeMemory, param_value_size, param_value, param_value_size_ret);
+ freeMemory[0], param_value_size, param_value, param_value_size_ret);
}
else {
- return CL_INVALID_DEVICE;
+ return amd::clGetInfo(
+ freeMemory, param_value_size, param_value, param_value_size_ret);
}
}
CASE(CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, simdPerCU_);