mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
Migrate geometrics suite to the new test registration framework (#2335)
Contributes to https://github.com/KhronosGroup/OpenCL-CTS/issues/2181. Signed-off-by: Michael Rizkalla <michael.rizkalla@arm.com>
This commit is contained in:
@@ -17,27 +17,14 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "procs.h"
|
|
||||||
#include "harness/testHarness.h"
|
#include "harness/testHarness.h"
|
||||||
#if !defined(_WIN32)
|
#if !defined(_WIN32)
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
test_definition test_list[] = {
|
|
||||||
ADD_TEST( geom_cross ),
|
|
||||||
ADD_TEST( geom_dot ),
|
|
||||||
ADD_TEST( geom_distance ),
|
|
||||||
ADD_TEST( geom_fast_distance ),
|
|
||||||
ADD_TEST( geom_length ),
|
|
||||||
ADD_TEST( geom_fast_length ),
|
|
||||||
ADD_TEST( geom_normalize ),
|
|
||||||
ADD_TEST( geom_fast_normalize ),
|
|
||||||
};
|
|
||||||
|
|
||||||
const int test_num = ARRAY_SIZE( test_list );
|
|
||||||
|
|
||||||
int main(int argc, const char *argv[])
|
int main(int argc, const char *argv[])
|
||||||
{
|
{
|
||||||
return runTestHarness(argc, argv, test_num, test_list, false, 0);
|
return runTestHarness(argc, argv, test_registry::getInstance().num_tests(),
|
||||||
|
test_registry::getInstance().definitions(), false, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright (c) 2017 The Khronos Group Inc.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
#include "harness/errorHelpers.h"
|
|
||||||
#include "harness/kernelHelpers.h"
|
|
||||||
#include "harness/typeWrappers.h"
|
|
||||||
|
|
||||||
extern int create_program_and_kernel(const char *source, const char *kernel_name, cl_program *program_ret, cl_kernel *kernel_ret);
|
|
||||||
|
|
||||||
extern int test_geom_cross(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements);
|
|
||||||
extern int test_geom_dot(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements);
|
|
||||||
extern int test_geom_distance(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements);
|
|
||||||
extern int test_geom_fast_distance(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements);
|
|
||||||
extern int test_geom_length(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements);
|
|
||||||
extern int test_geom_fast_length(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements);
|
|
||||||
extern int test_geom_normalize(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements);
|
|
||||||
extern int test_geom_fast_normalize(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements);
|
|
||||||
|
|
||||||
extern int test_geom_cross_double(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements, MTdata d);
|
|
||||||
extern int test_geom_dot_double(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements, MTdata d);
|
|
||||||
extern int test_geom_distance_double(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements, MTdata d);
|
|
||||||
extern int test_geom_length_double(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements, MTdata d);
|
|
||||||
extern int test_geom_normalize_double(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements, MTdata d);
|
|
||||||
@@ -16,14 +16,30 @@
|
|||||||
#ifndef _testBase_h
|
#ifndef _testBase_h
|
||||||
#define _testBase_h
|
#define _testBase_h
|
||||||
|
|
||||||
|
#include <CL/cl.h>
|
||||||
#include "harness/compat.h"
|
#include "harness/compat.h"
|
||||||
|
#include "harness/mt19937.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#include "procs.h"
|
extern int test_geom_cross_double(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements,
|
||||||
|
MTdata d);
|
||||||
|
extern int test_geom_dot_double(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements,
|
||||||
|
MTdata d);
|
||||||
|
extern int test_geom_distance_double(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements,
|
||||||
|
MTdata d);
|
||||||
|
extern int test_geom_length_double(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements,
|
||||||
|
MTdata d);
|
||||||
|
extern int test_geom_normalize_double(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements,
|
||||||
|
MTdata d);
|
||||||
|
|
||||||
#endif // _testBase_h
|
#endif // _testBase_h
|
||||||
|
|
||||||
|
|||||||
@@ -148,15 +148,13 @@ void cross_product( const float *vecA, const float *vecB, float *outVector, floa
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
REGISTER_TEST(geom_cross)
|
||||||
|
|
||||||
int test_geom_cross(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements )
|
|
||||||
{
|
{
|
||||||
int vecsize;
|
int vecsize;
|
||||||
RandomSeed seed(gRandomSeed);
|
RandomSeed seed(gRandomSeed);
|
||||||
|
|
||||||
/* Get the default rounding mode */
|
/* Get the default rounding mode */
|
||||||
cl_device_fp_config defaultRoundingMode = get_default_rounding_mode(deviceID);
|
cl_device_fp_config defaultRoundingMode = get_default_rounding_mode(device);
|
||||||
if( 0 == defaultRoundingMode )
|
if( 0 == defaultRoundingMode )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -269,12 +267,16 @@ int test_geom_cross(cl_device_id deviceID, cl_context context, cl_command_queue
|
|||||||
}
|
}
|
||||||
} // for(vecsize=...
|
} // for(vecsize=...
|
||||||
|
|
||||||
if(!is_extension_available(deviceID, "cl_khr_fp64")) {
|
if (!is_extension_available(device, "cl_khr_fp64"))
|
||||||
|
{
|
||||||
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
log_info("Testing doubles...\n");
|
log_info("Testing doubles...\n");
|
||||||
return test_geom_cross_double( deviceID, context, queue, num_elements, seed);
|
return test_geom_cross_double(device, context, queue, num_elements,
|
||||||
|
seed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -497,7 +499,7 @@ double verifyDot( float *srcA, float *srcB, size_t vecSize )
|
|||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
int test_geom_dot(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements)
|
REGISTER_TEST(geom_dot)
|
||||||
{
|
{
|
||||||
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
@@ -516,14 +518,14 @@ int test_geom_dot(cl_device_id deviceID, cl_context context, cl_command_queue qu
|
|||||||
if (retVal)
|
if (retVal)
|
||||||
return retVal;
|
return retVal;
|
||||||
|
|
||||||
if(!is_extension_available(deviceID, "cl_khr_fp64"))
|
if (!is_extension_available(device, "cl_khr_fp64"))
|
||||||
{
|
{
|
||||||
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
log_info("Testing doubles...\n");
|
log_info("Testing doubles...\n");
|
||||||
return test_geom_dot_double( deviceID, context, queue, num_elements, seed);
|
return test_geom_dot_double(device, context, queue, num_elements, seed);
|
||||||
}
|
}
|
||||||
|
|
||||||
double verifyFastDistance( float *srcA, float *srcB, size_t vecSize )
|
double verifyFastDistance( float *srcA, float *srcB, size_t vecSize )
|
||||||
@@ -542,7 +544,7 @@ double verifyFastDistance( float *srcA, float *srcB, size_t vecSize )
|
|||||||
return sqrt( total );
|
return sqrt( total );
|
||||||
}
|
}
|
||||||
|
|
||||||
int test_geom_fast_distance(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements)
|
REGISTER_TEST(geom_fast_distance)
|
||||||
{
|
{
|
||||||
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
@@ -589,7 +591,7 @@ double verifyDistance( float *srcA, float *srcB, size_t vecSize )
|
|||||||
return sqrt( total );
|
return sqrt( total );
|
||||||
}
|
}
|
||||||
|
|
||||||
int test_geom_distance(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements)
|
REGISTER_TEST(geom_distance)
|
||||||
{
|
{
|
||||||
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
@@ -616,13 +618,14 @@ int test_geom_distance(cl_device_id deviceID, cl_context context, cl_command_que
|
|||||||
if (retVal)
|
if (retVal)
|
||||||
return retVal;
|
return retVal;
|
||||||
|
|
||||||
if(!is_extension_available(deviceID, "cl_khr_fp64"))
|
if (!is_extension_available(device, "cl_khr_fp64"))
|
||||||
{
|
{
|
||||||
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
log_info("Testing doubles...\n");
|
log_info("Testing doubles...\n");
|
||||||
return test_geom_distance_double( deviceID, context, queue, num_elements, seed);
|
return test_geom_distance_double(device, context, queue, num_elements,
|
||||||
|
seed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -754,7 +757,7 @@ double verifyLength( float *srcA, size_t vecSize )
|
|||||||
return sqrt( total );
|
return sqrt( total );
|
||||||
}
|
}
|
||||||
|
|
||||||
int test_geom_length(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements)
|
REGISTER_TEST(geom_length)
|
||||||
{
|
{
|
||||||
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
@@ -781,7 +784,7 @@ int test_geom_length(cl_device_id deviceID, cl_context context, cl_command_queue
|
|||||||
if (retVal)
|
if (retVal)
|
||||||
return retVal;
|
return retVal;
|
||||||
|
|
||||||
if(!is_extension_available(deviceID, "cl_khr_fp64"))
|
if (!is_extension_available(device, "cl_khr_fp64"))
|
||||||
{
|
{
|
||||||
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
||||||
return 0;
|
return 0;
|
||||||
@@ -789,7 +792,8 @@ int test_geom_length(cl_device_id deviceID, cl_context context, cl_command_queue
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
log_info("Testing doubles...\n");
|
log_info("Testing doubles...\n");
|
||||||
return test_geom_length_double( deviceID, context, queue, num_elements, seed);
|
return test_geom_length_double(device, context, queue, num_elements,
|
||||||
|
seed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -809,7 +813,7 @@ double verifyFastLength( float *srcA, size_t vecSize )
|
|||||||
return sqrt( total );
|
return sqrt( total );
|
||||||
}
|
}
|
||||||
|
|
||||||
int test_geom_fast_length(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements)
|
REGISTER_TEST(geom_fast_length)
|
||||||
{
|
{
|
||||||
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
@@ -1059,7 +1063,7 @@ void verifyNormalize( float *srcA, float *dst, size_t vecSize )
|
|||||||
dst[i] = (float)( (double)srcA[i] / value );
|
dst[i] = (float)( (double)srcA[i] / value );
|
||||||
}
|
}
|
||||||
|
|
||||||
int test_geom_normalize(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements)
|
REGISTER_TEST(geom_normalize)
|
||||||
{
|
{
|
||||||
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
@@ -1084,18 +1088,19 @@ int test_geom_normalize(cl_device_id deviceID, cl_context context, cl_command_qu
|
|||||||
if (retVal)
|
if (retVal)
|
||||||
return retVal;
|
return retVal;
|
||||||
|
|
||||||
if(!is_extension_available(deviceID, "cl_khr_fp64"))
|
if (!is_extension_available(device, "cl_khr_fp64"))
|
||||||
{
|
{
|
||||||
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
log_info("Extension cl_khr_fp64 not supported; skipping double tests.\n");
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
log_info("Testing doubles...\n");
|
log_info("Testing doubles...\n");
|
||||||
return test_geom_normalize_double( deviceID, context, queue, num_elements, seed);
|
return test_geom_normalize_double(device, context, queue, num_elements,
|
||||||
|
seed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int test_geom_fast_normalize(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements)
|
REGISTER_TEST(geom_fast_normalize)
|
||||||
{
|
{
|
||||||
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
size_t sizes[] = { 1, 2, 3, 4, 0 };
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
|
|||||||
Reference in New Issue
Block a user