mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-23 07:39:01 +00:00
Replace magic constants in api/kernels tests (#754)
Also remove one unused test function.
This commit is contained in:
@@ -180,11 +180,13 @@ int test_execute_kernel_local_sizes(cl_device_id deviceID, cl_context context, c
|
|||||||
clKernelWrapper kernel;
|
clKernelWrapper kernel;
|
||||||
clMemWrapper streams[2];
|
clMemWrapper streams[2];
|
||||||
size_t threads[1], localThreads[1];
|
size_t threads[1], localThreads[1];
|
||||||
cl_float inputData[100];
|
|
||||||
cl_int outputData[100];
|
|
||||||
RandomSeed seed( gRandomSeed );
|
RandomSeed seed( gRandomSeed );
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
num_elements = 100;
|
||||||
|
std::vector<cl_float> inputData(num_elements);
|
||||||
|
std::vector<cl_int> outputData(num_elements);
|
||||||
|
|
||||||
/* Create a kernel to test with */
|
/* Create a kernel to test with */
|
||||||
if( create_single_kernel_helper( context, &program, &kernel, 1, sample_single_test_kernel, "sample_test" ) != 0 )
|
if( create_single_kernel_helper( context, &program, &kernel, 1, sample_single_test_kernel, "sample_test" ) != 0 )
|
||||||
{
|
{
|
||||||
@@ -192,18 +194,20 @@ int test_execute_kernel_local_sizes(cl_device_id deviceID, cl_context context, c
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Create some I/O streams */
|
/* Create some I/O streams */
|
||||||
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE), sizeof(cl_float) * 100, NULL, &error);
|
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE),
|
||||||
|
sizeof(cl_float) * num_elements, NULL, &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE), sizeof(cl_int) * 100, NULL, &error);
|
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE),
|
||||||
|
sizeof(cl_int) * num_elements, NULL, &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
|
|
||||||
/* Write some test data */
|
/* Write some test data */
|
||||||
memset( outputData, 0, sizeof( outputData ) );
|
for (i = 0; i < num_elements; i++)
|
||||||
|
|
||||||
for (i=0; i<100; i++)
|
|
||||||
inputData[i] = get_random_float(-(float) 0x7fffffff, (float) 0x7fffffff, seed);
|
inputData[i] = get_random_float(-(float) 0x7fffffff, (float) 0x7fffffff, seed);
|
||||||
|
|
||||||
error = clEnqueueWriteBuffer(queue, streams[0], CL_TRUE, 0, sizeof(cl_float)*100, (void *)inputData, 0, NULL, NULL);
|
error = clEnqueueWriteBuffer(queue, streams[0], CL_TRUE, 0,
|
||||||
|
sizeof(cl_float) * num_elements,
|
||||||
|
(void *)inputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to set testing kernel data" );
|
test_error( error, "Unable to set testing kernel data" );
|
||||||
|
|
||||||
/* Set the arguments */
|
/* Set the arguments */
|
||||||
@@ -213,17 +217,19 @@ int test_execute_kernel_local_sizes(cl_device_id deviceID, cl_context context, c
|
|||||||
test_error( error, "Unable to set kernel arguments" );
|
test_error( error, "Unable to set kernel arguments" );
|
||||||
|
|
||||||
/* Test running the kernel and verifying it */
|
/* Test running the kernel and verifying it */
|
||||||
threads[0] = (size_t)100;
|
threads[0] = (size_t)num_elements;
|
||||||
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
||||||
test_error( error, "Unable to get work group size to use" );
|
test_error( error, "Unable to get work group size to use" );
|
||||||
|
|
||||||
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
||||||
test_error( error, "Kernel execution failed" );
|
test_error( error, "Kernel execution failed" );
|
||||||
|
|
||||||
error = clEnqueueReadBuffer( queue, streams[1], CL_TRUE, 0, sizeof(cl_int)*100, (void *)outputData, 0, NULL, NULL );
|
error = clEnqueueReadBuffer(queue, streams[1], CL_TRUE, 0,
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
(void *)outputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to get result data" );
|
test_error( error, "Unable to get result data" );
|
||||||
|
|
||||||
for (i=0; i<100; i++)
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
if (outputData[i] != (int)inputData[i])
|
if (outputData[i] != (int)inputData[i])
|
||||||
{
|
{
|
||||||
@@ -240,10 +246,12 @@ int test_execute_kernel_local_sizes(cl_device_id deviceID, cl_context context, c
|
|||||||
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
||||||
test_error( error, "Kernel execution failed" );
|
test_error( error, "Kernel execution failed" );
|
||||||
|
|
||||||
error = clEnqueueReadBuffer( queue, streams[1], CL_TRUE, 0, sizeof(cl_int)*100, (void *)outputData, 0, NULL, NULL );
|
error = clEnqueueReadBuffer(queue, streams[1], CL_TRUE, 0,
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
(void *)outputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to get result data" );
|
test_error( error, "Unable to get result data" );
|
||||||
|
|
||||||
for (i=0; i<100; i++)
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
if (outputData[i] != (int)inputData[i])
|
if (outputData[i] != (int)inputData[i])
|
||||||
{
|
{
|
||||||
@@ -260,10 +268,12 @@ int test_execute_kernel_local_sizes(cl_device_id deviceID, cl_context context, c
|
|||||||
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
||||||
test_error( error, "Kernel execution failed" );
|
test_error( error, "Kernel execution failed" );
|
||||||
|
|
||||||
error = clEnqueueReadBuffer( queue, streams[1], CL_TRUE, 0, sizeof(cl_int)*100, (void *)outputData, 0, NULL, NULL );
|
error = clEnqueueReadBuffer(queue, streams[1], CL_TRUE, 0,
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
(void *)outputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to get result data" );
|
test_error( error, "Unable to get result data" );
|
||||||
|
|
||||||
for (i=0; i<100; i++)
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
if (outputData[i] != (int)inputData[i])
|
if (outputData[i] != (int)inputData[i])
|
||||||
{
|
{
|
||||||
@@ -277,10 +287,12 @@ int test_execute_kernel_local_sizes(cl_device_id deviceID, cl_context context, c
|
|||||||
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
||||||
test_error( error, "Kernel execution failed" );
|
test_error( error, "Kernel execution failed" );
|
||||||
|
|
||||||
error = clEnqueueReadBuffer( queue, streams[1], CL_TRUE, 0, sizeof(cl_int)*100, (void *)outputData, 0, NULL, NULL );
|
error = clEnqueueReadBuffer(queue, streams[1], CL_TRUE, 0,
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
(void *)outputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to get result data" );
|
test_error( error, "Unable to get result data" );
|
||||||
|
|
||||||
for (i=0; i<100; i++)
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
if (outputData[i] != (int)inputData[i])
|
if (outputData[i] != (int)inputData[i])
|
||||||
{
|
{
|
||||||
@@ -299,11 +311,13 @@ int test_set_kernel_arg_by_index(cl_device_id deviceID, cl_context context, cl_c
|
|||||||
clKernelWrapper kernel;
|
clKernelWrapper kernel;
|
||||||
clMemWrapper streams[2];
|
clMemWrapper streams[2];
|
||||||
size_t threads[1], localThreads[1];
|
size_t threads[1], localThreads[1];
|
||||||
cl_float inputData[10];
|
|
||||||
cl_int outputData[10];
|
|
||||||
RandomSeed seed( gRandomSeed );
|
RandomSeed seed( gRandomSeed );
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
num_elements = 10;
|
||||||
|
std::vector<cl_float> inputData(num_elements);
|
||||||
|
std::vector<cl_int> outputData(num_elements);
|
||||||
|
|
||||||
/* Create a kernel to test with */
|
/* Create a kernel to test with */
|
||||||
if( create_single_kernel_helper( context, &program, &kernel, 1, sample_single_test_kernel, "sample_test" ) != 0 )
|
if( create_single_kernel_helper( context, &program, &kernel, 1, sample_single_test_kernel, "sample_test" ) != 0 )
|
||||||
{
|
{
|
||||||
@@ -311,18 +325,20 @@ int test_set_kernel_arg_by_index(cl_device_id deviceID, cl_context context, cl_c
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Create some I/O streams */
|
/* Create some I/O streams */
|
||||||
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE), sizeof(cl_float) * 10, NULL, &error);
|
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE),
|
||||||
|
sizeof(cl_float) * num_elements, NULL, &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE), sizeof(cl_int) * 10, NULL, &error);
|
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE),
|
||||||
|
sizeof(cl_int) * num_elements, NULL, &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
|
|
||||||
/* Write some test data */
|
/* Write some test data */
|
||||||
memset( outputData, 0, sizeof( outputData ) );
|
for (i = 0; i < num_elements; i++)
|
||||||
|
|
||||||
for (i=0; i<10; i++)
|
|
||||||
inputData[i] = get_random_float(-(float) 0x7fffffff, (float) 0x7fffffff, seed);
|
inputData[i] = get_random_float(-(float) 0x7fffffff, (float) 0x7fffffff, seed);
|
||||||
|
|
||||||
error = clEnqueueWriteBuffer(queue, streams[0], CL_TRUE, 0, sizeof(cl_float)*10, (void *)inputData, 0, NULL, NULL);
|
error = clEnqueueWriteBuffer(queue, streams[0], CL_TRUE, 0,
|
||||||
|
sizeof(cl_float) * num_elements,
|
||||||
|
(void *)inputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to set testing kernel data" );
|
test_error( error, "Unable to set testing kernel data" );
|
||||||
|
|
||||||
/* Test setting the arguments by index manually */
|
/* Test setting the arguments by index manually */
|
||||||
@@ -333,7 +349,7 @@ int test_set_kernel_arg_by_index(cl_device_id deviceID, cl_context context, cl_c
|
|||||||
|
|
||||||
|
|
||||||
/* Test running the kernel and verifying it */
|
/* Test running the kernel and verifying it */
|
||||||
threads[0] = (size_t)10;
|
threads[0] = (size_t)num_elements;
|
||||||
|
|
||||||
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
||||||
test_error( error, "Unable to get work group size to use" );
|
test_error( error, "Unable to get work group size to use" );
|
||||||
@@ -341,10 +357,12 @@ int test_set_kernel_arg_by_index(cl_device_id deviceID, cl_context context, cl_c
|
|||||||
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
||||||
test_error( error, "Kernel execution failed" );
|
test_error( error, "Kernel execution failed" );
|
||||||
|
|
||||||
error = clEnqueueReadBuffer( queue, streams[1], CL_TRUE, 0, sizeof(cl_int)*10, (void *)outputData, 0, NULL, NULL );
|
error = clEnqueueReadBuffer(queue, streams[1], CL_TRUE, 0,
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
(void *)outputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to get result data" );
|
test_error( error, "Unable to get result data" );
|
||||||
|
|
||||||
for (i=0; i<10; i++)
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
if (outputData[i] != (int)inputData[i])
|
if (outputData[i] != (int)inputData[i])
|
||||||
{
|
{
|
||||||
@@ -363,16 +381,19 @@ int test_set_kernel_arg_constant(cl_device_id deviceID, cl_context context, cl_c
|
|||||||
clKernelWrapper kernel;
|
clKernelWrapper kernel;
|
||||||
clMemWrapper streams[3];
|
clMemWrapper streams[3];
|
||||||
size_t threads[1], localThreads[1];
|
size_t threads[1], localThreads[1];
|
||||||
cl_int outputData[10];
|
|
||||||
int i;
|
int i;
|
||||||
cl_int randomTestDataA[10], randomTestDataB[10];
|
|
||||||
cl_ulong maxSize;
|
cl_ulong maxSize;
|
||||||
MTdata d;
|
MTdata d;
|
||||||
|
|
||||||
|
num_elements = 10;
|
||||||
|
std::vector<cl_int> outputData(num_elements);
|
||||||
|
std::vector<cl_int> randomTestDataA(num_elements);
|
||||||
|
std::vector<cl_int> randomTestDataB(num_elements);
|
||||||
|
|
||||||
/* Verify our test buffer won't be bigger than allowed */
|
/* Verify our test buffer won't be bigger than allowed */
|
||||||
error = clGetDeviceInfo( deviceID, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, sizeof( maxSize ), &maxSize, 0 );
|
error = clGetDeviceInfo( deviceID, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, sizeof( maxSize ), &maxSize, 0 );
|
||||||
test_error( error, "Unable to get max constant buffer size" );
|
test_error( error, "Unable to get max constant buffer size" );
|
||||||
if( maxSize < sizeof( cl_int ) * 10 )
|
if (maxSize < sizeof(cl_int) * num_elements)
|
||||||
{
|
{
|
||||||
log_error( "ERROR: Unable to test constant argument to kernel: max size of constant buffer is reported as %d!\n", (int)maxSize );
|
log_error( "ERROR: Unable to test constant argument to kernel: max size of constant buffer is reported as %d!\n", (int)maxSize );
|
||||||
return -1;
|
return -1;
|
||||||
@@ -386,18 +407,23 @@ int test_set_kernel_arg_constant(cl_device_id deviceID, cl_context context, cl_c
|
|||||||
|
|
||||||
/* Create some I/O streams */
|
/* Create some I/O streams */
|
||||||
d = init_genrand( gRandomSeed );
|
d = init_genrand( gRandomSeed );
|
||||||
for( i = 0; i < 10; i++ )
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
randomTestDataA[i] = (cl_int)genrand_int32(d) & 0xffffff; /* Make sure values are positive, just so we don't have to */
|
randomTestDataA[i] = (cl_int)genrand_int32(d) & 0xffffff; /* Make sure values are positive, just so we don't have to */
|
||||||
randomTestDataB[i] = (cl_int)genrand_int32(d) & 0xffffff; /* deal with overflow on the verification */
|
randomTestDataB[i] = (cl_int)genrand_int32(d) & 0xffffff; /* deal with overflow on the verification */
|
||||||
}
|
}
|
||||||
free_mtdata(d); d = NULL;
|
free_mtdata(d); d = NULL;
|
||||||
|
|
||||||
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_COPY_HOST_PTR), sizeof(cl_int) * 10, randomTestDataA, &error);
|
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_COPY_HOST_PTR),
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
randomTestDataA.data(), &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_COPY_HOST_PTR), sizeof(cl_int) * 10, randomTestDataB, &error);
|
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_COPY_HOST_PTR),
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
randomTestDataB.data(), &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
streams[2] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE), sizeof(cl_int) * 10, NULL, &error);
|
streams[2] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE),
|
||||||
|
sizeof(cl_int) * num_elements, NULL, &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
|
|
||||||
/* Set the arguments */
|
/* Set the arguments */
|
||||||
@@ -410,7 +436,7 @@ int test_set_kernel_arg_constant(cl_device_id deviceID, cl_context context, cl_c
|
|||||||
|
|
||||||
|
|
||||||
/* Test running the kernel and verifying it */
|
/* Test running the kernel and verifying it */
|
||||||
threads[0] = (size_t)10;
|
threads[0] = (size_t)num_elements;
|
||||||
|
|
||||||
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
||||||
test_error( error, "Unable to get work group size to use" );
|
test_error( error, "Unable to get work group size to use" );
|
||||||
@@ -418,10 +444,12 @@ int test_set_kernel_arg_constant(cl_device_id deviceID, cl_context context, cl_c
|
|||||||
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
||||||
test_error( error, "Kernel execution failed" );
|
test_error( error, "Kernel execution failed" );
|
||||||
|
|
||||||
error = clEnqueueReadBuffer( queue, streams[2], CL_TRUE, 0, sizeof(cl_int)*10, (void *)outputData, 0, NULL, NULL );
|
error = clEnqueueReadBuffer(queue, streams[2], CL_TRUE, 0,
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
(void *)outputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to get result data" );
|
test_error( error, "Unable to get result data" );
|
||||||
|
|
||||||
for (i=0; i<10; i++)
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
if (outputData[i] != randomTestDataA[i] + randomTestDataB[i])
|
if (outputData[i] != randomTestDataA[i] + randomTestDataB[i])
|
||||||
{
|
{
|
||||||
@@ -440,17 +468,19 @@ int test_set_kernel_arg_struct_array(cl_device_id deviceID, cl_context context,
|
|||||||
clKernelWrapper kernel;
|
clKernelWrapper kernel;
|
||||||
clMemWrapper streams[2];
|
clMemWrapper streams[2];
|
||||||
size_t threads[1], localThreads[1];
|
size_t threads[1], localThreads[1];
|
||||||
cl_int outputData[10];
|
|
||||||
int i;
|
int i;
|
||||||
MTdata d;
|
MTdata d;
|
||||||
|
|
||||||
|
num_elements = 10;
|
||||||
|
std::vector<cl_int> outputData(num_elements);
|
||||||
|
|
||||||
typedef struct img_pair_type
|
typedef struct img_pair_type
|
||||||
{
|
{
|
||||||
int A;
|
int A;
|
||||||
int B;
|
int B;
|
||||||
} image_pair_t;
|
} image_pair_t;
|
||||||
|
|
||||||
image_pair_t image_pair[ 10 ];
|
std::vector<image_pair_t> image_pair(num_elements);
|
||||||
|
|
||||||
|
|
||||||
/* Create a kernel to test with */
|
/* Create a kernel to test with */
|
||||||
@@ -461,16 +491,19 @@ int test_set_kernel_arg_struct_array(cl_device_id deviceID, cl_context context,
|
|||||||
|
|
||||||
/* Create some I/O streams */
|
/* Create some I/O streams */
|
||||||
d = init_genrand( gRandomSeed );
|
d = init_genrand( gRandomSeed );
|
||||||
for( i = 0; i < 10; i++ )
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
image_pair[i].A = (cl_int)genrand_int32(d);
|
image_pair[i].A = (cl_int)genrand_int32(d);
|
||||||
image_pair[i].B = (cl_int)genrand_int32(d);
|
image_pair[i].B = (cl_int)genrand_int32(d);
|
||||||
}
|
}
|
||||||
free_mtdata(d); d = NULL;
|
free_mtdata(d); d = NULL;
|
||||||
|
|
||||||
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_COPY_HOST_PTR), sizeof(image_pair_t) * 10, (void *)image_pair, &error);
|
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_COPY_HOST_PTR),
|
||||||
|
sizeof(image_pair_t) * num_elements,
|
||||||
|
(void *)image_pair.data(), &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE), sizeof(cl_int) * 10, NULL, &error);
|
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE),
|
||||||
|
sizeof(cl_int) * num_elements, NULL, &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
|
|
||||||
/* Set the arguments */
|
/* Set the arguments */
|
||||||
@@ -480,7 +513,7 @@ int test_set_kernel_arg_struct_array(cl_device_id deviceID, cl_context context,
|
|||||||
test_error( error, "Unable to set indexed kernel arguments" );
|
test_error( error, "Unable to set indexed kernel arguments" );
|
||||||
|
|
||||||
/* Test running the kernel and verifying it */
|
/* Test running the kernel and verifying it */
|
||||||
threads[0] = (size_t)10;
|
threads[0] = (size_t)num_elements;
|
||||||
|
|
||||||
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
||||||
test_error( error, "Unable to get work group size to use" );
|
test_error( error, "Unable to get work group size to use" );
|
||||||
@@ -488,10 +521,12 @@ int test_set_kernel_arg_struct_array(cl_device_id deviceID, cl_context context,
|
|||||||
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
||||||
test_error( error, "Kernel execution failed" );
|
test_error( error, "Kernel execution failed" );
|
||||||
|
|
||||||
error = clEnqueueReadBuffer( queue, streams[1], CL_TRUE, 0, sizeof(cl_int)*10, (void *)outputData, 0, NULL, NULL );
|
error = clEnqueueReadBuffer(queue, streams[1], CL_TRUE, 0,
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
(void *)outputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to get result data" );
|
test_error( error, "Unable to get result data" );
|
||||||
|
|
||||||
for (i=0; i<10; i++)
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
if (outputData[i] != image_pair[i].A + image_pair[i].B)
|
if (outputData[i] != image_pair[i].A + image_pair[i].B)
|
||||||
{
|
{
|
||||||
@@ -539,11 +574,12 @@ int test_kernel_global_constant(cl_device_id deviceID, cl_context context, cl_co
|
|||||||
clKernelWrapper kernel;
|
clKernelWrapper kernel;
|
||||||
clMemWrapper streams[2];
|
clMemWrapper streams[2];
|
||||||
size_t threads[1], localThreads[1];
|
size_t threads[1], localThreads[1];
|
||||||
cl_int outputData[10];
|
|
||||||
int i;
|
int i;
|
||||||
cl_int randomTestDataA[10];
|
|
||||||
MTdata d;
|
MTdata d;
|
||||||
|
|
||||||
|
num_elements = 10;
|
||||||
|
std::vector<cl_int> outputData(num_elements);
|
||||||
|
std::vector<cl_int> randomTestDataA(num_elements);
|
||||||
|
|
||||||
/* Create a kernel to test with */
|
/* Create a kernel to test with */
|
||||||
if( create_single_kernel_helper( context, &program, &kernel, 1, sample_const_global_test_kernel, "sample_test" ) != 0 )
|
if( create_single_kernel_helper( context, &program, &kernel, 1, sample_const_global_test_kernel, "sample_test" ) != 0 )
|
||||||
@@ -553,15 +589,18 @@ int test_kernel_global_constant(cl_device_id deviceID, cl_context context, cl_co
|
|||||||
|
|
||||||
/* Create some I/O streams */
|
/* Create some I/O streams */
|
||||||
d = init_genrand( gRandomSeed );
|
d = init_genrand( gRandomSeed );
|
||||||
for( i = 0; i < 10; i++ )
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
randomTestDataA[i] = (cl_int)genrand_int32(d) & 0xffff; /* Make sure values are positive and small, just so we don't have to */
|
randomTestDataA[i] = (cl_int)genrand_int32(d) & 0xffff; /* Make sure values are positive and small, just so we don't have to */
|
||||||
}
|
}
|
||||||
free_mtdata(d); d = NULL;
|
free_mtdata(d); d = NULL;
|
||||||
|
|
||||||
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_COPY_HOST_PTR), sizeof(cl_int) * 10, randomTestDataA, &error);
|
streams[0] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_COPY_HOST_PTR),
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
randomTestDataA.data(), &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE), sizeof(cl_int) * 10, NULL, &error);
|
streams[1] = clCreateBuffer(context, (cl_mem_flags)(CL_MEM_READ_WRITE),
|
||||||
|
sizeof(cl_int) * num_elements, NULL, &error);
|
||||||
test_error( error, "Creating test array failed" );
|
test_error( error, "Creating test array failed" );
|
||||||
|
|
||||||
/* Set the arguments */
|
/* Set the arguments */
|
||||||
@@ -572,7 +611,7 @@ int test_kernel_global_constant(cl_device_id deviceID, cl_context context, cl_co
|
|||||||
|
|
||||||
|
|
||||||
/* Test running the kernel and verifying it */
|
/* Test running the kernel and verifying it */
|
||||||
threads[0] = (size_t)10;
|
threads[0] = (size_t)num_elements;
|
||||||
|
|
||||||
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
error = get_max_common_work_group_size( context, kernel, threads[0], &localThreads[0] );
|
||||||
test_error( error, "Unable to get work group size to use" );
|
test_error( error, "Unable to get work group size to use" );
|
||||||
@@ -580,10 +619,12 @@ int test_kernel_global_constant(cl_device_id deviceID, cl_context context, cl_co
|
|||||||
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
error = clEnqueueNDRangeKernel( queue, kernel, 1, NULL, threads, localThreads, 0, NULL, NULL );
|
||||||
test_error( error, "Kernel execution failed" );
|
test_error( error, "Kernel execution failed" );
|
||||||
|
|
||||||
error = clEnqueueReadBuffer( queue, streams[1], CL_TRUE, 0, sizeof(cl_int)*10, (void *)outputData, 0, NULL, NULL );
|
error = clEnqueueReadBuffer(queue, streams[1], CL_TRUE, 0,
|
||||||
|
sizeof(cl_int) * num_elements,
|
||||||
|
(void *)outputData.data(), 0, NULL, NULL);
|
||||||
test_error( error, "Unable to get result data" );
|
test_error( error, "Unable to get result data" );
|
||||||
|
|
||||||
for (i=0; i<10; i++)
|
for (i = 0; i < num_elements; i++)
|
||||||
{
|
{
|
||||||
if (outputData[i] != randomTestDataA[i] + 1024)
|
if (outputData[i] != randomTestDataA[i] + 1024)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user