MCPcopy Create free account
hub / github.com/KhronosGroup/OpenCL-CTS / test_stream_write

Function test_stream_write

test_conformance/profiling/writeArray.cpp:557–767  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

555
556
557int test_stream_write( cl_device_id device, cl_context context, cl_command_queue queue, int num_elements, size_t size, const char *type, int loops,
558 void *inptr[5], const char *kernelCode[], const char *kernelName[], int (*fn)(void *,void *,int), MTdata d )
559{
560 cl_mem streams[10];
561 void *outptr[5];
562 cl_program program[5];
563 cl_kernel kernel[5];
564 cl_event writeEvent;
565 cl_ulong queueStart, submitStart, writeStart, writeEnd;
566 size_t ptrSizes[5], outPtrSizes[5];
567 size_t threads[1];
568 int err, err_count = 0;
569 int i, ii;
570
571 threads[0] = (size_t)num_elements;
572
573 ptrSizes[0] = size;
574 ptrSizes[1] = ptrSizes[0] << 1;
575 ptrSizes[2] = ptrSizes[1] << 1;
576 ptrSizes[3] = ptrSizes[2] << 1;
577 ptrSizes[4] = ptrSizes[3] << 1;
578
579 loops = ( loops < 5 ? loops : 5 );
580
581 for( i = 0; i < loops; i++ )
582 {
583 outPtrSizes[i] = ptrSizes[i];
584 }
585
586 for( i = 0; i < loops; i++ ){
587 ii = i << 1;
588 streams[ii] = clCreateBuffer(context, CL_MEM_READ_WRITE,
589 ptrSizes[i] * num_elements, NULL, &err);
590 if( ! streams[ii] ){
591 free( outptr[i] );
592 log_error( " clCreateBuffer failed\n" );
593 return -1;
594 }
595 if( ! strcmp( type, "half" ) ){
596 outptr[i] = malloc( outPtrSizes[i] * num_elements * 2 );
597 streams[ii + 1] =
598 clCreateBuffer(context, CL_MEM_READ_WRITE,
599 outPtrSizes[i] * 2 * num_elements, NULL, &err);
600 }
601 else{
602 outptr[i] = malloc( outPtrSizes[i] * num_elements );
603 streams[ii + 1] =
604 clCreateBuffer(context, CL_MEM_READ_WRITE,
605 outPtrSizes[i] * num_elements, NULL, &err);
606 }
607 if( ! streams[ii+1] ){
608 clReleaseMemObject(streams[ii]);
609 free( outptr[i] );
610 log_error( " clCreateBuffer failed\n" );
611 return -1;
612 }
613
614 err = clEnqueueWriteBuffer( queue, streams[ii], false, 0, ptrSizes[i]*num_elements, inptr[i], 0, NULL, &writeEvent );

Callers 1

REGISTER_TESTFunction · 0.85

Calls 2

check_timesFunction · 0.85

Tested by

no test coverage detected