From 58c4ff1ddd2db5eb9977d99708e5722951c34526 Mon Sep 17 00:00:00 2001 From: Anthony Barbier Date: Thu, 9 Nov 2017 09:15:32 +0000 Subject: COMPMID-663: Updated CLSymbols to use std::function This will allow us to use it as an interceptor for some instruments in the benchmark infrastructure Change-Id: Iccde638c8db6312a74d343ad9f6e369e05230736 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/95014 Tested-by: Kaizen Reviewed-by: Georgios Pinitas --- arm_compute/core/CL/OpenCL.h | 97 ++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 62 deletions(-) (limited to 'arm_compute/core/CL/OpenCL.h') diff --git a/arm_compute/core/CL/OpenCL.h b/arm_compute/core/CL/OpenCL.h index 6780e23c2d..8a2d30bb83 100644 --- a/arm_compute/core/CL/OpenCL.h +++ b/arm_compute/core/CL/OpenCL.h @@ -54,69 +54,42 @@ public: bool load(const std::string &library); bool load_default(); - using clBuildProgram_func = cl_int (*)(cl_program, cl_uint, const cl_device_id *, const char *, void (*pfn_notify)(cl_program, void *), void *); - using clEnqueueNDRangeKernel_func = cl_int (*)(cl_command_queue, cl_kernel, cl_uint, const size_t *, const size_t *, const size_t *, cl_uint, const cl_event *, cl_event *); - using clSetKernelArg_func = cl_int (*)(cl_kernel, cl_uint, size_t, const void *); - using clRetainMemObject_func = cl_int (*)(cl_mem); - using clReleaseMemObject_func = cl_int (*)(cl_mem); - using clEnqueueUnmapMemObject_func = cl_int (*)(cl_command_queue, cl_mem, void *, cl_uint, const cl_event *, cl_event *); - using clRetainCommandQueue_func = cl_int (*)(cl_command_queue command_queue); - using clReleaseContext_func = cl_int (*)(cl_context); - using clReleaseEvent_func = cl_int (*)(cl_event); - using clEnqueueWriteBuffer_func = cl_int (*)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void *, cl_uint, const cl_event *, cl_event *); - using clEnqueueReadBuffer_func = cl_int (*)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void *, cl_uint, const cl_event *, cl_event *); - using clGetProgramBuildInfo_func = cl_int (*)(cl_program, cl_device_id, cl_program_build_info, size_t, void *, size_t *); - using clRetainProgram_func = cl_int (*)(cl_program program); - using clEnqueueMapBuffer_func = void *(*)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event *, cl_event *, cl_int *); - using clReleaseCommandQueue_func = cl_int (*)(cl_command_queue); - using clCreateProgramWithBinary_func = cl_program (*)(cl_context, cl_uint, const cl_device_id *, const size_t *, const unsigned char **, cl_int *, cl_int *); - using clRetainContext_func = cl_int (*)(cl_context context); - using clReleaseProgram_func = cl_int (*)(cl_program program); - using clFlush_func = cl_int (*)(cl_command_queue command_queue); - using clFinish_func = cl_int (*)(cl_command_queue command_queue); - using clGetProgramInfo_func = cl_int (*)(cl_program, cl_program_info, size_t, void *, size_t *); - using clCreateKernel_func = cl_kernel (*)(cl_program, const char *, cl_int *); - using clRetainKernel_func = cl_int (*)(cl_kernel kernel); - using clCreateBuffer_func = cl_mem (*)(cl_context, cl_mem_flags, size_t, void *, cl_int *); - using clCreateProgramWithSource_func = cl_program (*)(cl_context, cl_uint, const char **, const size_t *, cl_int *); - using clReleaseKernel_func = cl_int (*)(cl_kernel kernel); - using clGetDeviceInfo_func = cl_int (*)(cl_device_id, cl_device_info, size_t, void *, size_t *); - using clGetDeviceIDs_func = cl_int (*)(cl_platform_id, cl_device_type, cl_uint, cl_device_id *, cl_uint *); - using clRetainEvent_func = cl_int (*)(cl_event); - using clGetPlatformIDs_func = cl_int (*)(cl_uint, cl_platform_id *, cl_uint *); - using clGetKernelWorkGroupInfo_func = cl_int (*)(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void *, size_t *); +#define DECLARE_FUNCTION_PTR(func_name) \ + std::function func_name##_ptr = nullptr - clBuildProgram_func clBuildProgram = nullptr; - clEnqueueNDRangeKernel_func clEnqueueNDRangeKernel = nullptr; - clSetKernelArg_func clSetKernelArg = nullptr; - clReleaseKernel_func clReleaseKernel = nullptr; - clCreateProgramWithSource_func clCreateProgramWithSource = nullptr; - clCreateBuffer_func clCreateBuffer = nullptr; - clRetainKernel_func clRetainKernel = nullptr; - clCreateKernel_func clCreateKernel = nullptr; - clGetProgramInfo_func clGetProgramInfo = nullptr; - clFlush_func clFlush = nullptr; - clFinish_func clFinish = nullptr; - clReleaseProgram_func clReleaseProgram = nullptr; - clRetainContext_func clRetainContext = nullptr; - clCreateProgramWithBinary_func clCreateProgramWithBinary = nullptr; - clReleaseCommandQueue_func clReleaseCommandQueue = nullptr; - clEnqueueMapBuffer_func clEnqueueMapBuffer = nullptr; - clRetainProgram_func clRetainProgram = nullptr; - clGetProgramBuildInfo_func clGetProgramBuildInfo = nullptr; - clEnqueueReadBuffer_func clEnqueueReadBuffer = nullptr; - clEnqueueWriteBuffer_func clEnqueueWriteBuffer = nullptr; - clReleaseEvent_func clReleaseEvent = nullptr; - clReleaseContext_func clReleaseContext = nullptr; - clRetainCommandQueue_func clRetainCommandQueue = nullptr; - clEnqueueUnmapMemObject_func clEnqueueUnmapMemObject = nullptr; - clRetainMemObject_func clRetainMemObject = nullptr; - clReleaseMemObject_func clReleaseMemObject = nullptr; - clGetDeviceInfo_func clGetDeviceInfo = nullptr; - clGetDeviceIDs_func clGetDeviceIDs = nullptr; - clRetainEvent_func clRetainEvent = nullptr; - clGetPlatformIDs_func clGetPlatformIDs = nullptr; - clGetKernelWorkGroupInfo_func clGetKernelWorkGroupInfo = nullptr; + DECLARE_FUNCTION_PTR(clBuildProgram); + DECLARE_FUNCTION_PTR(clEnqueueNDRangeKernel); + DECLARE_FUNCTION_PTR(clSetKernelArg); + DECLARE_FUNCTION_PTR(clReleaseKernel); + DECLARE_FUNCTION_PTR(clCreateProgramWithSource); + DECLARE_FUNCTION_PTR(clCreateBuffer); + DECLARE_FUNCTION_PTR(clRetainKernel); + DECLARE_FUNCTION_PTR(clCreateKernel); + DECLARE_FUNCTION_PTR(clGetProgramInfo); + DECLARE_FUNCTION_PTR(clFlush); + DECLARE_FUNCTION_PTR(clFinish); + DECLARE_FUNCTION_PTR(clReleaseProgram); + DECLARE_FUNCTION_PTR(clRetainContext); + DECLARE_FUNCTION_PTR(clCreateProgramWithBinary); + DECLARE_FUNCTION_PTR(clReleaseCommandQueue); + DECLARE_FUNCTION_PTR(clEnqueueMapBuffer); + DECLARE_FUNCTION_PTR(clRetainProgram); + DECLARE_FUNCTION_PTR(clGetProgramBuildInfo); + DECLARE_FUNCTION_PTR(clEnqueueReadBuffer); + DECLARE_FUNCTION_PTR(clEnqueueWriteBuffer); + DECLARE_FUNCTION_PTR(clReleaseEvent); + DECLARE_FUNCTION_PTR(clReleaseContext); + DECLARE_FUNCTION_PTR(clRetainCommandQueue); + DECLARE_FUNCTION_PTR(clEnqueueUnmapMemObject); + DECLARE_FUNCTION_PTR(clRetainMemObject); + DECLARE_FUNCTION_PTR(clReleaseMemObject); + DECLARE_FUNCTION_PTR(clGetDeviceInfo); + DECLARE_FUNCTION_PTR(clGetDeviceIDs); + DECLARE_FUNCTION_PTR(clRetainEvent); + DECLARE_FUNCTION_PTR(clGetPlatformIDs); + DECLARE_FUNCTION_PTR(clGetKernelWorkGroupInfo); + +#undef DECLARE_FUNCTION_PTR private: std::pair _loaded{ false, false }; -- cgit v1.2.1