From c8c4d15bcb0ef2a6fa51596604d08fcc071c669e Mon Sep 17 00:00:00 2001 From: Garima Gupta Date: Thu, 24 Oct 2019 18:34:30 -0700 Subject: [PATCH 1/4] [SYCL] Changing all PI APIs to the standard format of returning pi_result. Signed-off-by: Garima Gupta --- sycl/doc/SYCLPluginInterface.md | 6 +- sycl/include/CL/sycl/detail/pi.h | 58 +++--- sycl/include/CL/sycl/detail/program_impl.hpp | 17 +- sycl/plugins/opencl/pi_opencl.cpp | 183 +++++++++++++++--- sycl/source/detail/context_impl.cpp | 6 +- sycl/source/detail/memory_manager.cpp | 23 +-- .../program_manager/program_manager.cpp | 9 +- sycl/source/detail/scheduler/commands.cpp | 5 +- .../source/detail/scheduler/graph_builder.cpp | 4 +- sycl/test/regression/image_access.cpp | 2 +- sycl/test/regression/memcpy-update-leafs.cpp | 2 +- sycl/test/scheduler/ReleaseResourcesTest.cpp | 4 +- 12 files changed, 217 insertions(+), 102 deletions(-) diff --git a/sycl/doc/SYCLPluginInterface.md b/sycl/doc/SYCLPluginInterface.md index 15084cf4c8ccd..8b0264a2d3e13 100644 --- a/sycl/doc/SYCLPluginInterface.md +++ b/sycl/doc/SYCLPluginInterface.md @@ -120,12 +120,12 @@ These APIs match semantics of the corresponding OpenCL APIs exactly. For example: ``` -pi_program piclProgramCreateWithSource( +pi_result piclProgramCreateWithSource( pi_context context, pi_uint32 count, const char ** strings, const size_t * lengths, - pi_result * errcode); + pi_program * ret_program); ``` ### PI Extension mechanism @@ -133,4 +133,4 @@ pi_program piclProgramCreateWithSource( TBD This section describes a mechanism for SYCL or other runtimes to detect availability of and obtain interfaces beyond those defined by the PI dispatch. -TBD Add API to query PI version supported by plugin at runtime. \ No newline at end of file +TBD Add API to query PI version supported by plugin at runtime. diff --git a/sycl/include/CL/sycl/detail/pi.h b/sycl/include/CL/sycl/detail/pi.h index 940b898b66c45..4b2c1cda0bd0d 100644 --- a/sycl/include/CL/sycl/detail/pi.h +++ b/sycl/include/CL/sycl/detail/pi.h @@ -446,7 +446,7 @@ pi_result piextGetDeviceFunctionPointer( // // Context // -pi_context piContextCreate( // TODO: change interface to return error code instead +pi_result piContextCreate( const cl_context_properties * properties, // TODO: untie from OpenCL pi_uint32 num_devices, const pi_device * devices, @@ -456,7 +456,7 @@ pi_context piContextCreate( // TODO: change interface to return error code inste size_t cb, void * user_data), void * user_data, - pi_result * result); + pi_context * retcontext); pi_result piContextGetInfo( pi_context context, @@ -494,20 +494,20 @@ pi_result piQueueFinish(pi_queue command_queue); // // Memory // -pi_mem piMemBufferCreate( // TODO: change interface to return error code +pi_result piMemBufferCreate( pi_context context, pi_mem_flags flags, size_t size, void * host_ptr, - pi_result * errcode_ret); + pi_mem * ret_mem); -pi_mem piMemImageCreate( // TODO: change interface to return error code +pi_result piMemImageCreate( pi_context context, pi_mem_flags flags, const pi_image_format * image_format, const pi_image_desc * image_desc, void * host_ptr, - pi_result * errcode_ret); + pi_mem * ret_mem); pi_result piMemGetInfo( pi_mem mem, @@ -529,10 +529,12 @@ pi_result piMemRetain( pi_result piMemRelease( pi_mem mem); -pi_mem piMemBufferPartition( // TODO: change interface to return error code - pi_mem context, pi_mem_flags flags, - pi_buffer_create_type buffer_create_type, void *buffer_create_info, - pi_result *errcode_ret); +pi_result piMemBufferPartition( + pi_mem buffer, + pi_mem_flags flags, + pi_buffer_create_type buffer_create_type, + void * buffer_create_info, + pi_mem * ret_mem); // // Program // @@ -542,21 +544,21 @@ pi_result piProgramCreate( size_t length, pi_program * res_program); -pi_program piclProgramCreateWithBinary( // TODO: change to return pi_result +pi_result piclProgramCreateWithSource( + pi_context context, + pi_uint32 count, + const char ** strings, + const size_t * lengths, + pi_program * ret_program); + +pi_result piclProgramCreateWithBinary( pi_context context, pi_uint32 num_devices, const pi_device * device_list, const size_t * lengths, const unsigned char ** binaries, pi_int32 * binary_status, - pi_result * errcode_ret); - -pi_program piclProgramCreateWithSource( // TODO: change to return pi_result - pi_context context, - pi_uint32 count, - const char ** strings, - const size_t * lengths, - pi_result * errcode); + pi_program * ret_program); pi_result piProgramGetInfo( pi_program program, @@ -565,7 +567,7 @@ pi_result piProgramGetInfo( void * param_value, size_t * param_value_size_ret); -pi_program piProgramLink( // TODO: change interface to return error code +pi_result piProgramLink( pi_context context, pi_uint32 num_devices, const pi_device * device_list, @@ -575,7 +577,7 @@ pi_program piProgramLink( // TODO: change interface to return error code void (* pfn_notify)(pi_program program, void * user_data), void * user_data, - pi_result * errcode_ret); + pi_program * ret_program); pi_result piProgramCompile( pi_program program, @@ -611,10 +613,10 @@ pi_result piProgramRelease(pi_program program); // // Kernel // -pi_kernel piKernelCreate( // TODO: change interface to return error code +pi_result piKernelCreate( pi_program program, const char * kernel_name, - pi_result * errcode_ret); + pi_kernel * ret_kernel); pi_result piKernelSetArg( pi_kernel kernel, @@ -654,9 +656,9 @@ pi_result piKernelRelease(pi_kernel kernel); // // Events // -pi_event piEventCreate( // TODO: change to return pi_result +pi_result piEventCreate( pi_context context, - pi_result * errcode_ret); + pi_event * ret_event); pi_result piEventGetInfo( pi_event event, @@ -860,7 +862,7 @@ pi_result piEnqueueMemImageWrite( const pi_event * event_wait_list, pi_event * event); - pi_result piEnqueueMemImageCopy( +pi_result piEnqueueMemImageCopy( pi_queue command_queue, pi_mem src_image, pi_mem dst_image, @@ -881,7 +883,7 @@ pi_result piEnqueueMemImageFill( const pi_event * event_wait_list, pi_event * event); -void * piEnqueueMemBufferMap( // TODO: change to return pi_result +pi_result piEnqueueMemBufferMap( pi_queue command_queue, pi_mem buffer, pi_bool blocking_map, @@ -891,7 +893,7 @@ void * piEnqueueMemBufferMap( // TODO: change to return pi_result pi_uint32 num_events_in_wait_list, const pi_event * event_wait_list, pi_event * event, - pi_result * errcode_ret); + void* * ret_map); pi_result piEnqueueMemUnmap( pi_queue command_queue, diff --git a/sycl/include/CL/sycl/detail/program_impl.hpp b/sycl/include/CL/sycl/detail/program_impl.hpp index 5aba71504c3b8..62c402b450a31 100644 --- a/sycl/include/CL/sycl/detail/program_impl.hpp +++ b/sycl/include/CL/sycl/detail/program_impl.hpp @@ -85,11 +85,11 @@ class program_impl { Programs.push_back(Prg->Program); } RT::PiResult Err = PI_SUCCESS; - PI_CALL_RESULT((Program = RT::piProgramLink( + Err = PI_CALL_RESULT(RT::piProgramLink( detail::getSyclObjImpl(Context)->getHandleRef(), Devices.size(), Devices.data(), LinkOptions.c_str(), Programs.size(), - Programs.data(), nullptr, nullptr, &Err), Err)); + Programs.data(), nullptr, nullptr, &Program)); PI_CHECK_THROW(Err, compile_program_error); } } @@ -231,10 +231,10 @@ class program_impl { info::device::is_linker_available>(Devices); vector_class Devices(get_pi_devices()); RT::PiResult Err; - PI_CALL_RESULT((Program = RT::piProgramLink( + Err = PI_CALL_RESULT(RT::piProgramLink( detail::getSyclObjImpl(Context)->getHandleRef(), Devices.size(), Devices.data(), LinkOptions.c_str(), - 1, &Program, nullptr, nullptr, &Err), Err)); + 1, &Program, nullptr, nullptr, &Program)); PI_CHECK_THROW(Err, compile_program_error); this->LinkOptions = LinkOptions; BuildOptions = LinkOptions; @@ -348,12 +348,11 @@ class program_impl { void create_cl_program_with_source(const string_class &Source) { assert(!Program && "This program already has an encapsulated cl_program"); - RT::PiResult Err; const char *Src = Source.c_str(); size_t Size = Source.size(); - PI_CALL((Program = RT::piclProgramCreateWithSource( + PI_CALL(RT::piclProgramCreateWithSource( detail::getSyclObjImpl(Context)->getHandleRef(), - 1, &Src, &Size, &Err), Err)); + 1, &Src, &Size, &Program)); } void compile(const string_class &Options) { @@ -416,8 +415,8 @@ class program_impl { RT::PiKernel get_pi_kernel(const string_class &KernelName) const { RT::PiKernel Kernel; RT::PiResult Err; - Err = PI_CALL_RESULT((Kernel = RT::piKernelCreate( - Program, KernelName.c_str(), &Err), Err)); + Err = PI_CALL_RESULT( + RT::piKernelCreate(Program, KernelName.c_str(), &Kernel)); if (Err == PI_RESULT_INVALID_KERNEL_NAME) { throw invalid_object_error( "This instance of program does not contain the kernel requested"); diff --git a/sycl/plugins/opencl/pi_opencl.cpp b/sycl/plugins/opencl/pi_opencl.cpp index 0b9252d560798..b775e705392ad 100755 --- a/sycl/plugins/opencl/pi_opencl.cpp +++ b/sycl/plugins/opencl/pi_opencl.cpp @@ -323,6 +323,133 @@ pi_result OCL(piextGetDeviceFunctionPointer)(pi_device device, function_pointer_ret)); } +pi_result OCL(piContextCreate)( + const cl_context_properties *properties, // TODO: untie from OpenCL + pi_uint32 num_devices, const pi_device *devices, + void (*pfn_notify)(const char *errinfo, const void *private_info, size_t cb, + void *user_data1), + void *user_data, pi_context *retcontext) { + pi_result ret = PI_INVALID_OPERATION; + *retcontext = cast(clCreateContext( + properties, cast(num_devices), cast(devices), + pfn_notify, user_data, cast(&ret))); + + return ret; +} + +pi_result OCL(piMemBufferCreate)(pi_context context, pi_mem_flags flags, + size_t size, void *host_ptr, pi_mem *ret_mem) { + pi_result ret_err = PI_INVALID_OPERATION; + *ret_mem = cast(clCreateBuffer(cast(context), + cast(flags), size, + host_ptr, cast(&ret_err))); + + return ret_err; +} + +pi_result OCL(piMemImageCreate)(pi_context context, pi_mem_flags flags, + const pi_image_format *image_format, + const pi_image_desc *image_desc, void *host_ptr, + pi_mem *ret_mem) { + pi_result ret_err = PI_INVALID_OPERATION; + *ret_mem = cast( + clCreateImage(cast(context), cast(flags), + cast(image_format), + cast(image_desc), host_ptr, + cast(&ret_err))); + + return ret_err; +} + +pi_result OCL(piMemBufferPartition)(pi_mem buffer, pi_mem_flags flags, + pi_buffer_create_type buffer_create_type, + void *buffer_create_info, pi_mem *ret_mem) { + + pi_result ret_err = PI_INVALID_OPERATION; + *ret_mem = cast( + clCreateSubBuffer(cast(buffer), cast(flags), + cast(buffer_create_type), + buffer_create_info, cast(&ret_err))); + return ret_err; +} + +pi_result OCL(piclProgramCreateWithSource)(pi_context context, pi_uint32 count, + const char **strings, + const size_t *lengths, + pi_program *ret_program) { + + pi_result ret_err = PI_INVALID_OPERATION; + *ret_program = cast( + clCreateProgramWithSource(cast(context), cast(count), + strings, lengths, cast(&ret_err))); + return ret_err; +} + +pi_result OCL(piclProgramCreateWithBinary)( + pi_context context, pi_uint32 num_devices, const pi_device *device_list, + const size_t *lengths, const unsigned char **binaries, + pi_int32 *binary_status, pi_program *ret_program) { + + pi_result ret_err = PI_INVALID_OPERATION; + *ret_program = cast(clCreateProgramWithBinary( + cast(context), cast(num_devices), + cast(device_list), lengths, binaries, + cast(binary_status), cast(&ret_err))); + return ret_err; +} + +pi_result OCL(piProgramLink)(pi_context context, pi_uint32 num_devices, + const pi_device *device_list, const char *options, + pi_uint32 num_input_programs, + const pi_program *input_programs, + void (*pfn_notify)(pi_program program, + void *user_data), + void *user_data, pi_program *ret_program) { + + pi_result ret_err = PI_INVALID_OPERATION; + *ret_program = cast( + clLinkProgram(cast(context), cast(num_devices), + cast(device_list), options, + cast(num_input_programs), + cast(input_programs), + cast(pfn_notify), user_data, + cast(&ret_err))); + return ret_err; +} + +pi_result OCL(piKernelCreate)(pi_program program, const char *kernel_name, + pi_kernel *ret_kernel) { + + pi_result ret_err = PI_INVALID_OPERATION; + *ret_kernel = cast(clCreateKernel( + cast(program), kernel_name, cast(&ret_err))); + return ret_err; +} + +pi_result OCL(piEventCreate)(pi_context context, pi_event *ret_event) { + + pi_result ret_err = PI_INVALID_OPERATION; + *ret_event = cast( + clCreateUserEvent(cast(context), cast(&ret_err))); + return ret_err; +} + +pi_result OCL(piEnqueueMemBufferMap)( + pi_queue command_queue, pi_mem buffer, pi_bool blocking_map, + cl_map_flags map_flags, // TODO: untie from OpenCL + size_t offset, size_t size, pi_uint32 num_events_in_wait_list, + const pi_event *event_wait_list, pi_event *event, void **ret_map) { + + pi_result ret_err = PI_INVALID_OPERATION; + *ret_map = cast(clEnqueueMapBuffer( + cast(command_queue), cast(buffer), + cast(blocking_map), map_flags, offset, size, + cast(num_events_in_wait_list), + cast(event_wait_list), cast(event), + cast(&ret_err))); + return ret_err; +} + // TODO: Remove the 'OclPtr' extension used with the PI_APIs. // Forward calls to OpenCL RT. #define _PI_CL(pi_api, ocl_api) \ @@ -340,10 +467,10 @@ _PI_CL(piDeviceRelease, clReleaseDevice) _PI_CL(piextDeviceSelectBinary, OCL(piextDeviceSelectBinary)) _PI_CL(piextGetDeviceFunctionPointer, OCL(piextGetDeviceFunctionPointer)) // Context -_PI_CL(piContextCreate, clCreateContext) -_PI_CL(piContextGetInfo, clGetContextInfo) -_PI_CL(piContextRetain, clRetainContext) -_PI_CL(piContextRelease, clReleaseContext) +_PI_CL(piContextCreate, OCL(piContextCreate)) +_PI_CL(piContextGetInfo, clGetContextInfo) +_PI_CL(piContextRetain, clRetainContext) +_PI_CL(piContextRelease, clReleaseContext) // Queue _PI_CL(piQueueCreate, OCL(piQueueCreate)) _PI_CL(piQueueGetInfo, clGetCommandQueueInfo) @@ -351,35 +478,35 @@ _PI_CL(piQueueFinish, clFinish) _PI_CL(piQueueRetain, clRetainCommandQueue) _PI_CL(piQueueRelease, clReleaseCommandQueue) // Memory -_PI_CL(piMemBufferCreate, clCreateBuffer) -_PI_CL(piMemImageCreate, clCreateImage) -_PI_CL(piMemGetInfo, clGetMemObjectInfo) -_PI_CL(piMemImageGetInfo, clGetImageInfo) -_PI_CL(piMemRetain, clRetainMemObject) -_PI_CL(piMemRelease, clReleaseMemObject) -_PI_CL(piMemBufferPartition, clCreateSubBuffer) +_PI_CL(piMemBufferCreate, OCL(piMemBufferCreate)) +_PI_CL(piMemImageCreate, OCL(piMemImageCreate)) +_PI_CL(piMemGetInfo, clGetMemObjectInfo) +_PI_CL(piMemImageGetInfo, clGetImageInfo) +_PI_CL(piMemRetain, clRetainMemObject) +_PI_CL(piMemRelease, clReleaseMemObject) +_PI_CL(piMemBufferPartition, OCL(piMemBufferPartition)) // Program -_PI_CL(piProgramCreate, OCL(piProgramCreate)) -_PI_CL(piclProgramCreateWithSource, clCreateProgramWithSource) -_PI_CL(piclProgramCreateWithBinary, clCreateProgramWithBinary) -_PI_CL(piProgramGetInfo, clGetProgramInfo) -_PI_CL(piProgramCompile, clCompileProgram) -_PI_CL(piProgramBuild, clBuildProgram) -_PI_CL(piProgramLink, clLinkProgram) -_PI_CL(piProgramGetBuildInfo, clGetProgramBuildInfo) -_PI_CL(piProgramRetain, clRetainProgram) -_PI_CL(piProgramRelease, clReleaseProgram) +_PI_CL(piProgramCreate, OCL(piProgramCreate)) +_PI_CL(piclProgramCreateWithSource, OCL(piclProgramCreateWithSource)) +_PI_CL(piclProgramCreateWithBinary, OCL(piclProgramCreateWithBinary)) +_PI_CL(piProgramGetInfo, clGetProgramInfo) +_PI_CL(piProgramCompile, clCompileProgram) +_PI_CL(piProgramBuild, clBuildProgram) +_PI_CL(piProgramLink, OCL(piProgramLink)) +_PI_CL(piProgramGetBuildInfo, clGetProgramBuildInfo) +_PI_CL(piProgramRetain, clRetainProgram) +_PI_CL(piProgramRelease, clReleaseProgram) // Kernel -_PI_CL(piKernelCreate, clCreateKernel) -_PI_CL(piKernelSetArg, clSetKernelArg) -_PI_CL(piKernelGetInfo, clGetKernelInfo) -_PI_CL(piKernelGetGroupInfo, clGetKernelWorkGroupInfo) +_PI_CL(piKernelCreate, OCL(piKernelCreate)) +_PI_CL(piKernelSetArg, clSetKernelArg) +_PI_CL(piKernelGetInfo, clGetKernelInfo) +_PI_CL(piKernelGetGroupInfo, clGetKernelWorkGroupInfo) _PI_CL(piKernelGetSubGroupInfo, clGetKernelSubGroupInfo) _PI_CL(piKernelRetain, clRetainKernel) _PI_CL(piKernelRelease, clReleaseKernel) // Event -_PI_CL(piEventCreate, clCreateUserEvent) -_PI_CL(piEventGetInfo, clGetEventInfo) +_PI_CL(piEventCreate, OCL(piEventCreate)) +_PI_CL(piEventGetInfo, clGetEventInfo) _PI_CL(piEventGetProfilingInfo, clGetEventProfilingInfo) _PI_CL(piEventsWait, clWaitForEvents) _PI_CL(piEventSetCallback, clSetEventCallback) @@ -406,7 +533,7 @@ _PI_CL(piEnqueueMemImageRead, clEnqueueReadImage) _PI_CL(piEnqueueMemImageWrite, clEnqueueWriteImage) _PI_CL(piEnqueueMemImageCopy, clEnqueueCopyImage) _PI_CL(piEnqueueMemImageFill, clEnqueueFillImage) -_PI_CL(piEnqueueMemBufferMap, clEnqueueMapBuffer) +_PI_CL(piEnqueueMemBufferMap, OCL(piEnqueueMemBufferMap)) _PI_CL(piEnqueueMemUnmap, clEnqueueUnmapMemObject) #undef _PI_CL diff --git a/sycl/source/detail/context_impl.cpp b/sycl/source/detail/context_impl.cpp index 9c0d880cac5c0..6ca89a0bc132d 100644 --- a/sycl/source/detail/context_impl.cpp +++ b/sycl/source/detail/context_impl.cpp @@ -35,10 +35,8 @@ context_impl::context_impl(const vector_class Devices, DeviceIds.push_back(getSyclObjImpl(D)->getHandleRef()); } - RT::PiResult Err; - PI_CALL((m_Context = - RT::piContextCreate(0, DeviceIds.size(), DeviceIds.data(), 0, 0, &Err), - Err)); + PI_CALL( + RT::piContextCreate(0, DeviceIds.size(), DeviceIds.data(), 0, 0, &m_Context)); m_USMDispatch.reset(new usm::USMDispatcher(m_Platform.get(), DeviceIds)); } diff --git a/sycl/source/detail/memory_manager.cpp b/sycl/source/detail/memory_manager.cpp index ddee46f0a9d26..b85ea76ba033a 100644 --- a/sycl/source/detail/memory_manager.cpp +++ b/sycl/source/detail/memory_manager.cpp @@ -106,12 +106,10 @@ void *MemoryManager::allocateImageObject(ContextImplPtr TargetContext, HostPtrReadOnly ? PI_MEM_FLAGS_HOST_PTR_COPY : PI_MEM_FLAGS_HOST_PTR_USE; - RT::PiResult Error = PI_SUCCESS; RT::PiMem NewMem; - PI_CALL((NewMem = RT::piMemImageCreate(TargetContext->getHandleRef(), + PI_CALL(RT::piMemImageCreate(TargetContext->getHandleRef(), CreationFlags, &Format, &Desc, UserPtr, - &Error), - Error)); + &NewMem)); return NewMem; } @@ -125,10 +123,9 @@ void *MemoryManager::allocateBufferObject(ContextImplPtr TargetContext, HostPtrReadOnly ? PI_MEM_FLAGS_HOST_PTR_COPY : PI_MEM_FLAGS_HOST_PTR_USE; - RT::PiResult Error = PI_SUCCESS; RT::PiMem NewMem; - PI_CALL((NewMem = RT::piMemBufferCreate( - TargetContext->getHandleRef(), CreationFlags, Size, UserPtr, &Error), Error)); + PI_CALL(RT::piMemBufferCreate( + TargetContext->getHandleRef(), CreationFlags, Size, UserPtr, &NewMem)); return NewMem; } @@ -179,10 +176,9 @@ void *MemoryManager::allocateMemSubBuffer(ContextImplPtr TargetContext, // TODO replace with pi_buffer_region cl_buffer_region Region{Offset, SizeInBytes}; RT::PiMem NewMem; - PI_CALL_RESULT((NewMem = RT::piMemBufferPartition( - pi::cast(ParentMemObj), PI_MEM_FLAGS_ACCESS_RW, - PI_BUFFER_CREATE_TYPE_REGION, &Region, &Error), - Error)); + Error = PI_CALL_RESULT(RT::piMemBufferPartition( + pi::cast(ParentMemObj), PI_MEM_FLAGS_ACCESS_RW, + PI_BUFFER_CREATE_TYPE_REGION, &Region, &NewMem)); if (Error == PI_MISALIGNED_SUB_BUFFER_OFFSET) throw invalid_object_error( "Specified offset of the sub-buffer being constructed is not a " @@ -454,12 +450,11 @@ void *MemoryManager::map(SYCLMemObjI *SYCLMemObj, void *Mem, QueueImplPtr Queue, AccessOffset[0] *= ElementSize; AccessRange[0] *= ElementSize; - RT::PiResult Error = PI_SUCCESS; void *MappedPtr; - PI_CALL((MappedPtr = RT::piEnqueueMemBufferMap( + PI_CALL(RT::piEnqueueMemBufferMap( Queue->getHandleRef(), pi::cast(Mem), CL_FALSE, Flags, AccessOffset[0], AccessRange[0], DepEvents.size(), - DepEvents.empty() ? nullptr : &DepEvents[0], &OutEvent, &Error), Error)); + DepEvents.empty() ? nullptr : &DepEvents[0], &OutEvent, &MappedPtr)); return MappedPtr; } diff --git a/sycl/source/detail/program_manager/program_manager.cpp b/sycl/source/detail/program_manager/program_manager.cpp index b0b1c7f5da805..aadc99666b634 100644 --- a/sycl/source/detail/program_manager/program_manager.cpp +++ b/sycl/source/detail/program_manager/program_manager.cpp @@ -68,12 +68,11 @@ static RT::PiProgram createBinaryProgram(const RT::PiContext Context, #endif RT::PiDevice Device = getFirstDevice(Context); - RT::PiResult Err = PI_SUCCESS; pi_int32 BinaryStatus = CL_SUCCESS; RT::PiProgram Program; - PI_CALL((Program = RT::piclProgramCreateWithBinary( + PI_CALL(RT::piclProgramCreateWithBinary( Context, 1 /*one binary*/, &Device, - &DataLen, &Data, &BinaryStatus, &Err), Err)); + &DataLen, &Data, &BinaryStatus, &Program)); return Program; } @@ -120,9 +119,7 @@ RT::PiKernel ProgramManager::getOrCreateKernel(OSModuleHandle M, std::map &KernelsCache = CachedKernels[Program]; RT::PiKernel &Kernel = KernelsCache[KernelName]; if (!Kernel) { - RT::PiResult Err = PI_SUCCESS; - PI_CALL((Kernel = RT::piKernelCreate( - Program, KernelName.c_str(), &Err), Err)); + PI_CALL(RT::piKernelCreate(Program, KernelName.c_str(), &Kernel)); } return Kernel; } diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index f1e2a878f4375..c85a28f84c773 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -101,14 +101,13 @@ std::vector Command::prepareEvents(ContextImplPtr Context) { // If contexts don't match - connect them using user event if (EventContext != Context && !Context->is_host()) { - RT::PiResult Error = PI_SUCCESS; EventImplPtr GlueEvent(new detail::event_impl()); GlueEvent->setContextImpl(Context); RT::PiEvent &GlueEventHandle = GlueEvent->getHandleRef(); - PI_CALL((GlueEventHandle = RT::piEventCreate( - Context->getHandleRef(), &Error), Error)); + PI_CALL(RT::piEventCreate( + Context->getHandleRef(), &GlueEventHandle)); PI_CALL(RT::piEventSetCallback( Event->getHandleRef(), CL_COMPLETE, EventCompletionClbk, /*data=*/GlueEventHandle)); diff --git a/sycl/source/detail/scheduler/graph_builder.cpp b/sycl/source/detail/scheduler/graph_builder.cpp index 9f50caf945e74..cb9030167159f 100644 --- a/sycl/source/detail/scheduler/graph_builder.cpp +++ b/sycl/source/detail/scheduler/graph_builder.cpp @@ -303,9 +303,7 @@ Command *Scheduler::GraphBuilder::addHostAccessor(Requirement *Req, Req->BlockingEvent.reset(new detail::event_impl()); Req->BlockingEvent->setContextImpl(SrcContext); RT::PiEvent &Event = Req->BlockingEvent->getHandleRef(); - RT::PiResult Error = PI_SUCCESS; - PI_CALL((Event = RT::piEventCreate( - SrcContext->getHandleRef(), &Error), Error)); + PI_CALL(RT::piEventCreate(SrcContext->getHandleRef(), &Event)); // In case of memory is 1 dimensional and located on OpenCL device we // can use map/unmap operation. diff --git a/sycl/test/regression/image_access.cpp b/sycl/test/regression/image_access.cpp index 1dc99ad60e732..3179cfc63e2b3 100644 --- a/sycl/test/regression/image_access.cpp +++ b/sycl/test/regression/image_access.cpp @@ -42,5 +42,5 @@ int main() { return 0; } -// CHECK: PI ---> (NewMem = RT::piMemImageCreate(TargetContext->getHandleRef(), CreationFlags, &Format, &Desc, UserPtr, &Error), Error) +// CHECK: PI ---> RT::piMemImageCreate(TargetContext->getHandleRef(), CreationFlags, &Format, &Desc, UserPtr, &NewMem) // CHECK: PI ---> RT::piEnqueueMemImageRead( Queue, SrcMem, CL_FALSE, &SrcOffset[0], &SrcAccessRange[0], RowPitch, SlicePitch, DstMem, DepEvents.size(), &DepEvents[0], &OutEvent) diff --git a/sycl/test/regression/memcpy-update-leafs.cpp b/sycl/test/regression/memcpy-update-leafs.cpp index c73134dd02a0a..ef427cca4be9c 100644 --- a/sycl/test/regression/memcpy-update-leafs.cpp +++ b/sycl/test/regression/memcpy-update-leafs.cpp @@ -40,5 +40,5 @@ int main() { // CHECK: PI ---> RT::piEnqueueMemBufferWrite( Queue, DstMem, CL_FALSE, DstOffset[0], DstAccessRange[0], SrcMem + SrcOffset[0], DepEvents.size(), &DepEvents[0], &OutEvent) // CHECK-NOT: PI ---> RT::piEnqueueMemBufferWrite( Queue, DstMem, CL_FALSE, DstOffset[0], DstAccessRange[0], SrcMem + SrcOffset[0], DepEvents.size(), &DepEvents[0], &OutEvent) -// CHECK-NOT: PI ---> (MappedPtr = RT::piEnqueueMemBufferMap( Queue->getHandleRef(), pi::cast(Mem), CL_FALSE, Flags, AccessOffset[0], AccessRange[0], DepEvents.size(), DepEvents.empty() ? nullptr : &DepEvents[0], &OutEvent, &Error), Error) +// CHECK-NOT: PI ---> RT::piEnqueueMemBufferMap( Queue->getHandleRef(), pi::cast(Mem), CL_FALSE, Flags, AccessOffset[0], AccessRange[0], DepEvents.size(), DepEvents.empty() ? nullptr : &DepEvents[0], &OutEvent, &MappedPtr) // CHECK-NOT: PI ---> RT::piEnqueueMemUnmap( UseExclusiveQueue ? Queue->getExclusiveQueueHandleRef() : Queue->getHandleRef(), pi::cast(Mem), MappedPtr, DepEvents.size(), DepEvents.empty() ? nullptr : &DepEvents[0], &OutEvent) diff --git a/sycl/test/scheduler/ReleaseResourcesTest.cpp b/sycl/test/scheduler/ReleaseResourcesTest.cpp index d6676eaf11642..eea12686d5a41 100644 --- a/sycl/test/scheduler/ReleaseResourcesTest.cpp +++ b/sycl/test/scheduler/ReleaseResourcesTest.cpp @@ -48,10 +48,10 @@ int main() { return Failed; } -// CHECK: PI ---> (m_Context = RT::piContextCreate(0, DeviceIds.size(), DeviceIds.data(), 0, 0, &Err), Err) +// CHECK: PI ---> RT::piContextCreate(0, DeviceIds.size(), DeviceIds.data(), 0, 0, &m_Context) // CHECK: PI ---> RT::piQueueCreate(Context, Device, CreationFlags, &Queue) // CHECK: PI ---> pi::piProgramCreate(Context, Data, DataLen, &Program) -// CHECK: PI ---> (Kernel = RT::piKernelCreate( Program, KernelName.c_str(), &Err), Err) +// CHECK: PI ---> RT::piKernelCreate(Program, KernelName.c_str(), &Kernel) // CHECK: PI ---> RT::piQueueRelease(m_CommandQueue) // CHECK: PI ---> RT::piContextRelease(m_Context) // CHECK: PI ---> RT::piKernelRelease(KernIt.second) From 3f5c662798c0d1ed4bccf1792ccb847993223f4c Mon Sep 17 00:00:00 2001 From: Garima Gupta Date: Mon, 11 Nov 2019 15:59:03 -0800 Subject: [PATCH 2/4] [SYCL] Formatting and suggested changes. Signed-off-by: Garima Gupta --- sycl/include/CL/sycl/detail/pi.h | 18 +++---- sycl/plugins/opencl/pi_opencl.cpp | 80 ++++++++++++++++--------------- 2 files changed, 50 insertions(+), 48 deletions(-) diff --git a/sycl/include/CL/sycl/detail/pi.h b/sycl/include/CL/sycl/detail/pi.h index 4b2c1cda0bd0d..c96764bb1266d 100644 --- a/sycl/include/CL/sycl/detail/pi.h +++ b/sycl/include/CL/sycl/detail/pi.h @@ -448,15 +448,15 @@ pi_result piextGetDeviceFunctionPointer( // pi_result piContextCreate( const cl_context_properties * properties, // TODO: untie from OpenCL - pi_uint32 num_devices, - const pi_device * devices, - void (* pfn_notify)( - const char * errinfo, - const void * private_info, - size_t cb, - void * user_data), - void * user_data, - pi_context * retcontext); + pi_uint32 num_devices, + const pi_device * devices, + void (*pfn_notify)( + const char * errinfo, + const void * private_info, + size_t cb, + void * user_data), + void * user_data, + pi_context * ret_context); pi_result piContextGetInfo( pi_context context, diff --git a/sycl/plugins/opencl/pi_opencl.cpp b/sycl/plugins/opencl/pi_opencl.cpp index b775e705392ad..e433a789a7026 100755 --- a/sycl/plugins/opencl/pi_opencl.cpp +++ b/sycl/plugins/opencl/pi_opencl.cpp @@ -88,19 +88,20 @@ pi_result OCL(piextDeviceSelectBinary)( const char *image_target = nullptr; // Get the type of the device cl_device_type device_type; - cl_int ret_err = clGetDeviceInfo(cast(device), CL_DEVICE_TYPE, - sizeof(cl_device_type), &device_type, nullptr); + cl_int ret_err = + clGetDeviceInfo(cast(device), CL_DEVICE_TYPE, + sizeof(cl_device_type), &device_type, nullptr); if (ret_err != CL_SUCCESS) { *selected_image = nullptr; return cast(ret_err); } switch (device_type) { - // TODO: Factor out vendor specifics into a separate source - // E.g. sycl/source/detail/vendor/intel/detail/pi_opencl.cpp? + // TODO: Factor out vendor specifics into a separate source + // E.g. sycl/source/detail/vendor/intel/detail/pi_opencl.cpp? - // We'll attempt to find an image that was AOT-compiled - // from a SPIR-V image into an image specific for: + // We'll attempt to find an image that was AOT-compiled + // from a SPIR-V image into an image specific for: case CL_DEVICE_TYPE_CPU: // OpenCL 64-bit CPU image_target = PI_DEVICE_BINARY_TARGET_SPIRV64_X86_64; @@ -181,8 +182,8 @@ pi_result OCL(piProgramCreate)(pi_context context, const void *il, size_t deviceCount; - cl_int ret_err = clGetContextInfo(cast(context), - CL_CONTEXT_DEVICES, 0, nullptr, &deviceCount); + cl_int ret_err = clGetContextInfo( + cast(context), CL_CONTEXT_DEVICES, 0, nullptr, &deviceCount); std::vector devicesInCtx(deviceCount); @@ -205,8 +206,8 @@ pi_result OCL(piProgramCreate)(pi_context context, const void *il, CHECK_ERR_SET_NULL_RET(ret_err, res_program, CL_INVALID_CONTEXT); size_t devVerSize; - ret_err = - clGetPlatformInfo(curPlatform, CL_PLATFORM_VERSION, 0, nullptr, &devVerSize); + ret_err = clGetPlatformInfo(curPlatform, CL_PLATFORM_VERSION, 0, nullptr, + &devVerSize); std::string devVer(devVerSize, '\0'); ret_err = clGetPlatformInfo(curPlatform, CL_PLATFORM_VERSION, devVerSize, &devVer.front(), nullptr); @@ -225,8 +226,8 @@ pi_result OCL(piProgramCreate)(pi_context context, const void *il, } size_t extSize; - ret_err = - clGetPlatformInfo(curPlatform, CL_PLATFORM_EXTENSIONS, 0, nullptr, &extSize); + ret_err = clGetPlatformInfo(curPlatform, CL_PLATFORM_EXTENSIONS, 0, nullptr, + &extSize); std::string extStr(extSize, '\0'); ret_err = clGetPlatformInfo(curPlatform, CL_PLATFORM_EXTENSIONS, extSize, &extStr.front(), nullptr); @@ -330,9 +331,10 @@ pi_result OCL(piContextCreate)( void *user_data1), void *user_data, pi_context *retcontext) { pi_result ret = PI_INVALID_OPERATION; - *retcontext = cast(clCreateContext( - properties, cast(num_devices), cast(devices), - pfn_notify, user_data, cast(&ret))); + *retcontext = cast( + clCreateContext(properties, cast(num_devices), + cast(devices), pfn_notify, + user_data, cast(&ret))); return ret; } @@ -467,10 +469,10 @@ _PI_CL(piDeviceRelease, clReleaseDevice) _PI_CL(piextDeviceSelectBinary, OCL(piextDeviceSelectBinary)) _PI_CL(piextGetDeviceFunctionPointer, OCL(piextGetDeviceFunctionPointer)) // Context -_PI_CL(piContextCreate, OCL(piContextCreate)) -_PI_CL(piContextGetInfo, clGetContextInfo) -_PI_CL(piContextRetain, clRetainContext) -_PI_CL(piContextRelease, clReleaseContext) +_PI_CL(piContextCreate, OCL(piContextCreate)) +_PI_CL(piContextGetInfo, clGetContextInfo) +_PI_CL(piContextRetain, clRetainContext) +_PI_CL(piContextRelease, clReleaseContext) // Queue _PI_CL(piQueueCreate, OCL(piQueueCreate)) _PI_CL(piQueueGetInfo, clGetCommandQueueInfo) @@ -478,35 +480,35 @@ _PI_CL(piQueueFinish, clFinish) _PI_CL(piQueueRetain, clRetainCommandQueue) _PI_CL(piQueueRelease, clReleaseCommandQueue) // Memory -_PI_CL(piMemBufferCreate, OCL(piMemBufferCreate)) -_PI_CL(piMemImageCreate, OCL(piMemImageCreate)) -_PI_CL(piMemGetInfo, clGetMemObjectInfo) -_PI_CL(piMemImageGetInfo, clGetImageInfo) -_PI_CL(piMemRetain, clRetainMemObject) -_PI_CL(piMemRelease, clReleaseMemObject) +_PI_CL(piMemBufferCreate, OCL(piMemBufferCreate)) +_PI_CL(piMemImageCreate, OCL(piMemImageCreate)) +_PI_CL(piMemGetInfo, clGetMemObjectInfo) +_PI_CL(piMemImageGetInfo, clGetImageInfo) +_PI_CL(piMemRetain, clRetainMemObject) +_PI_CL(piMemRelease, clReleaseMemObject) _PI_CL(piMemBufferPartition, OCL(piMemBufferPartition)) // Program -_PI_CL(piProgramCreate, OCL(piProgramCreate)) +_PI_CL(piProgramCreate, OCL(piProgramCreate)) _PI_CL(piclProgramCreateWithSource, OCL(piclProgramCreateWithSource)) _PI_CL(piclProgramCreateWithBinary, OCL(piclProgramCreateWithBinary)) -_PI_CL(piProgramGetInfo, clGetProgramInfo) -_PI_CL(piProgramCompile, clCompileProgram) -_PI_CL(piProgramBuild, clBuildProgram) -_PI_CL(piProgramLink, OCL(piProgramLink)) -_PI_CL(piProgramGetBuildInfo, clGetProgramBuildInfo) -_PI_CL(piProgramRetain, clRetainProgram) -_PI_CL(piProgramRelease, clReleaseProgram) +_PI_CL(piProgramGetInfo, clGetProgramInfo) +_PI_CL(piProgramCompile, clCompileProgram) +_PI_CL(piProgramBuild, clBuildProgram) +_PI_CL(piProgramLink, OCL(piProgramLink)) +_PI_CL(piProgramGetBuildInfo, clGetProgramBuildInfo) +_PI_CL(piProgramRetain, clRetainProgram) +_PI_CL(piProgramRelease, clReleaseProgram) // Kernel -_PI_CL(piKernelCreate, OCL(piKernelCreate)) -_PI_CL(piKernelSetArg, clSetKernelArg) -_PI_CL(piKernelGetInfo, clGetKernelInfo) -_PI_CL(piKernelGetGroupInfo, clGetKernelWorkGroupInfo) +_PI_CL(piKernelCreate, OCL(piKernelCreate)) +_PI_CL(piKernelSetArg, clSetKernelArg) +_PI_CL(piKernelGetInfo, clGetKernelInfo) +_PI_CL(piKernelGetGroupInfo, clGetKernelWorkGroupInfo) _PI_CL(piKernelGetSubGroupInfo, clGetKernelSubGroupInfo) _PI_CL(piKernelRetain, clRetainKernel) _PI_CL(piKernelRelease, clReleaseKernel) // Event -_PI_CL(piEventCreate, OCL(piEventCreate)) -_PI_CL(piEventGetInfo, clGetEventInfo) +_PI_CL(piEventCreate, OCL(piEventCreate)) +_PI_CL(piEventGetInfo, clGetEventInfo) _PI_CL(piEventGetProfilingInfo, clGetEventProfilingInfo) _PI_CL(piEventsWait, clWaitForEvents) _PI_CL(piEventSetCallback, clSetEventCallback) From 3663e3790f6f1b69d06e7604165478e71ec57a04 Mon Sep 17 00:00:00 2001 From: Garima Gupta Date: Wed, 13 Nov 2019 13:18:56 -0800 Subject: [PATCH 3/4] [SYCL] Minor formatting changes. Signed-off-by: Garima Gupta --- sycl/include/CL/sycl/detail/pi.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sycl/include/CL/sycl/detail/pi.h b/sycl/include/CL/sycl/detail/pi.h index c96764bb1266d..1571836f1063b 100644 --- a/sycl/include/CL/sycl/detail/pi.h +++ b/sycl/include/CL/sycl/detail/pi.h @@ -448,15 +448,15 @@ pi_result piextGetDeviceFunctionPointer( // pi_result piContextCreate( const cl_context_properties * properties, // TODO: untie from OpenCL - pi_uint32 num_devices, - const pi_device * devices, - void (*pfn_notify)( - const char * errinfo, - const void * private_info, - size_t cb, - void * user_data), - void * user_data, - pi_context * ret_context); + pi_uint32 num_devices, + const pi_device * devices, + void (* pfn_notify)( + const char * errinfo, + const void * private_info, + size_t cb, + void * user_data), + void * user_data, + pi_context * ret_context); pi_result piContextGetInfo( pi_context context, From b09f003cb2f52699cf121542c1a2255d60e1f335 Mon Sep 17 00:00:00 2001 From: Garima Gupta Date: Thu, 14 Nov 2019 09:16:49 -0800 Subject: [PATCH 4/4] Formatting changes. Removal of tabs in pi.h Signed-off-by: Garima Gupta --- sycl/include/CL/sycl/detail/pi.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sycl/include/CL/sycl/detail/pi.h b/sycl/include/CL/sycl/detail/pi.h index 1571836f1063b..2e993f1cedf42 100644 --- a/sycl/include/CL/sycl/detail/pi.h +++ b/sycl/include/CL/sycl/detail/pi.h @@ -530,11 +530,11 @@ pi_result piMemRelease( pi_mem mem); pi_result piMemBufferPartition( - pi_mem buffer, - pi_mem_flags flags, - pi_buffer_create_type buffer_create_type, - void * buffer_create_info, - pi_mem * ret_mem); + pi_mem buffer, + pi_mem_flags flags, + pi_buffer_create_type buffer_create_type, + void * buffer_create_info, + pi_mem * ret_mem); // // Program //