Skip to content

Commit ae2319e

Browse files
committed
libopencl: Amend clGetDeviceInfo, make missing information non-fatal.
Unbreaks clinfo largely. Signed-off-by: Roy Spliet <[email protected]>
1 parent ff778cb commit ae2319e

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

libopencl/opencl_runtime_api.cc

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,12 +1169,15 @@ clGetDeviceInfo(cl_device_id device,
11691169
case CL_DEVICE_NAME: CL_STRING_CASE( "GPGPU-Sim" ); break;
11701170
case CL_DEVICE_GLOBAL_MEM_SIZE: CL_ULONG_CASE( 1024*1024*1024 ); break;
11711171
case CL_DEVICE_MAX_COMPUTE_UNITS: CL_UINT_CASE( device->the_device()->get_config().num_shader() ); break;
1172-
case CL_DEVICE_MAX_CLOCK_FREQUENCY: CL_UINT_CASE( device->the_device()->shader_clock() ); break;
1172+
case CL_DEVICE_MAX_CLOCK_FREQUENCY: CL_UINT_CASE( device->the_device()->shader_clock() / 1000 ); break;
11731173
case CL_DEVICE_PLATFORM: CL_STRING_CASE("GPGPU-Sim OpenCL platform"); break;
11741174
case CL_DEVICE_VENDOR:CL_STRING_CASE("GPGPU-Sim.org"); break;
1175+
case CL_DEVICE_VENDOR_ID:CL_UINT_CASE( 0x1337 ); break;
11751176
case CL_DEVICE_VERSION: CL_STRING_CASE("OpenCL 1.0"); break;
1177+
case CL_DEVICE_OPENCL_C_VERSION: CL_STRING_CASE("OpenCL C 1.0"); break;
11761178
case CL_DRIVER_VERSION: CL_STRING_CASE("1.0"); break;
11771179
case CL_DEVICE_TYPE: CL_CASE(cl_device_type, CL_DEVICE_TYPE_GPU); break;
1180+
case CL_DEVICE_PROFILE: CL_STRING_CASE("FULL_PROFILE"); break;
11781181
case CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: CL_INT_CASE( 3 ); break;
11791182
case CL_DEVICE_MAX_WORK_ITEM_SIZES:
11801183
if( param_value && param_value_size < 3*sizeof(size_t) ) return CL_INVALID_VALUE; \
@@ -1184,10 +1187,11 @@ clGetDeviceInfo(cl_device_id device,
11841187
((size_t*)param_value)[1] = n_thread_per_shader;
11851188
((size_t*)param_value)[2] = n_thread_per_shader;
11861189
}
1187-
if( param_value_size_ret ) *param_value_size_ret = 3*sizeof(cl_uint);
1190+
if( param_value_size_ret ) *param_value_size_ret = 3*sizeof(size_t);
11881191
break;
11891192
case CL_DEVICE_MAX_WORK_GROUP_SIZE: CL_INT_CASE( device->the_device()->threads_per_core() ); break;
11901193
case CL_DEVICE_ADDRESS_BITS: CL_INT_CASE( 32 ); break;
1194+
case CL_DEVICE_ENDIAN_LITTLE: CL_BOOL_CASE( CL_TRUE ); break;
11911195
case CL_DEVICE_AVAILABLE: CL_BOOL_CASE( CL_TRUE ); break;
11921196
case CL_DEVICE_COMPILER_AVAILABLE: CL_BOOL_CASE( CL_TRUE ); break;
11931197
case CL_DEVICE_IMAGE_SUPPORT: CL_INT_CASE( CL_TRUE ); break;
@@ -1209,16 +1213,17 @@ clGetDeviceInfo(cl_device_id device,
12091213
if( param_value ) buf[0]=0;
12101214
if( param_value_size_ret ) *param_value_size_ret = 1;
12111215
break;
1212-
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR: CL_INT_CASE(1); break;
1213-
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT: CL_INT_CASE(1); break;
1214-
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: CL_INT_CASE(1); break;
1215-
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: CL_INT_CASE(1); break;
1216-
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: CL_INT_CASE(1); break;
1217-
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: CL_INT_CASE(0); break;
1216+
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR: CL_UINT_CASE(1); break;
1217+
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT: CL_UINT_CASE(1); break;
1218+
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: CL_UINT_CASE(1); break;
1219+
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: CL_UINT_CASE(1); break;
1220+
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: CL_UINT_CASE(1); break;
1221+
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: CL_UINT_CASE(0); break;
1222+
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF: CL_UINT_CASE(1); break;
12181223
case CL_DEVICE_SINGLE_FP_CONFIG: CL_INT_CASE(0); break;
12191224
case CL_DEVICE_MEM_BASE_ADDR_ALIGN: CL_INT_CASE(256*8); break;
12201225
default:
1221-
opencl_not_implemented(__my_func__,__LINE__);
1226+
return CL_INVALID_VALUE;
12221227
}
12231228
return CL_SUCCESS;
12241229
}

0 commit comments

Comments
 (0)