Replace get_device_version with get_cl_device_version (#733)

They are duplicate functions

Fixes #709

Change-Id: I8f7d6b8254047adb9e09ede4951dedc3ec5c1099
Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
This commit is contained in:
ellnor01
2020-04-15 14:31:22 +01:00
committed by GitHub
parent ce39ffdda7
commit 3b79ecdb87
7 changed files with 11 additions and 46 deletions

View File

@@ -1027,26 +1027,6 @@ int build_program_create_kernel_helper(cl_context context,
return 0; return 0;
} }
int get_device_version( cl_device_id id, size_t* major, size_t* minor)
{
cl_char buffer[ 4098 ];
size_t length;
// Device version should fit the regex "OpenCL [0-9]+\.[0-9]+ *.*"
cl_int error = clGetDeviceInfo( id, CL_DEVICE_VERSION, sizeof( buffer ), buffer, &length );
test_error( error, "Unable to get device version string" );
char *p1 = (char *)buffer + strlen( "OpenCL " );
char *p2;
while( *p1 == ' ' )
p1++;
*major = strtol( p1, &p2, 10 );
error = *p2 != '.';
test_error(error, "ERROR: Version number must contain a decimal point!");
*minor = strtol( ++p2, NULL, 10 );
return error;
}
int get_max_allowed_work_group_size( cl_context context, cl_kernel kernel, size_t *outMaxSize, size_t *outLimits ) int get_max_allowed_work_group_size( cl_context context, cl_kernel kernel, size_t *outMaxSize, size_t *outLimits )
{ {
cl_device_id *devices; cl_device_id *devices;

View File

@@ -125,9 +125,6 @@ extern int get_max_common_2D_work_group_size( cl_context context, cl_kernel kern
/* Helper to obtain the biggest fit work group size for all the devices in a given group and for the given global thread size */ /* Helper to obtain the biggest fit work group size for all the devices in a given group and for the given global thread size */
extern int get_max_common_3D_work_group_size( cl_context context, cl_kernel kernel, size_t *globalThreadSize, size_t *outSizes ); extern int get_max_common_3D_work_group_size( cl_context context, cl_kernel kernel, size_t *globalThreadSize, size_t *outSizes );
/* Helper to get major/minor number for a device */
extern int get_device_version( cl_device_id id, size_t* major, size_t* minor);
/* Helper to obtain the biggest allowed work group size for all the devices in a given group */ /* Helper to obtain the biggest allowed work group size for all the devices in a given group */
extern int get_max_allowed_work_group_size( cl_context context, cl_kernel kernel, size_t *outSize, size_t *outLimits ); extern int get_max_allowed_work_group_size( cl_context context, cl_kernel kernel, size_t *outSize, size_t *outLimits );

View File

@@ -198,12 +198,9 @@ cl_int create_cl_objects(cl_device_id device_from_harness, const char** ppCodeSt
cl_uint num_capable_devices = 0; cl_uint num_capable_devices = 0;
for(cl_uint i = 0; i < *num_devices; i++) for(cl_uint i = 0; i < *num_devices; i++)
{ {
size_t major = 0; Version version = get_device_cl_version(devices[i]);
size_t minor = 0;
error = get_device_version(devices[i], &major, &minor);
test_error(error, "get_device_version failed");
if(device_from_harness != devices[i] && major < 2) if(device_from_harness != devices[i] && version < Version(2,0))
{ {
continue; continue;
} }

View File

@@ -94,16 +94,13 @@ bool check_atomic_support( cl_device_id device, bool extended, bool isLocal, Exp
if( isLocal ) if( isLocal )
index += 2; index += 2;
size_t major, minor; Version version = get_device_cl_version(device);
int error = get_device_version(device, &major, &minor);
test_error( error, "get_device_version" );
switch (dataType) switch (dataType)
{ {
case kInt: case kInt:
case kUInt: case kUInt:
if( major * 10 + minor >= 11 ) if( version >= Version(1,1) )
return 1; return 1;
break; break;
case kLong: case kLong:
@@ -111,7 +108,7 @@ bool check_atomic_support( cl_device_id device, bool extended, bool isLocal, Exp
index += 4; index += 4;
break; break;
case kFloat: // this has to stay separate since the float atomics arent in the 1.0 extensions case kFloat: // this has to stay separate since the float atomics arent in the 1.0 extensions
return major * 10 + minor >= 11; return version >= Version(1,1);
default: default:
log_error( "ERROR: Unsupported data type (%d) in check_atomic_support\n", dataType ); log_error( "ERROR: Unsupported data type (%d) in check_atomic_support\n", dataType );
return 0; return 0;

View File

@@ -49,11 +49,9 @@ cl_int get_type_size( cl_context context, cl_command_queue queue, const char *ty
{ {
sizeof_kernel_code[0] = "#pragma OPENCL EXTENSION cl_khr_fp16 : enable\n"; sizeof_kernel_code[0] = "#pragma OPENCL EXTENSION cl_khr_fp16 : enable\n";
} }
size_t major = 0;
size_t minor = 0;
bool deviceLt20 = false; bool deviceLt20 = false;
int error = get_device_version(device, &major, &minor); Version version = get_device_cl_version(device);
if (major < 2) { if (version < Version(2,0)) {
deviceLt20 = true; deviceLt20 = true;
} }

View File

@@ -218,10 +218,9 @@ int test_workitems(cl_device_id device, cl_context context, cl_command_queue que
check_sub_groups_limits = false; check_sub_groups_limits = false;
if (is_extension_available(device, "cl_khr_subgroups")) if (is_extension_available(device, "cl_khr_subgroups"))
{ {
size_t major, minor; Version version = get_device_cl_version(device);
error = get_device_version(device, &major, &minor);
RETURN_ON_ERROR(error) RETURN_ON_ERROR(error)
check_sub_groups_limits = (major > 2 || major == 2 && minor >= 1); // clGetKernelSubGroupInfo is from 2.1 check_sub_groups_limits = (version >= Version(2,1)); // clGetKernelSubGroupInfo is from 2.1
check_sub_groups = true; check_sub_groups = true;
} }
#endif #endif

View File

@@ -333,12 +333,9 @@ int test_compiler_defines_for_extensions(cl_device_id device, cl_context context
cl_program program; cl_program program;
cl_kernel kernel; cl_kernel kernel;
size_t major = 0; Version version = get_device_cl_version(device);
size_t minor = 0;
error = get_device_version(device, &major, &minor);
test_error(error, "get_device_version failed");
error = create_single_kernel_helper(context, &program, &kernel, 1, (const char **)&kernel_code, "test", major < 2 ? "" : "-cl-std=CL2.0"); error = create_single_kernel_helper(context, &program, &kernel, 1, (const char **)&kernel_code, "test", version < Version(2,0) ? "" : "-cl-std=CL2.0");
test_error(error, "create_single_kernel_helper failed"); test_error(error, "create_single_kernel_helper failed");
data = (cl_int*)malloc(sizeof(cl_int)*(num_not_supported_extensions+num_of_supported_extensions)); data = (cl_int*)malloc(sizeof(cl_int)*(num_not_supported_extensions+num_of_supported_extensions));