2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./01  ;. The build status returned if no build has been performed ,on the specified program object for device.   0. The build status returned if the last call to clBuildProgram@ on the specified program object for device generated an error.   /. The build status retrned if the last call to clBuildProgram< on the specified program object for device was successful.   1. The build status returned if the last call to clBuildProgram> on the specified program object for device has not finished.   if memobj is created with clCreateBuffer.   if memobj is created with clCreateImage2D   if memobj is created with clCreateImage3D.  5, This flag specifies that the memory object will be 3read and written by a kernel. This is the default.  6, This flags specifies that the memory object will be Pwritten but not read by a kernel. Reading from a buffer or image object created with CLMEM_WRITE_ONLY inside a kernel is undefined.  <, This flag specifies that the memory object is a read-only Mmemory object when used inside a kernel. Writing to a buffer or image object  created with CLMEM_READ_ONLY inside a kernel is undefined.  6, This flag is valid only if host_ptr is not NULL. If Pspecified, it indicates that the application wants the OpenCL implementation to Euse memory referenced by host_ptr as the storage bits for the memory Pobject. OpenCL implementations are allowed to cache the buffer contents pointed Oto by host_ptr in device memory. This cached copy can be used when kernels are Mexecuted on a device. The result of OpenCL commands that operate on multiple Mbuffer objects created with the same host_ptr or overlapping host regions is considered to be undefined.  5, This flag specifies that the application wants the >OpenCL implementation to allocate memory from host accessible memory.  and  are mutually exclusive.  6, This flag is valid only if host_ptr is not NULL. If Pspecified, it indicates that the application wants the OpenCL implementation to Oallocate memory for the memory object and copy the data from memory referenced  by host_ptr.  and  are mutually  exclusive.  can be used with  to Minitialize the contents of the cl_mem object allocated using host-accessible (e.g. PCIe) memory. Specifies the profiling data.  -, A 64-bit value that describes the current Ldevice time counter in nanoseconds when the command identified by event is )enqueued in a command-queue by the host.  -, A 64-bit value that describes the current Rdevice time counter in nanoseconds when the command identified by event that has Jbeen enqueued is submitted by the host to the device associated with the commandqueue.  -, A 64-bit value that describes the current Pdevice time counter in nanoseconds when the command identified by event starts execution on the device.  4, A 64-bit value that describes the current device Otime counter in nanoseconds when the command identified by event has finished execution on the device.   %2, command has been enqueued in the command-queue.  $:, enqueued command has been submitted by the host to the *device associated with the command-queue.  #., device is currently executing this command.  ", the command has completed.  !%, command was abnormally terminated. !"#$%&"Command associated with an event. '()*+,-./0123456789:;<=>? A0, The OpenCL device can execute OpenCL kernels.  @0, The OpenCL device can execute native kernels. @AB H, denorms are supported.  G, INF and NaNs are supported.  F1, round to nearest even rounding mode supported.  E), round to zero rounding mode supported.  D:, round to +ve and -ve infinity rounding modes supported.  C0, IEEE754-2008 fused multiply-add is supported. CDEFGHI K#, Determines whether the commands Pqueued in the command-queue are executed in-order or out-of-order. If set, the Rcommands in the command-queue are executed out-of-order. Otherwise, commands are executed in-order.  J2, Enable or disable profiling of commands in the Rcommand-queue. If set, the profiling of commands is enabled. Otherwise profiling of commands is disabled. See clGetEventProfilingInfo for more information. JKL Q9, An OpenCL device that is the host processor. The host Mprocessor runs the OpenCL implementations and is a single or multi-core CPU.  P<, An OpenCL device that is a GPU. By this we mean that the Jdevice can also be used to accelerate a 3D API such as OpenGL or DirectX.  O2, Dedicated OpenCL accelerators (for example the LIBM CELL Blade). These devices communicate with the host processor using a &peripheral interconnect such as PCIe.  N+, The default OpenCL device in the system.  M., All OpenCL devices available in the system. MNOPQR W3, OpenCL profile string. Returns the profile name Nsupported by the implementation. The profile name returned can be one of the following strings:   FULL_PROFILE9 If the implementation supports the OpenCL specification N(functionality defined as part of the core specification and does not require !any extensions to be supported). EMBEDDED_PROFILE5 If the implementation supports the OpenCL embedded Nprofile. The embedded profile is defined to be a subset for each version of OpenCL.  V5, OpenCL version string. Returns the OpenCL version Psupported by the implementation. This version string has the following format: @OpenCL major_version.minor_version platform-specific information The major_version.minor_version value returned will be 1.0.  U, Platform name string.  T, Platform vendor string.  S5, Returns a space-separated list of extension names M(the extension names themselves do not contain any spaces) supported by the Oplatform. Extensions defined here must be supported by all devices associated with this platform. STUVWX- ., Returned if there is a failure to build the program executable.  4, Returned if the parameter program is created with clCreateProgramWithSource. and a compiler is not available. For example clDeviceCompilerAvalaible is set to 2.  4, Returned if the specified device is not currently  available.  9, Returned if no OpenCL devices that match the specified devices were found.  3, Returned if the specified source and destination $images are not valid image objects.  0, Returned if the specified image format is not  supported.  6, Returned if an invalid argument index is specified.  ~:, Returned if argument size specified (arg_size) does not Pmatch the size of the data type for an argument that is not a memory object, or Qif the argument is a memory object and arg_size != sizeof(cl_mem) or if arg_size Jis zero and the argument is declared with the __local qualifier or if the :argument is a sampler and arg_size != sizeof(cl_sampler).  }7, Returned if the argument value specified is NULL for Kan argument that is not declared with the __local qualifier or vice-versa.  |;, Returned if the program binary is not a valid binary for the specified device.  {6, Returned if the value of the parameter size is 0 or is greater than clDeviceMaxMemAllocSize" for all devices specified in the parameter context.  z., Returned if the specified build options are  invalid.  y3, Returned if the specified command-queue is not a valid command-queue.  x:, Returned if the specified context is not a valid OpenCL Mcontext, or the context associated with certain parameters are not the same.  w6, Returned if the device or devices specified are not valid.  v2, Returned if device type specified is not valid.  u9, Returned if the event objects specified are not valid.  t*, Returned if event_wait_list is NULL and Enum_events_in_wait_list > 0, or event_wait_list_list is not NULL and Onum_events_in_wait_list is 0, or specified event objects are not valid events.  s6, Returned if obj is not a vaild GL object or is a GL 1object but does not have an existing data store.  r., Returned if global_work_offset is not NULL.  q#, Returned if host_ptr is NULL and  or 1 are set in flags or if host_ptr is not NULL but  or  are not set in flags.  p), Returned if the image format specified Lis not valid or is NULL or does not map to a supported OpenCL image format.  o6, Returned if the specified image width or height are Qinvalid or if the image row pitch and image slice pitch do not follow the rules.  n5, Returned if the specified kernel name is not found  in program.  m9, Returned if the specified kernel is not a valid kernel object.  l7, Returned if the kernel argument values have not been  specified.  k*, Returned if the function definition for L__kernel function given by kernel_name such as the number of arguments, the Qargument types are not the same for all devices for which the program executable has been built.  j8, Returned if a parameter is not a valid memory, image, or buffer object.  i3, Returned if there are no devices in context that Msupport images. Returned if the build of a program executable for any of the (devices specified by a previous call to clBuildProgram for program has not Kcompleted, or if there are kernel objects attached to program. Returned by clEnqueueNativeKernel3 if the specified device cannot execute the native kernel.  h4, Returned if the specified platform is not a valid Nplatform, or no platform could be selected, or if platform value specified in $properties is not a valid platform.  g;, Returned if the specified program is not a valid program object.  f-, Returned if there is no successfully built Oexecutable for program, or if there is no device in program. Returned if there Qis no successfully built program executable available for device associated with command_queue.  e1, Returned if specified properties are valid but !are not supported by the device.  d;, Returned if the specified sampler is not a valid sampler Oobject, or for an argument declared to be of type sampler_t when the specified )arg_value is not a valid sampler object.  c4, Returned if a parameter is not an expected value.  b-, Returned if work_dim is not a valid value.  a/, Returned if local_work_size is specified and Mnumber of workitems specified by global_work_size is not evenly divisible by Msize of work-group given by local_work_size or does not match the work-group Nsize specified for kernel using the __attribute__((reqd_work_group_size(X, Y, "Z))) qualifier in program source.  `4, Returned if the number of work-items specified in any of local_work_size... [0] ... local_work_size[work_dim - 1] is greater than &the corresponding values specified by clDeviceMaxWorkItemSizes.  _9, Returned by if there is a failure to map the requested Oregion into the host address space. This error cannot occur for buffer objects  created with CLMEM_USE_HOST_PTR or CLMEM_ALLOC_HOST_PTR.  ^-, Returned if there is a failure to allocate Kmemory for data store associated with image or buffer objects specified as arguments to kernel.  ]8, Returned if the source and destination images are the Psame image (or the source and destination buffers are the same buffer), and the (source and destination regions overlap.  \1, Returned in the event of a failure to allocate =resources required by the OpenCL implementation on the host.  [2, Returned in the event of a failure to queue the Jexecution instance of kernel on the command-queue because of insufficient (resources needed to execute the kernel.  Z, Returned if the J Qflag is not set for the command-queue and the profiling information is currently Knot available (because the command identified by event has not completed).  Y5, Indicates that the function executed successfully. YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3456789:;<=>?@ABCDEFHIKLMNOPQRSTUVYZ[\]^_  %$#"!!"#$%&76543210/.-,+*)(''()*+,-./012345678:99:;>=<<=>?A@@ABHGFEDCCDEFGHIKJJKLQPONMMNOPQRWVUTSSTUVWX-~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3456789:;<=>?@ABCDEFHIKLMNOPQRSTUVYZ[\]^_G`abcdefghijklmnopqrstuvwxyz{|}~LCreates a program object for a context, and loads the source code specified Nby the text strings in the strings array into the program object. The devices Lassociated with the program object are the devices associated with context. OOpenCL allows applications to create a program object using the program source Qor binary and build appropriate program executables. This allows applications to Ldetermine whether they want to use the pre-built offline binary or load and :compile the program source and use the executable compiled/linked online as the Nprogram executable. This can be very useful as it allows applications to load Kand build program executables online on its first instance for appropriate QOpenCL devices in the system. These executables can now be queried and cached by Nthe application. Future instances of the application launching will no longer Qneed to compile and build the program executables. The cached executables can be Lread and loaded by the application, which can help significantly reduce the !application initialization time. PAn OpenCL program consists of a set of kernels that are identified as functions Pdeclared with the __kernel qualifier in the program source. OpenCL programs may Palso contain auxiliary functions and constant data that can be used by __kernel Lfunctions. The program executable can be generated online or offline by the 6OpenCL compiler for the appropriate target device(s). 0 returns a valid non-zero program object if the Hprogram object is created successfully. Otherwise, it throws one of the  following X exceptions:  CL_INVALID_CONTEXT$ if context is not a valid context.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required ,by the OpenCL implementation on the host. MCreates a program object for a context, and loads specified binary data into the program object. NThe program binaries specified by binaries contain the bits that describe the Eprogram executable that will be run on the device(s) associated with Mcontext. The program binary can consist of either or both of device-specific executable(s), and/<or implementation-specific intermediate representation (IR) ;which will be converted to the device-specific executable. HOpenCL allows applications to create a program object using the program Hsource or binary and build appropriate program executables. This allows Papplications to determine whether they want to use the pre-built offline binary For load and compile the program source and use the executable compiled/linked Gonline as the program executable. This can be very useful as it allows Papplications to load and build program executables online on its first instance Kfor appropriate OpenCL devices in the system. These executables can now be Kqueried and cached by the application. Future instances of the application Plaunching will no longer need to compile and build the program executables. The Mcached executables can be read and loaded by the application, which can help :significantly reduce the application initialization time. 6Returns a valid non-zero program object and a list of X values whether Gthe program binary for each device specified in device_list was loaded Lsuccessfully or not. It is list of the same length the list of devices with  CL_SUCCESS@ if binary was successfully loaded for device specified by same position; otherwise returns CL_INVALID_VALUE if length of binary is zero or CL_INVALID_BINARY) if program binary is not a valid binary for the specified device. +The function can throw on of the following X exceptions:  CL_INVALID_CONTEXT& if context is not a valid context.  CL_INVALID_VALUE< if the device list is empty; or if lengths or binaries are empty.  CL_INVALID_DEVICE8 if OpenCL devices listed in the device list are not in -the list of devices associated with context.  CL_INVALID_BINARY6 if an invalid program binary was encountered for any device.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required ,by the OpenCL implementation on the host. (Increments the program reference count.  returns  if 3 the function is executed successfully. It returns 2 if program is not a  valid program object. MDecrements the program reference count. The program object is deleted after O all kernel objects associated with program have been deleted and the program  reference count becomes zero. clReleseProgram returns  if 3 the function is executed successfully. It returns 2 if program is not a  valid program object. KAllows the implementation to release the resources allocated by the OpenCL O compiler. This is a hint from the application and does not guarantee that the O compiler will not be used in the future or that the compiler will actually be * unloaded by the implementation. Calls to  after  6 will reload the compiler, if necessary, to build the ! appropriate program executable. LBuilds (compiles and links) a program executable from the program source or Nbinary. OpenCL allows program executables to be built using the source or the Pbinary. The build options are categorized as pre-processor options, options for Emath intrinsics, options that control optimization and miscellaneous Koptions. This specification defines a standard set of options that must be Lsupported by an OpenCL compiler when building program executables online or Qoffline. These may be extended by a set of vendor- or platform-specific options.  Preprocessor Options KThese options control the OpenCL preprocessor which is run on each program Qsource before actual compilation. -D options are processed in the order they are 1given in the options argument to clBuildProgram.  -D name/ Predefine name as a macro, with definition 1. -D name=definition; The contents of definition are tokenized and processed as 5if they appeared during translation phase three in a  `#define' directive. In Mparticular, the definition will be truncated by embedded newline characters. -I dirE Add the directory dir to the list of directories to be searched for header files.  Math Intrinsics Options AThese options control compiler behavior regarding floating-point Carithmetic. These options trade off between speed and correctness.  -cl-single-precision-constant0 Treat double precision floating-point constant as single precision constant. -cl-denorms-are-zero6 This option controls how single precision and double Pprecision denormalized numbers are handled. If specified as a build option, the Qsingle precision denormalized numbers may be flushed to zero and if the optional Kextension for double precision is supported, double precision denormalized Onumbers may also be flushed to zero. This is intended to be a performance hint Nand the OpenCL compiler can choose not to flush denorms to zero if the device Fsupports single precision (or double precision) denormalized numbers. KThis option is ignored for single precision numbers if the device does not 3support single precision denormalized numbers i.e.  CL_FP_DENORM bit is not set in clGetDeviceSingleFPConfig. KThis option is ignored for double precision numbers if the device does not Csupport double precision or if it does support double precison but  CL_FP_DENORM bit is not set in clGetDeviceDoubleFPConfig. MThis flag only applies for scalar and vector single precision floating-point Fvariables and computations on these floating-point variables inside a Hprogram. It does not apply to reading from or writing to image objects.  Optimization Options NThese options control various sorts of optimizations. Turning on optimization ?flags makes the compiler attempt to improve the performance and/or code size at Othe expense of compilation time and possibly the ability to debug the program.  -cl-opt-disable8 This option disables all optimizations. The default is optimizations are enabled. -cl-strict-aliasing9 This option allows the compiler to assume the strictest aliasing rules. IThe following options control compiler behavior regarding floating-point Qarithmetic. These options trade off between performance and correctness and must Qbe specifically enabled. These options are not turned on by default since it can Presult in incorrect output for programs which depend on an exact implementation of IEEE 754 rules/#specifications for math functions.  -cl-mad-enable? Allow a * b + c to be replaced by a mad. The mad computes a * Ob + c with reduced accuracy. For example, some OpenCL devices implement mad as 4truncate the result of a * b before adding it to c. -cl-no-signed-zeros8 Allow optimizations for floating-point arithmetic that Mignore the signedness of zero. IEEE 754 arithmetic specifies the behavior of Fdistinct +0.0 and -0.0 values, which then prohibits simplification of Pexpressions such as x+0.0 or 0.0*x (even with -clfinite-math only). This option *implies that the sign of a zero result isn't significant. -cl-unsafe-math-optimizations( Allow optimizations for floating-point Qarithmetic that (a) assume that arguments and results are valid, (b) may violate FIEEE 754 standard and (c) may violate the OpenCL numerical compliance Lrequirements as defined in section 7.4 for single-precision floating-point, Msection 9.3.9 for double-precision floating-point, and edge case behavior in Msection 7.5. This option includes the -cl-no-signed-zeros and -cl-mad-enable  options. -cl-finite-math-only8 Allow optimizations for floating-point arithmetic that Nassume that arguments and results are not NaNs or . This option may violate Kthe OpenCL numerical compliance requirements defined in in section 7.4 for Dsingle-precision floating-point, section 9.3.9 for double-precision 7floating-point, and edge case behavior in section 7.5. -cl-fast-relaxed-math8 Sets the optimization options -cl-finite-math-only and L-cl-unsafe-math-optimizations. This allows optimizations for floating-point Karithmetic that may violate the IEEE 754 standard and the OpenCL numerical Hcompliance requirements defined in the specification in section 7.4 for Dsingle-precision floating-point, section 9.3.9 for double-precision Nfloating-point, and edge case behavior in section 7.5. This option causes the Npreprocessor macro __FAST_RELAXED_MATH__ to be defined in the OpenCL program. ) Options to Request or Suppress Warnings IWarnings are diagnostic messages that report constructions which are not Kinherently erroneous but which are risky or suggest there may have been an Qerror. The following languageindependent options do not enable specific warnings Fbut control the kinds of diagnostics produced by the OpenCL compiler.  -w Inhibit all warning messages. -Werror Make all warnings into errors. 'clBuildProgram can throw the following X exceptions when fails:   CL_INVALID_PROGRAM+ if program is not a valid program object.  CL_INVALID_DEVICE8 if OpenCL devices listed in device_list are not in the )list of devices associated with program.  CL_INVALID_BINARY if program is created with clCreateWithProgramWithBinary1 and devices listed in device_list do not have a valid program binary loaded.  CL_INVALID_BUILD_OPTIONS/ if the build options specified by options are  invalid.  CL_INVALID_OPERATION5 if the build of a program executable for any of the 4devices listed in device_list by a previous call to  for program has not completed.  CL_COMPILER_NOT_AVAILABLE if program is created with ! and a compiler is not available i.e. clGetDeviceCompilerAvailable is set to 2.  CL_BUILD_PROGRAM_FAILURE, if there is a failure to build the program +executable. This error will be returned if  does not return until the build has completed.  CL_INVALID_OPERATION2 if there are kernel objects attached to program.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required ,by the OpenCL implementation on the host. KReturn the program reference count. The reference count returned should be C considered immediately stale. It is unsuitable for general use in F applications. This feature is provided for identifying memory leaks. 3This function execute OpenCL clGetProgramInfo with  u. AReturn the context specified when the program object is created. 3This function execute OpenCL clGetProgramInfo with t. 6Return the number of devices associated with program. 3This function execute OpenCL clGetProgramInfo with s. KReturn the list of devices associated with the program object. This can be J the devices associated with context on which the program object has been O created or can be a subset of devices that are specified when a progam object  is created using . 3This function execute OpenCL clGetProgramInfo with r. ,Return the program source code specified by  3. The source string returned is a concatenation of ! all source strings specified to  with a null G terminator. The concatenation strips any nulls in the original source M strings. The actual number of characters that represents the program source I code including the null terminator is returned in param_value_size_ret. 3This function execute OpenCL clGetProgramInfo with q. KReturns an array that contains the size in bytes of the program binary for M each device associated with program. The size of the array is the number of E devices associated with program. If a binary is not available for a ( device(s), a size of zero is returned. 3This function execute OpenCL clGetProgramInfo with p. IReturn the program binaries for all devices associated with program. For Peach device in program, the binary returned can be the binary specified for the $device when program is created with  or it can be the executable binary generated by . If program is created with 1, the binary returned is the binary generated by 6. The bits returned can be an implementation-specific Nintermediate representation (a.k.a. IR) or device specific executable bits or Oboth. The decision on which information is returned in the binary is up to the OpenCL implementation. LTo find out which device the program binary in the array refers to, use the 9 query to get the list of devices. There is a one-to-one 5correspondence between the array of data returned by  and array of devices returned by . 3This function execute OpenCL clGetProgramInfo with o. FReturns the build status of program for a specific device as given by  device. 8This function execute OpenCL clGetProgramBuildInfo with  m. >Return the build options specified by the options argument in E clBuildProgram for device. If build status of program for device is   , an empty string is returned. 8This function execute OpenCL clGetProgramBuildInfo with  l. Return the build log when ! was called for device. If build ! status of program for device is  , an empty string is returned. 8This function execute OpenCL clGetProgramBuildInfo with  k. ICreates a kernal object. A kernel is a function declared in a program. A Lkernel is identified by the __kernel qualifier applied to any function in a Qprogram. A kernel object encapsulates the specific __kernel function declared in Ja program and the argument values to be used when executing this __kernel  function. @ returns a valid non-zero kernel object if the kernel object is @created successfully. Otherwise, it throws one of the following X  exceptions:  CL_INVALID_PROGRAM+ if program is not a valid program object.  CL_INVALID_PROGRAM_EXECUTABLE. if there is no successfully built executable  for program.  CL_INVALID_KERNEL_NAME) if kernel_name is not found in program.  CL_INVALID_KERNEL_DEFINITION) if the function definition for __kernel Lfunction given by kernel_name such as the number of arguments, the argument Qtypes are not the same for all devices for which the program executable has been built.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required ,by the OpenCL implementation on the host. LCreates kernel objects for all kernel functions in a program object. Kernel Oobjects are not created for any __kernel functions in program that do not have Othe same function definition across all devices for which a program executable has been successfully built. OKernel objects can only be created once you have a program object with a valid Hprogram source or binary loaded into the program object and the program Oexecutable has been successfully built for one or more devices associated with Qprogram. No changes to the program executable are allowed while there are kernel Cobjects associated with a program object. This means that calls to  return CL_INVALID_OPERATION if there are kernel objects Qattached to a program object. The OpenCL context associated with program will be Pthe context associated with kernel. The list of devices associated with program Qare the devices associated with kernel. Devices associated with a program object Kfor which a valid program executable has been built can be used to execute (kernels declared in the program object. 6 will return the kernel objects if the kernel objects $were successfully allocated, throws CL_INVALID_PROGRAM if program is not a valid program object, throws CL_INVALID_PROGRAM_EXECUTABLE if there is no Csuccessfully built executable for any device in program and throws CL_OUT_OF_HOST_MEMORY9 if there is a failure to allocate resources required by 'the OpenCL implementation on the host. 0Increments the program program reference count.  returns  + if the function is executed successfully.  or   do an implicit retain. IDecrements the kernel reference count. The kernel object is deleted once I the number of instances that are retained to kernel become zero and the E kernel object is no longer needed by any enqueued commands that use  kernel.  returns  if the function is executed  successfully. DUsed to set the argument value for a specific argument of a kernel. PA kernel object does not update the reference count for objects such as memory, 0sampler objects specified as argument values by , Users may not Nrely on a kernel object to retain objects specified as argument values to the kernel.  Implementations shall not allow % objects to hold reference counts to F arguments, because no mechanism is provided for the user to tell the Pkernel to release that ownership right. If the kernel holds ownership rights on Okernel args, that would make it impossible for the user to tell with certainty Kwhen he may safely release user allocated resources associated with OpenCL 2objects such as the CLMem backing store used with CL_MEM_USE_HOST_PTR.  throws one of the following X exceptions when fails:  CL_INVALID_KERNEL) if kernel is not a valid kernel object.  CL_INVALID_ARG_INDEX- if arg_index is not a valid argument index.  CL_INVALID_ARG_VALUE8 if arg_value specified is NULL for an argument that is 7not declared with the __local qualifier or vice-versa.  CL_INVALID_MEM_OBJECT5 for an argument declared to be a memory object when 6the specified arg_value is not a valid memory object.  CL_INVALID_SAMPLER7 for an argument declared to be of type sampler_t when 7the specified arg_value is not a valid sampler object.  CL_INVALID_ARG_SIZE6 if arg_size does not match the size of the data type Kfor an argument that is not a memory object or if the argument is a memory Qobject and arg_size != sizeof(cl_mem) or if arg_size is zero and the argument is Qdeclared with the __local qualifier or if the argument is a sampler and arg_size != sizeof(cl_sampler). Wrap function of  with Storable data. !Return the kernel function name. 2This function execute OpenCL clGetKernelInfo with i. *Return the number of arguments to kernel. 2This function execute OpenCL clGetKernelInfo with h. JReturn the kernel reference count. The reference count returned should be C considered immediately stale. It is unsuitable for general use in F applications. This feature is provided for identifying memory leaks. 2This function execute OpenCL clGetKernelInfo with  g. +Return the context associated with kernel. 2This function execute OpenCL clGetKernelInfo with f. 2Return the program object associated with kernel. 2This function execute OpenCL clGetKernelInfo with e. KThis provides a mechanism for the application to query the work-group size D that can be used to execute a kernel on a specific device given by I device. The OpenCL implementation uses the resource requirements of the L kernel (register usage etc.) to determine what this work-group size should  be. ;This function execute OpenCL clGetKernelWorkGroupInfo with  c. IReturns the work-group size specified by the __attribute__((reqd_work_gr K oup_size(X, Y, Z))) qualifier. See Function Qualifiers. If the work-group H size is not specified using the above attribute qualifier (0, 0, 0) is  returned. ;This function execute OpenCL clGetKernelWorkGroupInfo with  b. IReturns the amount of local memory in bytes being used by a kernel. This N includes local memory that may be needed by an implementation to execute the G kernel, variables declared inside the kernel with the __local address H qualifier and local memory to be allocated for arguments to the kernel K declared as pointers with the __local address qualifier and whose size is  specified with . JIf the local memory size, for any pointer argument to the kernel declared N with the __local address qualifier, is not specified, its size is assumed to  be 0. ;This function execute OpenCL clGetKernelWorkGroupInfo with  a. % % FWaits on the host thread for commands identified by event objects in L event_list to complete. A command is considered complete if its execution  status is " or a negative value.  Returns 7 if the function was executed successfully. It returns 2 N if the list of events is empty, or if events specified in event_list do not N belong to the same context, or if event objects specified in event_list are  not valid event objects. &Increments the event reference count. F The OpenCL commands that return an event perform an implicit retain.  Returns 6 if the function is executed successfully. It returns 2 ' if event is not a valid event object. &Decrements the event reference count. M Decrements the event reference count. The event object is deleted once the N reference count becomes zero, the specific command identified by this event P has completed (or terminated) and there are no commands in the command-queues > of a context that require a wait for this event to complete.  Returns 6 if the function is executed successfully. It returns 2 ' if event is not a valid event object. 0Return the command-queue associated with event. 1This function execute OpenCL clGetEventInfo with . *Return the command associated with event. 1This function execute OpenCL clGetEventInfo with . JReturn the event reference count. The reference count returned should be R considered immediately stale. It is unsuitable for general use in applications. 8 This feature is provided for identifying memory leaks. 1This function execute OpenCL clGetEventInfo with . @Return the execution status of the command identified by event. 1This function execute OpenCL clGetEventInfo with  . HReturns profiling information for the command associated with event if Rprofiling is enabled. The unsigned 64-bit values returned can be used to measure 6the time in nano-seconds consumed by OpenCL commands. NOpenCL devices are required to correctly track time across changes in device  frequency and power states. The $CL_DEVICE_PROFILING_TIMER_RESOLUTION specifies Othe resolution of the timer i.e. the number of nanoseconds elapsed before the timer is incremented. IEvent objects can be used to capture profiling information that measure Qexecution time of a command. Profiling of OpenCL commands can be enabled either &by using a command-queue created with CL_QUEUE_PROFILING_ENABLE flag set in ?properties argument to clCreateCommandQueue or by setting the CL_QUEUE_PROFILING_ENABLE! flag in properties argument to clSetCommandQueueProperty. / returns the valueif the function is executed Ksuccessfully and the profiling information has been recorded, and returns  if the CL_QUEUE_PROFILING_ENABLE flag is not set for the Kcommand-queue and if the profiling information is currently not available O(because the command identified by event has not completed), or if event is a not a valid event object. & !"#$%&'()*+,-./01234567&&76543210/.-,+*)(' %$#"!_LDescribes the size of the channel data type. The number of bits per element Ldetermined by the image_channel_data_type and image_channel_order must be a Lpower of two. The list of supported values is described in the table below.  >, Each channel component is a normalized signed 8-bit integer value.  7, Each channel component is a normalized signed 16-bit integer value.  8, Each channel component is a normalized unsigned 8-bit integer value.  9, Each channel component is a normalized unsigned 16-bit integer value.  9, Represents a normalized 5-6-5 3-channel RGB image. The channel order must be .  1, Represents a normalized x-5-5-5 4-channel xRGB !image. The channel order must be .  4, Represents a normalized x-10-10-10 4-channel xRGB !image. The channel order must be .  9, Each channel component is an unnormalized signed 8-bit integer value.  :, Each channel component is an unnormalized signed 16-bit integer value.  :, Each channel component is an unnormalized signed 32-bit integer value.  ;, Each channel component is an unnormalized unsigned 8-bit integer value.  5, Each channel component is an unnormalized unsigned 16-bit integer value.  5, Each channel component is an unnormalized unsigned 32-bit integer value.  7, Each channel component is a 16-bit half-float value.  >, Each channel component is a single precision floating-point value. HSpecifies the number of channels and the channel layout i.e. the memory Playout in which channels are stored in the image. Valid values are described in the table below.  , .  6, This format can only be used if channel data type = , , , , , or .  6, This format can only be used if channel data type = , , , , , or .  , .  6, This format can only be used if channel data type = ,  or CL_UNORM_INT101010.  .  , 6. This format can only be used if channel data type = , ,  or . GCreates a buffer object. Returns a valid non-zero buffer object if the @buffer object is created successfully. Otherwise, it throws the CLError:  CL_INVALID_CONTEXT$ if context is not a valid context.  CL_INVALID_VALUE- if values specified in flags are not valid.  CL_INVALID_BUFFER_SIZE! if size is 0 or is greater than clDeviceMaxMemAllocSize# value for all devices in context.  CL_INVALID_HOST_PTR if host_ptr is NULL and  or 1 are set in flags or if host_ptr is not NULL but  or  are not set in flags.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory for buffer object.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. 6Increments the memory object reference count. returns  if the M function is executed successfully. After the memobj reference count becomes N zero and commands queued for execution on a command-queue(s) that use memobj 9 have finished, the memory object is deleted. It returns 2 if memobj is  not a valid memory object. IDecrements the memory object reference count. After the memobj reference L count becomes zero and commands queued for execution on a command-queue(s) F that use memobj have finished, the memory object is deleted. Returns  6 if the function is executed successfully. It returns 2 if memobj is not  a valid memory object. Creates a 2D image object. < returns a valid non-zero image object created if the image Jobject is created successfully. Otherwise, it throws one of the following CLError exceptions:   CL_INVALID_CONTEXT$ if context is not a valid context.  CL_INVALID_VALUE- if values specified in flags are not valid.  "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR) if values specified in image_format are  not valid.  CL_INVALID_IMAGE_SIZE1 if image_width or image_height are 0 or if they exceed values specified in CL_DEVICE_IMAGE2D_MAX_WIDTH or CL_DEVICE_IMAGE2D_MAX_HEIGHT/ respectively for all devices in context or if Ivalues specified by image_row_pitch do not follow rules described in the argument description above.  CL_INVALID_HOST_PTR if host_ptr is  and  or ( are set in flags or if host_ptr is not  but  or  are not set in flags.  CL_IMAGE_FORMAT_NOT_SUPPORTED' if the image_format is not supported.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory for image object.  CL_INVALID_OPERATION8 if there are no devices in context that support images (i.e. CL_DEVICE_IMAGE_SUPPORT2 (specified in the table of OpenCL Device Queries for clGetDeviceInfo) is 2).  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host.  A valid OpenCL context on which $ the image object is to be created. (A list of flags that is used to specify , allocation and usage information about the $ image memory object being created.  Structure that describes format * properties of the image to be allocated. 4The width of the image in pixels. It must be values  greater than or equal to 1. .The height of the image in pixels. It must be $ values greater than or equal to 1. 0The scan-line pitch in bytes. This must be 0 if  host_ptr is  and can be either 0 or greater 3 than or equal to image_width * size of element in  bytes if host_ptr is not . If host_ptr is  not $ and image_row_pitch is equal to 0, 5 image_row_pitch is calculated as image_width * size 6 of element in bytes. If image_row_pitch is not 0, it 1 must be a multiple of the image element size in  bytes. -A pointer to the image data that may already 2 be allocated by the application. The size of the 0 buffer that host_ptr points to must be greater $ than or equal to image_row_pitch * 1 image_height. The size of each element in bytes 0 must be a power of 2. The image data specified / by host_ptr is stored as a linear sequence of 2 adjacent scanlines. Each scanline is stored as a $ linear sequence of image elements. Creates a 3D image object. < returns a valid non-zero image object created if the image Jobject is created successfully. Otherwise, it throws one of the following CLError exceptions:   CL_INVALID_CONTEXT$ if context is not a valid context.  CL_INVALID_VALUE- if values specified in flags are not valid.  "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR) if values specified in image_format are  not valid.  CL_INVALID_IMAGE_SIZE6 if image_width, image_height are 0 or if image_depth >less than or equal to 1 or if they exceed values specified in CL_DEVICE_IMAGE3D_MAX_WIDTH, CL_DEVICE_IMAGE3D_MAX_HEIGHT' or CL_DEVICE_IMAGE3D_MAX_DEPTH/ respectively for all devices in context or if Nvalues specified by image_row_pitch and image_slice_pitch do not follow rules -described in the argument description above.  CL_INVALID_HOST_PTR if host_ptr is  and  or ( are set in flags or if host_ptr is not  but  or  are not set in flags.  CL_IMAGE_FORMAT_NOT_SUPPORTED' if the image_format is not supported.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory for image object.  CL_INVALID_OPERATION8 if there are no devices in context that support images (i.e. CL_DEVICE_IMAGE_SUPPORT2 (specified in the table of OpenCL Device Queries for clGetDeviceInfo) is 2).  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host.  A valid OpenCL context on which $ the image object is to be created. (A list of flags that is used to specify , allocation and usage information about the $ image memory object being created.  Structure that describes format * properties of the image to be allocated. 4The width of the image in pixels. It must be values  greater than or equal to 1. .The height of the image in pixels. It must be $ values greater than or equal to 1. 1The depth of the image in pixels. This must be a  value greater than 1. 0The scan-line pitch in bytes. This must be 0 if  host_ptr is  and can be either 0 or greater 3 than or equal to image_width * size of element in  bytes if host_ptr is not . If host_ptr is  not $ and image_row_pitch is equal to 0, 5 image_row_pitch is calculated as image_width * size 6 of element in bytes. If image_row_pitch is not 0, it 1 must be a multiple of the image element size in  bytes. -The size in bytes of each 2D slice in the 3D & image. This must be 0 if host_ptr is  and - can be either 0 or greater than or equal to 3 image_row_pitch * image_height if host_ptr is not  . If host_ptr is not  and 4 image_slice_pitch equal to 0, image_slice_pitch is 2 calculated as image_row_pitch * image_height. If 6 image_slice_pitch is not 0, it must be a multiple of  the image_row_pitch. -A pointer to the image data that may already 2 be allocated by the application. The size of the 0 buffer that host_ptr points to must be greater & than or equal to image_slice_pitch * 0 image_depth. The size of each element in bytes 0 must be a power of 2. The image data specified / by host_ptr is stored as a linear sequence of / adjacent 2D slices. Each 2D slice is a linear 2 sequence of adjacent scanlines. Each scanline is & a linear sequence of image elements. 5Get the list of image formats supported by an OpenCL implementation.  can be used to get the list of Gimage formats supported by an OpenCL implementation when the following 7information about an image memory object is specified:  Context  * Image type - 2D or 3D image ' * Image object allocation information Throws CL_INVALID_CONTEXT+ if context is not a valid context, throws CL_INVALID_VALUE' if flags or image_type are not valid. $A valid OpenCL context on which the " image object(s) will be created. A bit-field that is used to  specify allocation and usage  information about the image  memory object. Describes the image type  and must be either   or  . DReturn image format descriptor specified when image is created with % clCreateImage2D or clCreateImage3D. 1This function execute OpenCL clGetImageInfo with . JReturn size of each element of the image memory object given by image. An > element is made up of n channels. The value of n is given in   descriptor. 1This function execute OpenCL clGetImageInfo with . GReturn size in bytes of a row of elements of the image object given by  image. 1This function execute OpenCL clGetImageInfo with . DReturn size in bytes of a 2D slice for the 3D image object given by 4 image. For a 2D image object this value will be 0. 1This function execute OpenCL clGetImageInfo with . !Return width of image in pixels. 1This function execute OpenCL clGetImageInfo with . "Return height of image in pixels. 1This function execute OpenCL clGetImageInfo with . EReturn depth of the image in pixels. For a 2D image, depth equals 0. 1This function execute OpenCL clGetImageInfo with . Returns the mem object type. 5This function execute OpenCL clGetMemObjectInfo with . CReturn the flags argument value specified when memobj was created. 5This function execute OpenCL clGetMemObjectInfo with . 'Return actual size of memobj in bytes. 5This function execute OpenCL clGetMemObjectInfo with . EReturn the host_ptr argument value specified when memobj is created. 5This function execute OpenCL clGetMemObjectInfo with . CMap count. The map count returned should be considered immediately J stale. It is unsuitable for general use in applications. This feature is  provided for debugging. 5This function execute OpenCL clGetMemObjectInfo with . FReturn memobj reference count. The reference count returned should be C considered immediately stale. It is unsuitable for general use in F applications. This feature is provided for identifying memory leaks. 5This function execute OpenCL clGetMemObjectInfo with . 8Return context specified when memory object is created. 5This function execute OpenCL clGetMemObjectInfo with . LCreates a sampler object. A sampler object describes how to sample an image Mwhen the image is read in the kernel. The built-in functions to read from an Nimage in a kernel take a sampler as an argument. The sampler arguments to the Nimage read function can be sampler objects created using OpenCL functions and Mpassed as argument values to the kernel or can be samplers declared inside a Pkernel. In this section we discuss how sampler objects are created using OpenCL  functions. IReturns a valid non-zero sampler object if the sampler object is created 8successfully. Otherwise, it throws one of the following CLError exceptions:  CL_INVALID_CONTEXT$ if context is not a valid context.  CL_INVALID_VALUE< if addressing_mode, filter_mode, or normalized_coords or a 4combination of these argument values are not valid.  CL_INVALID_OPERATION6 if images are not supported by any device associated with context (i.e. CL_DEVICE_IMAGE_SUPPORT" specified in the table of OpenCL &Device Queries for clGetDeviceInfo is 2).  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. (Increments the sampler reference count.  does an implicit  retain. Returns 6 if the function is executed successfully. It returns  2+ if sampler is not a valid sampler object. LDecrements the sampler reference count. The sampler object is deleted after I the reference count becomes zero and commands queued for execution on a 2 command-queue(s) that use sampler have finished.  returns  6 if the function is executed successfully. It returns 2 if ( sampler is not a valid sampler object. KReturn the sampler reference count. The reference count returned should be C considered immediately stale. It is unsuitable for general use in F applications. This feature is provided for identifying memory leaks. 3This function execute OpenCL clGetSamplerInfo with  . :Return the context specified when the sampler is created. 3This function execute OpenCL clGetSamplerInfo with . KReturn the value specified by addressing_mode argument to clCreateSampler. 3This function execute OpenCL clGetSamplerInfo with  . GReturn the value specified by filter_mode argument to clCreateSampler. 3This function execute OpenCL clGetSamplerInfo with . <Return the value specified by normalized_coords argument to  clCreateSampler. 3This function execute OpenCL clGetSamplerInfo with  . 5 5  :-Create a command-queue on a specific device. PThe OpenCL functions that are submitted to a command-queue are enqueued in the Gorder the calls are made but can be configured to execute in-order or Nout-of-order. The properties argument in clCreateCommandQueue can be used to specify the execution order. If the K! property of a command-queue is Rnot set, the commands enqueued to a command-queue execute in order. For example, if an application calls " to execute kernel A followed by a 7 to execute kernel B, the application can assume that Nkernel A finishes first and then kernel B is executed. If the memory objects Noutput by kernel A are inputs to kernel B then kernel B will see the correct Bdata in memory objects produced by execution of kernel A. If the K* property of a commandqueue is set, then Rthere is no guarantee that kernel A will finish before kernel B starts execution. PApplications can configure the commands enqueued to a command-queue to execute out-of-order by setting the K property of Othe command-queue. This can be specified when the command-queue is created or !can be changed dynamically using . In out-of-order Mexecution mode there is no guarantee that the enqueued commands will finish Pexecution in the order they were queued. As there is no guarantee that kernels 2will be executed in order, i.e. based on when the  calls Kare made within a command-queue, it is therefore possible that an earlier 5 call to execute kernel A identified by event A may  execute and/or finish later than a  call to execute Kkernel B which was called by the application at a later point in time. To Rguarantee a specific order of execution of kernels, a wait on a particular event R(in this case event A) can be used. The wait for event A can be specified in the event_wait_list argument to  for kernel B. LIn addition, a wait for events or a barrier command can be enqueued to the Mcommand-queue. The wait for events command ensures that previously enqueued Pcommands identified by the list of events to wait for have finished before the Jnext batch of commands is executed. The barrier command ensures that all Ppreviously enqueued commands in a command-queue have finished execution before (the next batch of commands is executed. RSimilarly, commands to read, write, copy or map memory objects that are enqueued after ,  or  Qcommands are not guaranteed to wait for kernels scheduled for execution to have completed (if the K property is set). To Censure correct ordering of commands, the event object returned by ,  or  can be Qused to enqueue a wait for event or a barrier command can be enqueued that must ?complete before reads or writes to the memory object(s) occur. .Increments the command_queue reference count.  Qperforms an implicit retain. This is very helpful for 3rd party libraries, which Ptypically get a command-queue passed to them by the application. However, it is Qpossible that the application may delete the command-queue without informing the Elibrary. Allowing functions to attach to (i.e. retain) and release a Ocommand-queue solves the problem of a command-queue being used by a library no longer being valid. Returns . if the function is executed successfully. It returns 22 if command_queue is not a valid command-queue. .Decrements the command_queue reference count. O After the command_queue reference count becomes zero and all commands queued I to command_queue have finished (e.g., kernel executions, memory object / updates, etc.), the command-queue is deleted.  Returns 6 if the function is executed successfully. It returns 2 0 if command_queue is not a valid command-queue. @Return the context specified when the command-queue is created. 8This function execute OpenCL clGetCommandQueueInfo with . ?Return the device specified when the command-queue is created. 8This function execute OpenCL clGetCommandQueueInfo with . *Return the command-queue reference count. M The reference count returned should be considered immediately stale. It is K unsuitable for general use in applications. This feature is provided for  identifying memory leaks. 8This function execute OpenCL clGetCommandQueueInfo with  . HReturn the currently specified properties for the command-queue. These 8 properties are specified by the properties argument in   , and can be changed by . 8This function execute OpenCL clGetCommandQueueInfo with  . BEnable or disable the properties of a command-queue. Returns the 5command-queue properties before they were changed by . As specified for , the K# command-queue property determines Awhether the commands in a command-queue are executed in-order or Iout-of-order. Changing this command-queue property will cause the OpenCL Nimplementation to block until all previously queued commands in command_queue Phave completed. This can be an expensive operation and therefore changes to the K# property should be only done when absolutely necessary. HIt is possible that a device(s) becomes unavailable after a context and Pcommand-queues that use this device(s) have been created and commands have been Qqueued to command-queues. In this case the behavior of OpenCL API calls that use 7this context (and command-queues) are considered to be Jimplementation-defined. The user callback function, if specified when the Kcontext is created, can be used to record appropriate information when the device becomes unavailable. FEnqueue commands to read from a buffer object to host memory. Calling PclEnqueueReadBuffer to read a region of the buffer object with the ptr argument Qvalue set to host_ptr + offset, where host_ptr is a pointer to the memory region <specified when the buffer object being read is created with CL_MEM_USE_HOST_PTR9, must meet the following requirements in order to avoid undefined behavior: M All commands that use this buffer object have finished execution before the read command begins execution ! The buffer object is not mapped O The buffer object is not used by any command-queue until the read command has finished execution Errors / returns the event if the function is executed )successfully. It can throw the following CLError exceptions:  CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_CONTEXT9 if the context associated with command_queue and buffer Oare not the same or if the context associated with command_queue and events in "event_wait_list are not the same.  CL_INVALID_MEM_OBJECT) if buffer is not a valid buffer object.  CL_INVALID_VALUE; if the region being read specified by (offset, cb) is out %of bounds or if ptr is a NULL value.  CL_INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and Knum_events_in_wait_list greater than 0, or event_wait_list is not NULL and Mnum_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory 'for data store associated with buffer.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. FEnqueue commands to write to a buffer object from host memory.Calling PclEnqueueWriteBuffer to update the latest bits in a region of the buffer object Jwith the ptr argument value set to host_ptr + offset, where host_ptr is a Opointer to the memory region specified when the buffer object being written is  created with CL_MEM_USE_HOST_PTR*, must meet the following requirements in #order to avoid undefined behavior: M The host memory region given by (host_ptr + offset, cb) contains the latest 7bits when the enqueued write command begins execution. " The buffer object is not mapped. L The buffer object is not used by any command-queue until the write command has finished execution. / returns the Event if the function is executed )successfully. It can throw the following CLError exceptions:  CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_CONTEXT9 if the context associated with command_queue and buffer Oare not the same or if the context associated with command_queue and events in "event_wait_list are not the same.  CL_INVALID_MEM_OBJECT) if buffer is not a valid buffer object.  CL_INVALID_VALUE: if the region being written specified by (offset, cb) is )out of bounds or if ptr is a NULL value.  CL_INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and Knum_events_in_wait_list greater than 0, or event_wait_list is not NULL and Mnum_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory 'for data store associated with buffer.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. HEnqueues a command to read from a 2D or 3D image object to host memory. PReturns an event object that identifies this particular read command and can be Qused to query or queue a wait for this particular command to complete. event can Obe NULL in which case it will not be possible for the application to query the Estatus of this command or queue a wait for this command to complete. Notes If blocking is $ i.e. the read command is blocking,  Kdoes not return until the buffer data has been read and copied into memory pointed to by ptr. If blocking_read is 2% i.e. map operation is non-blocking, 5 queues a non-blocking read command and returns. The Pcontents of the buffer that ptr points to cannot be used until the read command Ohas completed. The event argument returns an event object which can be used to Jquery the execution status of the read command. When the read command has Lcompleted, the contents of the buffer that ptr points to can be used by the  application. Calling 3 to read a region of the image object with the ptr Largument value set to host_ptr + (origin.z * image slice pitch + origin.y * Nimage row pitch + origin.x * bytes per pixel), where host_ptr is a pointer to Mthe memory region specified when the image object being read is created with CL_MEM_USE_HOST_PTR9, must meet the following requirements in order to avoid undefined behavior: L All commands that use this image object have finished execution before the read command begins execution. M The row_pitch and slice_pitch argument values in clEnqueueReadImage must be ,set to the image row pitch and slice pitch. ! The image object is not mapped. N The image object is not used by any command-queue until the read command has finished execution.  returns the  if the function is executed )successfully. It can throw the following CLError exceptions:  CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_CONTEXT8 if the context associated with command_queue and image Oare not the same or if the context associated with command_queue and events in "event_wait_list are not the same.  CL_INVALID_MEM_OBJECT' if image is not a valid image object.  CL_INVALID_VALUE< if the region being read specified by origin and region is ,out of bounds or if ptr is a nullPtr value.  CL_INVALID_VALUE: if image is a 2D image object and z is not equal to 0 or :depth is not equal to 1 or slice_pitch is not equal to 0.  CL_INVALID_EVENT_WAIT_LIST- if event objects in event_wait_list are not valid events.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory &for data store associated with image.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. Refers to the command-queue in  which the read command will be & queued. command_queue and image must ! be created with the same OpenCL  contex )Refers to a valid 2D or 3D image object. .Indicates if the read operations are blocking  or non-blocking. *Defines the (x, y, z) offset in pixels in - the image from where to read. If image is a , 2D image object, the z value given must be  0. &Defines the (width, height, depth) in ( pixels of the 2D or 3D rectangle being * read. If image is a 2D image object, the  depth value given must be 1. 1The length of each row in bytes. This value must 1 be greater than or equal to the element size in . bytes * width. If row_pitch is set to 0, the 2 appropriate row pitch is calculated based on the 4 size of each element in bytes multiplied by width. /Size in bytes of the 2D slice of the 3D region 3 of a 3D image being read. This must be 0 if image 3 is a 2D image. This value must be greater than or 4 equal to row_pitch * height. If slice_pitch is set 1 to 0, the appropriate slice pitch is calculated " based on the row_pitch * height. 'The pointer to a buffer in host memory & where image data is to be read from. %Specify events that need to complete ' before this particular command can be ( executed. If event_wait_list is empty, , then this particular command does not wait & on any event to complete. The events  specified in the list act as % synchronization points. The context + associated with events in event_wait_list % and command_queue must be the same. IEnqueues a command to write from a 2D or 3D image object to host memory. QReturns an event object that identifies this particular write command and can be Qused to query or queue a wait for this particular command to complete. event can Obe NULL in which case it will not be possible for the application to query the Estatus of this command or queue a wait for this command to complete. Notes If blocking_write is 4 the OpenCL implementation copies the data referred Jto by ptr and enqueues the write command in the command-queue. The memory =pointed to by ptr can be reused by the application after the  call returns. If blocking_write is 25 the OpenCL implementation will use ptr to perform a Nnonblocking write. As the write is non-blocking the implementation can return Nimmediately. The memory pointed to by ptr cannot be reused by the application Pafter the call returns. The event argument returns an event object which can be Pused to query the execution status of the write command. When the write command Fhas completed, the memory pointed to by ptr can then be reused by the  application. Calling 4 to update the latest bits in a region of the image Mobject with the ptr argument value set to host_ptr + (origin.z * image slice Qpitch + origin.y * image row pitch + origin.x * bytes per pixel), where host_ptr Pis a pointer to the memory region specified when the image object being written is created with CL_MEM_USE_HOST_PTR*, must meet the following requirements in #order to avoid undefined behavior: H The host memory region being written contains the latest bits when the )enqueued write command begins execution. > The input_row_pitch and input_slice_pitch argument values in HclEnqueueWriteImage must be set to the image row pitch and slice pitch. ! The image object is not mapped. O The image object is not used by any command-queue until the write command has finished execution.  returns the  if the function is executed )successfully. It can throw the following CLError exceptions:  CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_CONTEXT8 if the context associated with command_queue and image Oare not the same or if the context associated with command_queue and events in "event_wait_list are not the same.  CL_INVALID_MEM_OBJECT' if image is not a valid image object.  CL_INVALID_VALUE: if the region being write or written specified by origin 7and region is out of bounds or if ptr is a NULL value.  CL_INVALID_VALUE: if image is a 2D image object and z is not equal to 0 or :depth is not equal to 1 or slice_pitch is not equal to 0.  CL_INVALID_EVENT_WAIT_LIST- if event objects in event_wait_list are not valid events.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory &for data store associated with image.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. Refers to the command-queue in ! which the write command will be & queued. command_queue and image must ! be created with the same OpenCL  contex )Refers to a valid 2D or 3D image object. -Indicates if the write operation is blocking  or non-blocking. *Defines the (x, y, z) offset in pixels in , the image from where to write or write. If ) image is a 2D image object, the z value  given must be 0. &Defines the (width, height, depth) in ( pixels of the 2D or 3D rectangle being * write or written. If image is a 2D image * object, the depth value given must be 1. ,The length of each row in bytes. This value 3 must be greater than or equal to the element size 3 in bytes * width. If input_row_pitch is set to 0, 2 the appropriate row pitch is calculated based on 1 the size of each element in bytes multiplied by  width. /Size in bytes of the 2D slice of the 3D region 0 of a 3D image being written. This must be 0 if 1 image is a 2D image. This value must be greater ) than or equal to row_pitch * height. If 0 input_slice_pitch is set to 0, the appropriate 2 slice pitch is calculated based on the row_pitch  * height. 'The pointer to a buffer in host memory ' where image data is to be written to. %Specify events that need to complete ' before this particular command can be ( executed. If event_wait_list is empty, ' then this particular command does not + wait on any event to complete. The events % specified in event_wait_list act as % synchronization points. The context + associated with events in event_wait_list % and command_queue must be the same. *Enqueues a command to copy image objects. Notes LIt is currently a requirement that the src_image and dst_image image memory  objects for 1 must have the exact same image format (i.e. the  CLImageFormat? descriptor specified when src_image and dst_image are created  must match). Qsrc_image and dst_image can be 2D or 3D image objects allowing us to perform the following actions: . Copy a 2D image object to a 2D image object. < Copy a 2D image object to a 2D slice of a 3D image object. < Copy a 2D slice of a 3D image object to a 2D image object. . Copy a 3D image object to a 3D image object.  returns the  if the function is executed )successfully. It can throw the following CLError exceptions:   'HCL_INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.  'KCL_INVALID_CONTEXT if the context associated with command_queue, src_image Oand dst_image are not the same or if the context associated with command_queue 0and events in event_wait_list are not the same.  'ECL_INVALID_MEM_OBJECT if src_image and dst_image are not valid image  objects.  'HCL_IMAGE_FORMAT_MISMATCH if src_image and dst_image do not use the same image format.  'LCL_INVALID_VALUE if the 2D or 3D rectangular region specified by src_origin Qand src_origin + region refers to a region outside src_image, or if the 2D or 3D Orectangular region specified by dst_origin and dst_origin + region refers to a region outside dst_image.  'KCL_INVALID_VALUE if src_image is a 2D image object and src_origin.z is not .equal to 0 or region.depth is not equal to 1.  'KCL_INVALID_VALUE if dst_image is a 2D image object and dst_origen.z is not .equal to 0 or region.depth is not equal to 1.  'MCL_INVALID_EVENT_WAIT_LIST if event objects in event_wait_list are not valid events.  'JCL_MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory 7for data store associated with src_image or dst_image.  'KCL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required *by the OpenCL implementation on the host.  'MCL_MEM_COPY_OVERLAP if src_image and dst_image are the same image object and ,the source and destination regions overlap. Refers to the command-queue in  which the copy command will be ' queued. The OpenCL context associated # with command_queue, src_image and  dst_image must be the same. src dst +Defines the starting (x, y, z) location in - pixels in src_image from where to start the ' data copy. If src_image is a 2D image & object, the z value given must be 0. +Defines the starting (x, y, z) location in - pixels in dst_image from where to start the ' data copy. If dst_image is a 2D image & object, the z value given must be 0. &Defines the (width, height, depth) in . pixels of the 2D or 3D rectangle to copy. If . src_image or dst_image is a 2D image object, " the depth value given must be 1. %Specify events that need to complete ' before this particular command can be - executed. If event_wait_list is empty, then * this particular command does not wait on  any event to complete. ?Enqueues a command to copy an image object to a buffer object. PReturns an event object that identifies this particular copy command and can be Qused to query or queue a wait for this particular command to complete. event can Obe NULL in which case it will not be possible for the application to query the ;status of this command or queue a wait for this command to  complete.  can be used instead.  returns the  if the function is executed )successfully. It can throw the following CLError exceptions: I CL_INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue. L CL_INVALID_CONTEXT if the context associated with command_queue, src_image Pand dst_buffer are not the same or if the context associated with command_queue 0and events in event_wait_list are not the same. O CL_INVALID_MEM_OBJECT if src_image is not a valid image object and dst_buffer is not a valid buffer object. M CL_INVALID_VALUE if the 2D or 3D rectangular region specified by src_origin Oand src_origin + region refers to a region outside src_image, or if the region Kspecified by dst_offset and dst_offset + dst_cb refers to a region outside  dst_buffer. L CL_INVALID_VALUE if src_image is a 2D image object and src_origin.z is not .equal to 0 or region.depth is not equal to 1. N CL_INVALID_EVENT_WAIT_LIST if event objects in event_wait_list are not valid events. O CL_MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for 4data store associated with src_image or dst_buffer. O CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by 'the OpenCL implementation on the host. The OpenCL context  associated with  command_queue, src_image, and  dst_buffer must be the same. src. A valid image object. dst. A valid buffer object.  Defines the (x, y, z) offset in # pixels in the image from where to " copy. If src_image is a 2D image & object, the z value given must be 0. #Defines the (width, height, depth) % in pixels of the 2D or 3D rectangle % to copy. If src_image is a 2D image $ object, the depth value given must  be 1. 'The offset where to begin copying data + into dst_buffer. The size in bytes of the + region to be copied referred to as dst_cb ) is computed as width * height * depth *  bytes/#image element if src_image is a 3D ) image object and is computed as width *  height * bytes/image element if src_image  is a 2D image object. Specify events that need to ! complete before this particular  command can be executed. If  event_wait_list is empty, then " this particular command does not $ wait on any event to complete. The  events specified in  event_wait_list act as  synchronization points. The # context associated with events in # event_wait_list and command_queue  must be the same. ?Enqueues a command to copy a buffer object to an image object. LThe size in bytes of the region to be copied from src_buffer referred to as 4src_cb is computed as width * height * depth * bytes/image element if dst_image >is a 3D image object and is computed as width * height * bytes/image element if  dst_image is a 2D image object. PReturns an event object that identifies this particular copy command and can be Qused to query or queue a wait for this particular command to complete. event can Obe NULL in which case it will not be possible for the application to query the ;status of this command or queue a wait for this command to  complete.  can be used instead.  returns the  if the function is executed )successfully. It can throw the following CLError exceptions:  CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_CONTEXT: if the context associated with command_queue, src_buffer Oand dst_image are not the same or if the context associated with command_queue 0and events in event_wait_list are not the same.  CL_INVALID_MEM_OBJECT0 if src_buffer is not a valid buffer object and 'dst_image is not a valid image object.  CL_INVALID_VALUE< if the 2D or 3D rectangular region specified by dst_origin Pand dst_origin + region refers to a region outside dst_origin, or if the region Kspecified by src_offset and src_offset + src_cb refers to a region outside  src_buffer.  CL_INVALID_VALUE; if dst_image is a 2D image object and dst_origin.z is not .equal to 0 or region.depth is not equal to 1.  CL_INVALID_EVENT_WAIT_LIST- if event objects in event_wait_list are not valid events.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory 8for data store associated with src_buffer or dst_image.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. The OpenCL context  associated with  command_queue, src_image, and  dst_buffer must be the same. src. A valid buffer object. dst. A valid image object. 'The offset where to begin copying data  from src_buffer. The (x, y, z) offset in pixels  where to begin copying data to ! dst_image. If dst_image is a 2D $ image object, the z value given by  must be 0. #Defines the (width, height, depth) % in pixels of the 2D or 3D rectangle % to copy. If dst_image is a 2D image " object, the depth value given by  must be 1. Specify events that need to ! complete before this particular  command can be executed. If  event_wait_list is empty, then " this particular command does not $ wait on any event to complete. The  events specified in  event_wait_list act as  synchronization points. The # context associated with events in # event_wait_list and command_queue  must be the same. MEnqueues a command to map a region of the buffer object given by buffer into Dthe host address space and returns a pointer to this mapped region. If blocking_map is ,  does not return until the *specified region in buffer can be mapped. If blocking_map is 24 i.e. map operation is non-blocking, the pointer to the mapped region returned by  cannot be used until the map Ocommand has completed. The event argument returns an event object which can be Oused to query the execution status of the map command. When the map command is Ncompleted, the application can access the contents of the mapped region using the pointer returned by . PReturns an event object that identifies this particular copy command and can be Pused toquery or queue a wait for this particular command to complete. event can Obe NULL in which case it will not be possible for the application to query the Estatus of this command or queue a wait for this command to complete. BThe contents of the regions of a memory object mapped for writing (i.e. ! is set in map_flags argument to  or 6) are considered to be undefined until this region is Iunmapped. Reads and writes by a kernel executing on a device to a memory ,region(s) mapped for writing are undefined. LMultiple command-queues can map a region or overlapping regions of a memory %object for reading (i.e. map_flags = ). The contents of the regions Qof a memory object mapped for reading can also be read by kernels executing on a Pdevice(s). The behavior of writes by a kernel executing on a device to a mapped Kregion of a memory object is undefined. Mapping (and unmapping) overlapped Eregions of a buffer or image memory object for writing is undefined. OThe behavior of OpenCL function calls that enqueue commands that write or copy <to regions of a memory object that are mapped is undefined. < will return a pointer to the mapped region if the function Nis executed successfully. A nullPtr pointer is returned otherwise with one of the following exception:  CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_CONTEXT9 if the context associated with command_queue, src_image Pand dst_buffer are not the same or if the context associated with command_queue 0and events in event_wait_list are not the same.  CL_INVALID_MEM_OBJECT) if buffer is not a valid buffer object.  CL_INVALID_VALUE8 if region being mapped given by (offset, cb) is out of 9bounds or if values specified in map_flags are not valid  CL_INVALID_EVENT_WAIT_LIST- if event objects in event_wait_list are not valid events.  CL_MAP_FAILURE< if there is a failure to map the requested region into the Lhost address space. This error cannot occur for buffer objects created with CL_MEM_USE_HOST_PTR or CL_MEM_ALLOC_HOST_PTR.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory 'for data store associated with buffer.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. QThe pointer returned maps a region starting at offset and is atleast cb bytes in Fsize. The result of a memory access outside this region is undefined. *A valid buffer object. The OpenCL context / associated with command_queue and buffer must  be the same. .Indicates if the map operation is blocking or  non-blocking. Is a list and can be set to   to indicate that the ) region specified by (offset, cb) in the # buffer object is being mapped for  reading, and/or  to ' indicate that the region specified by & (offset, cb) in the buffer object is  being mapped for writing. 0The offset in bytes of the region in the buffer  object that is being mapped. .The size in bytes of the region in the buffer  object that is being mapped. %Specify events that need to complete ' before this particular command can be ( executed. If event_wait_list is empty, , then this particular command does not wait & on any event to complete. The events % specified in event_wait_list act as % synchronization points. The context + associated with events in event_wait_list % and command_queue must be the same. LEnqueues a command to map a region of an image object into the host address 3space and returns a pointer to this mapped region. If blocking_map is 24 i.e. map operation is non-blocking, the pointer to the mapped region returned by  cannot be used until the map Ocommand has completed. The event argument returns an event object which can be Oused to query the execution status of the map command. When the map command is Ncompleted, the application can access the contents of the mapped region using the pointer returned by . PReturns an event object that identifies this particular copy command and can be Qused to query or queue a wait for this particular command to complete. event can Obe NULL in which case it will not be possible for the application to query the Estatus of this command or queue a wait for this command to complete. .If the buffer or image object is created with CL_MEM_USE_HOST_PTR set in 'mem_flags, the following will be true:  The host_ptr specified in clCreateBuffer, clCreateImage2D, or clCreateImage3D> is guaranteed to contain the latest bits in the region being mapped when the  or  command has  completed.  The pointer value returned by  or  Owill be derived from the host_ptr specified when the buffer or image object is  created. BThe contents of the regions of a memory object mapped for writing (i.e. ! is set in map_flags argument to  or 6) are considered to be undefined until this region is Iunmapped. Reads and writes by a kernel executing on a device to a memory ,region(s) mapped for writing are undefined. LMultiple command-queues can map a region or overlapping regions of a memory %object for reading (i.e. map_flags = ). The contents of the regions Qof a memory object mapped for reading can also be read by kernels executing on a Pdevice(s). The behavior of writes by a kernel executing on a device to a mapped Kregion of a memory object is undefined. Mapping (and unmapping) overlapped Eregions of a buffer or image memory object for writing is undefined. OThe behavior of OpenCL function calls that enqueue commands that write or copy <to regions of a memory object that are mapped is undefined. 3 will return a pointer to the mapped region if the Nfunction is executed successfully also the scan-line (row) pitch in bytes for Hthe mapped region and the size in bytes of each 2D slice for the mapped Nregion. For a 2D image, zero is returned as slice pitch. A nullPtr pointer is 8returned otherwise with one of the following exception:   CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_CONTEXT8 if the context associated with command_queue and image Oare not the same or if the context associated with command_queue and events in "event_wait_list are not the same.  CL_INVALID_MEM_OBJECT' if image is not a valid image object.  CL_INVALID_VALUE< if region being mapped given by (origin, origin+region) is Aout of bounds or if values specified in map_flags are not valid.  CL_INVALID_VALUE: if image is a 2D image object and z is not equal to 0 or depth is not equal to 1.  CL_INVALID_EVENT_WAIT_LIST- if event objects in event_wait_list are not valid events.  CL_MAP_FAILURE< if there is a failure to map the requested region into the Khost address space. This error cannot occur for image objects created with CL_MEM_USE_HOST_PTR or CL_MEM_ALLOC_HOST_PTR.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory &for data store associated with image.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. NThe pointer returned maps a 2D or 3D region starting at origin and is atleast H(image_row_pitch * y + x) pixels in size for a 2D image, and is atleast (image_slice_pitch * z]4 + image_row_pitch * y + x) pixels in size for a 3D Gimage. The result of a memory access outside this region is undefined. )A valid image object. The OpenCL context 1 associated with command_queue and image must be  the same. .Indicates if the map operation is blocking or " non-blocking. If blocking_map is ,   does not return until the * specified region in image can be mapped. !Is a bit-field and can be set to   to indicate that the region & specified by (origin, region) in the + image object is being mapped for reading,  and/or  to indicate that the ) region specified by (origin, region) in & the image object is being mapped for  writing. )Define the (x, y, z) offset in pixels of - the 2D or 3D rectangle region that is to be . mapped. If image is a 2D image object, the z  value given must be 0. ,Define the (width, height, depth) in pixels - of the 2D or 3D rectangle region that is to / be mapped. If image is a 2D image object, the  depth value given must be 1. %Specify events that need to complete  before  can be - executed. If event_wait_list is empty, then   does not wait on any , event to complete. The events specified in ( event_wait_list act as synchronization , points. The context associated with events + in event_wait_list and command_queue must  be the same. KEnqueues a command to unmap a previously mapped region of a memory object. PReturns an event object that identifies this particular copy command and can be Qused to query or queue a wait for this particular command to complete. event can Obe NULL in which case it will not be possible for the application to query the ;status of this command or queue a wait for this command to  complete.  can be used instead. <Reads or writes from the host using the pointer returned by  or  are considered to be complete.  and $ increments the mapped count of the Dmemory object. The initial mapped count value of a memory object is zero. Multiple calls to  or  on the same Hmemory object will increment this mapped count by appropriate number of calls. + decrements the mapped count of the memory object.  and % act as synchronization points for a *region of the memory object being mapped.  returns the  if the function is executed )successfully. It can throw the following CLError exceptions: I CL_INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue. ? CL_INVALID_MEM_OBJECT if memobj is not a valid memory object. C CL_INVALID_VALUE if mapped_ptr is not a valid pointer returned by  or  for memobj. N CL_INVALID_EVENT_WAIT_LIST if event objects in event_wait_list are not valid events. O CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by 'the OpenCL implementation on the host. L CL_INVALID_CONTEXT if the context associated with command_queue and memobj Oare not the same or if the context associated with command_queue and events in "event_wait_list are not the same. "A valid memory object. The OpenCL + context associated with command_queue and  memobj must be the same. The host address returned by a  previous call to  or   for memobj. Specify events that need to  complete before   can be ! executed. If event_wait_list is  empty, then   does not wait on any event to # complete. The events specified in  event_wait_list act as % synchronization points. The context  associated with events in # event_wait_list and command_queue  must be the same. FEnqueues a command to execute a kernel on a device. Each work-item is Muniquely identified by a global identifier. The global ID, which can be read Minside the kernel, is computed using the value given by global_work_size and Kglobal_work_offset. In OpenCL 1.0, the starting global ID is always (0, 0, M... 0). In addition, a work-item is also identified within a work-group by a Qunique local ID. The local ID, which can also be read by the kernel, is computed Qusing the value given by local_work_size. The starting local ID is always (0, 0, ... 0). PReturns the event if the kernel execution was successfully queued. It can throw the following CLError exceptions:   CL_INVALID_PROGRAM_EXECUTABLE+ if there is no successfully built program ?executable available for device associated with command_queue.  CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_KERNEL) if kernel is not a valid kernel object.  CL_INVALID_CONTEXT8 if context associated with command_queue and kernel is Knot the same or if the context associated with command_queue and events in "event_wait_list are not the same.  CL_INVALID_KERNEL_ARGS- if the kernel argument values have not been  specified.  CL_INVALID_WORK_DIMENSION0 if work_dim is not a valid value (i.e. a value between 1 and 3).  CL_INVALID_WORK_GROUP_SIZE/ if local_work_size is specified and number of Lwork-items specified by global_work_size is not evenly divisable by size of Jwork-group given by local_work_size or does not match the work-group size Nspecified for kernel using the __attribute__((reqd_work_group_size(X, Y, Z))) qualifier in program source.  CL_INVALID_WORK_GROUP_SIZE/ if local_work_size is specified and the total Dnumber of work-items in the work-group computed as local_work_size[0] !*... local_work_size[work_dim - 1]( is greater than the value specified by CL_DEVICE_MAX_WORK_GROUP_SIZE+ in the table of OpenCL Device Queries for clGetDeviceInfo.  CL_INVALID_WORK_GROUP_SIZE$ if local_work_size is NULL and the P__attribute__((reqd_work_group_size(X, Y, Z))) qualifier is used to declare the 2work-group size for kernel in the program source.  CL_INVALID_WORK_ITEM_SIZE1 if the number of work-items specified in any of local_work_size[0]", ... local_work_size[work_dim - 1] is greater than the "corresponding values specified by CL_DEVICE_MAX_WORK_ITEM_SIZES[0], .... CL_DEVICE_MAX_WORK_ITEM_SIZES [work_dim - 1].  CL_OUT_OF_RESOURCES7 if there is a failure to queue the execution instance Kof kernel on the command-queue because of insufficient resources needed to Qexecute the kernel. For example, the explicitly specified local_work_size causes Ja failure to execute the kernel because of insufficient resources such as Lregisters or local memory. Another example would be the number of read-only %image args used in kernel exceed the CL_DEVICE_MAX_READ_IMAGE_ARGS value for Hdevice or the number of write-only image args used in kernel exceed the CL_DEVICE_MAX_WRITE_IMAGE_ARGS1 value for device or the number of samplers used in kernel exceed CL_DEVICE_MAX_SAMPLERS for device.   CL_MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with image or buffer objects specified as arguments to kernel.  CL_OUT_OF_HOST_MEMORY9 if there is a failure to allocate resources required by 'the OpenCL implementation on the host. KEnqueues a command to execute a kernel on a device. The kernel is executed using a single work-item.  is equivalent to calling  with work_dim = 1, global_work_offset = [], global_work_size[0] set to 1, and local_work_size[0] set to 1. PReturns the evens if the kernel execution was successfully queued. It can throw the following CLError exceptions:   CL_INVALID_PROGRAM_EXECUTABLE+ if there is no successfully built program ?executable available for device associated with command_queue.  'CL_INVALID_COMMAND_QUEUE if'- command_queue is not a valid command-queue.  CL_INVALID_KERNEL) if kernel is not a valid kernel object.  CL_INVALID_CONTEXT8 if context associated with command_queue and kernel is Knot the same or if the context associated with command_queue and events in "event_wait_list are not the same.  CL_INVALID_KERNEL_ARGS8 if the kernel argument values have not been specified.  CL_INVALID_WORK_GROUP_SIZE. if a work-group size is specified for kernel Nusing the __attribute__((reqd_work_group_size(X, Y, Z))) qualifier in program source and is not (1, 1, 1).  CL_OUT_OF_RESOURCES7 if there is a failure to queue the execution instance Kof kernel on the command-queue because of insufficient resources needed to execute the kernel.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory Qfor data store associated with image or buffer objects specified as arguments to kernel.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. (Enqueues a command to execute a native C/$C++ function not compiled using the POpenCL compiler. A native user function can only be executed on a command-queue created on a device that has CL_EXEC_NATIVE_KERNEL capability set in  clGetDeviceExecutionCapabilities. KThe data pointed to by args and cb_args bytes in size will be copied and a Ppointer to this copied region will be passed to user_func. The copy needs to be !done because the memory objects (' values) that args may contain need to Hbe modified and replaced by appropriate pointers to global memory. When 6 returns, the memory region pointed to by args can be reused by the application. PReturns the evens if the kernel execution was successfully queued. It can throw the following CLError exceptions:   CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_CONTEXT8 if context associated with command_queue and events in "event-wait_list are not the same.  CL_INVALID_VALUE; if args is a NULL value and cb_args is greater than 0, or ?if args is a NULL value and num_mem_objects is greater than 0.  CL_INVALID_VALUE' if args is not NULL and cb_args is 0.  CL_INVALID_OPERATION- if device cannot execute the native kernel.  CL_INVALID_MEM_OBJECT5 if one or more memory objects specified in mem_list )are not valid or are not buffer objects.  CL_OUT_OF_RESOURCES7 if there is a failure to queue the execution instance Kof kernel on the command-queue because of insufficient resources needed to execute the kernel.   CL_MEM_OBJECT_ALLOCATION_FAILURE* if there is a failure to allocate memory Pfor data store associated with buffer objects specified as arguments to kernel.  CL_INVALID_EVENT_WAIT_LIST- if event objects in event_wait_list are not valid events.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. JEnqueues a marker command to command_queue. The marker command returns an L event which can be used to queue a wait on this marker event i.e. wait for N all commands queued before the marker command to complete. Returns the event 8 if the function is successfully executed. It throw the CLError exception  CL_INVALID_COMMAND_QUEUE3 if command_queue is not a valid command-queue and  throw CL_OUT_OF_HOST_MEMORY- if there is a failure to allocate resources 4 required by the OpenCL implementation on the host. LEnqueues a wait for a specific event or a list of events to complete before Jany future commands queued in the command-queue are executed. The context Iassociated with events in event_list and command_queue must be the same. It can throw the following CLError exceptions:  CL_INVALID_COMMAND_QUEUE0 if command_queue is not a valid command-queue.  CL_INVALID_CONTEXT9 if the context associated with command_queue and events  in event_list are not the same.  CL_INVALID_VALUE if num_events is zero.  CL_INVALID_EVENT8 if event objects specified in event_list are not valid events.  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required *by the OpenCL implementation on the host. 9 is a synchronization point that ensures that all queued L commands in command_queue have finished execution before the next batch of ) commands can begin execution. It throws CL_INVALID_COMMAND_QUEUE if 7 command_queue is not a valid command-queue and throws  CL_OUT_OF_HOST_MEMORY6 if there is a failure to allocate resources required + by the OpenCL implementation on the host. GIssues all previously queued OpenCL commands in a command-queue to the +device associated with the command-queue.  only guarantees that all Pqueued commands to command_queue get issued to the appropriate device. There is .no guarantee that they will be complete after  returns.  returns 4 if the function call was executed successfully. It returns 2@ if command_queue is not a valid command-queue or if there is a Qfailure to allocate resources required by the OpenCL implementation on the host. 8Any blocking commands queued in a command-queue such as  or  with blocking_read set to ,  or  with blocking_write set to ,  or  with blocking_map set to  or clWaitForEvents 0perform an implicit flush of the command-queue. KTo use event objects that refer to commands enqueued in a command-queue as Pevent objects to wait on by commands enqueued in a different command-queue, the application must call a * or any blocking commands that perform an Qimplicit flush of the command-queue where the commands that refer to these event objects are enqueued. KBlocks until all previously queued OpenCL commands in a command-queue are 5 issued to the associated device and have completed.  B does not return until all queued commands in command_queue have  been processed and completed. " is also a synchronization point.  returns 5 if the function call was executed successfully. It  returns 2? if command_queue is not a valid command-queue or if there is O a failure to allocate resources required by the OpenCL implementation on the  host. !IJK!IKJ?Specifies a context property name and its corresponding value. Specifies the platform to use. Creates an OpenCL context. N An OpenCL context is created with one or more devices. Contexts are used by J the OpenCL runtime for managing objects such as command-queues, memory, N program and kernel objects and for executing kernels on one or more devices  specified in the context. JCreate an OpenCL context from a device type that identifies the specific  device(s) to use. 'Increment the context reference count.   and  perform an implicit retain. N This is very helpful for 3rd party libraries, which typically get a context F passed to them by the application. However, it is possible that the M application may delete the context without informing the library. Allowing H functions to attach to (i.e. retain) and release a context solves the E problem of a context being used by a library no longer being valid.  Returns . if the function is executed successfully, or 2 if ( context is not a valid OpenCL context. 'Decrement the context reference count. N After the context reference count becomes zero and all the objects attached H to context (such as memory objects, command-queues) are released, the  context is deleted.  Returns . if the function is executed successfully, or 2 if ( context is not a valid OpenCL context. LReturn the context reference count. The reference count returned should be D considered immediately stale. It is unsuitable for general use in F applications. This feature is provided for identifying memory leaks. 3This function execute OpenCL clGetContextInfo with . 'Return the list of devices in context. 3This function execute OpenCL clGetContextInfo with . z      !"#$%&'()*+,-./0123456789:;<=>?JObtain the list of platforms available. Returns the list if the function @ is executed successfully. Otherwise it returns the empty list. @JGet specific information about the OpenCL platform. It returns Nothing if # platform is not a valid platform. AIObtain the list of devices available on a platform. Returns the list if M the function is executed successfully. Otherwise it returns the empty list H if platform is not a valid platform or no OpenCL devices that matched  device_type were found. BCDEFGHHThe default compute device address space size specified as an unsigned F integer value in bits. Currently supported values are 32 or 64 bits. 2This function execute OpenCL clGetDeviceInfo with :. Is  if the device is available and 2 if the device is not  available. 2This function execute OpenCL clGetDeviceInfo with 9. Is 2> if the implementation does not have a compiler available to  compile the program source. Is ) if the compiler is available. This can  be 2* for the embededed platform profile only. 2This function execute OpenCL clGetDeviceInfo with  8. JDescribes the OPTIONAL double precision floating-point capability of the G OpenCL device. This is a bit-field that describes one or more of the  B values. E The mandated minimum double precision floating-point capability is  C | F | E |  D | G | H. 2This function execute OpenCL clGetDeviceInfo with  7. Is 4 if the OpenCL device is a little endian device and 2  otherwise. 2This function execute OpenCL clGetDeviceInfo with 6. Is > if the device implements error correction for the memories, * caches, registers etc. in the device. Is 2 if the device does not O implement error correction. This can be a requirement for certain clients of  OpenCL. 2This function execute OpenCL clGetDeviceInfo with  5. IDescribes the execution capabilities of the device. This is a list that  describes one or more of the ? values. $ The mandated minimum capability is A. 2This function execute OpenCL clGetDeviceInfo with  4. HReturns a space separated list of extension names (the extension names N themselves do not contain any spaces). The list of extension names returned N currently can include one or more of the following approved extension names:   cl_khr_fp64  cl_khr_select_fprounding_mode " cl_khr_global_int32_base_atomics & cl_khr_global_int32_extended_atomics ! cl_khr_local_int32_base_atomics % cl_khr_local_int32_extended_atomics  cl_khr_int64_base_atomics  cl_khr_int64_extended_atomics  cl_khr_3d_image_writes  cl_khr_byte_addressable_store  cl_khr_fp16 2This function execute OpenCL clGetDeviceInfo with 3. &Size of global memory cache in bytes. 2This function execute OpenCL clGetDeviceInfo with  2. 9Type of global memory cache supported. Valid values are: >,  =, and <. 2This function execute OpenCL clGetDeviceInfo with  1. +Size of global memory cache line in bytes. 2This function execute OpenCL clGetDeviceInfo with  0.  'Size of global device memory in bytes. 2This function execute OpenCL clGetDeviceInfo with  /.  HDescribes the OPTIONAL half precision floating-point capability of the G OpenCL device. This is a bit-field that describes one or more of the  B values. O The required minimum half precision floating-point capability as implemented  by this extension is E | D |  G. 2This function execute OpenCL clGetDeviceInfo with ..  Is 2 if images are supported by the OpenCL device and 2 otherwise. 2This function execute OpenCL clGetDeviceInfo with -.  ?Max height of 2D image in pixels. The minimum value is 8192 if    is . 2This function execute OpenCL clGetDeviceInfo with  ,.  >Max width of 2D image in pixels. The minimum value is 8192 if    is . 2This function execute OpenCL clGetDeviceInfo with  +. ?Max depth of 3D image in pixels. The minimum value is 2048 if    is . 2This function execute OpenCL clGetDeviceInfo with  *. @Max height of 3D image in pixels. The minimum value is 2048 if    is . 2This function execute OpenCL clGetDeviceInfo with  ). ?Max width of 3D image in pixels. The minimum value is 2048 if    is . 2This function execute OpenCL clGetDeviceInfo with  (. ASize of local memory arena in bytes. The minimum value is 16 KB. 2This function execute OpenCL clGetDeviceInfo with '. 3Type of local memory supported. This can be set to : implying 1 dedicated local memory storage such as SRAM, or 9. 2This function execute OpenCL clGetDeviceInfo with &. 9Maximum configured clock frequency of the device in MHz. 2This function execute OpenCL clGetDeviceInfo with  %. HThe number of parallel compute cores on the OpenCL device. The minimum  value is 1. 2This function execute OpenCL clGetDeviceInfo with  $. MMax number of arguments declared with the __constant qualifier in a kernel.  The minimum value is 8. 2This function execute OpenCL clGetDeviceInfo with  #. IMax size in bytes of a constant buffer allocation. The minimum value is  64 KB. 2This function execute OpenCL clGetDeviceInfo with  ". IMax size of memory object allocation in bytes. The minimum value is max  (1/4th of  , 128*1024*1024) 2This function execute OpenCL clGetDeviceInfo with !. HMax size in bytes of the arguments that can be passed to a kernel. The  minimum value is 256. 2This function execute OpenCL clGetDeviceInfo with   . LMax number of simultaneous image objects that can be read by a kernel. The  minimum value is 128 if   is . 2This function execute OpenCL clGetDeviceInfo with  . LMaximum number of samplers that can be used in a kernel. The minimum value  is 16 if   is . (Also see sampler type.) 2This function execute OpenCL clGetDeviceInfo with . KMaximum number of work-items in a work-group executing a kernel using the * data parallel execution model. (Refer to clEnqueueNDRangeKernel). The  minimum value is 1. 2This function execute OpenCL clGetDeviceInfo with  . LMaximum dimensions that specify the global and local work-item IDs used by . the data parallel execution model. (Refer to clEnqueueNDRangeKernel).  The minimum value is 3. 2This function execute OpenCL clGetDeviceInfo with  . MMaximum number of work-items that can be specified in each dimension of the  work-group to clEnqueueNDRangeKernel. D Returns n entries, where n is the value returned by the query for @ clDeviceMaxWorkItemDimensions. The minimum value is (1, 1, 1). 2This function execute OpenCL clGetDeviceInfo with  . FMax number of simultaneous image objects that can be written to by a # kernel. The minimum value is 8 if   is . 2This function execute OpenCL clGetDeviceInfo with  . FDescribes the alignment in bits of the base address of any allocated  memory object. 2This function execute OpenCL clGetDeviceInfo with  .  EThe smallest alignment in bytes which can be used for any data type. 2This function execute OpenCL clGetDeviceInfo with  . !Device name string. 2This function execute OpenCL clGetDeviceInfo with . "*The platform associated with this device. 2This function execute OpenCL clGetDeviceInfo with . #LPreferred native vector width size for built-in char types that can be put M into vectors. The vector width is defined as the number of scalar elements # that can be stored in the vector. 2This function execute OpenCL clGetDeviceInfo with  . $MPreferred native vector width size for built-in short types that can be put M into vectors. The vector width is defined as the number of scalar elements # that can be stored in the vector. 2This function execute OpenCL clGetDeviceInfo with  . %KPreferred native vector width size for built-in int types that can be put M into vectors. The vector width is defined as the number of scalar elements # that can be stored in the vector. 2This function execute OpenCL clGetDeviceInfo with  . &LPreferred native vector width size for built-in long types that can be put M into vectors. The vector width is defined as the number of scalar elements # that can be stored in the vector. 2This function execute OpenCL clGetDeviceInfo with  . 'MPreferred native vector width size for built-in float types that can be put M into vectors. The vector width is defined as the number of scalar elements # that can be stored in the vector. 2This function execute OpenCL clGetDeviceInfo with  . (NPreferred native vector width size for built-in double types that can be put M into vectors. The vector width is defined as the number of scalar elements # that can be stored in the vector. 3 | If the cl_khr_fp64 extension is not supported,  ( must return 0. 2This function execute OpenCL clGetDeviceInfo with  . )IOpenCL profile string. Returns the profile name supported by the device L (see note). The profile name returned can be one of the following strings: A FULL_PROFILE - if the device supports the OpenCL specification P (functionality defined as part of the core specification and does not require " any extensions to be supported). H EMBEDDED_PROFILE - if the device supports the OpenCL embedded profile. 2This function execute OpenCL clGetDeviceInfo with . *KDescribes the resolution of device timer. This is measured in nanoseconds. 2This function execute OpenCL clGetDeviceInfo with  . +KDescribes the command-queue properties supported by the device. This is a G list that describes one or more of the CLCommandQueueProperty values. 1 These properties are described in the table for clCreateCommandQueue. $ The mandated minimum capability is CL_QUEUE_PROFILING_ENABLE. 2This function execute OpenCL clGetDeviceInfo with   . ,MDescribes single precision floating-point capability of the device. This is / a bit-field that describes one or more of the B values. 3 The mandated minimum floating-point capability is F |  G. 2This function execute OpenCL clGetDeviceInfo with   . -DThe OpenCL device type. Currently supported values are one of or a  combination of: Q, P,  O, or N. 2This function execute OpenCL clGetDeviceInfo with  . .Vendor name string. 2This function execute OpenCL clGetDeviceInfo with  . /MA unique device vendor identifier. An example of a unique device identifier  could be the PCIe ID. 2This function execute OpenCL clGetDeviceInfo with  . 0LOpenCL version string. Returns the OpenCL version supported by the device. / This version string has the following format:  >OpenCL major_version.minor_version vendor-specific information = The major_version.minor_version value returned will be 1.0. 2This function execute OpenCL clGetDeviceInfo with . 1MOpenCL software driver version string in the form major_number.minor_number. 2This function execute OpenCL clGetDeviceInfo with . V89:;<=>?@ABCDEFGHLMNOPQRSTUVW      !"#$%&'()*+,-./01VRWVUTSLQPONMBHGFEDC?A@8:9;>=<     !"#$%&'()*./01, +-7      !"#$%&'()*+,-./012  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./011X~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~:;      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVOpenCL-1.0.3.0Control.Parallel.OpenCL.MemoryControl.Parallel.OpenCL.Program$Control.Parallel.OpenCL.CommandQueueControl.Parallel.OpenCL.EventControl.Parallel.OpenCL.QueryControl.Parallel.OpenCLControl.Parallel.OpenCL.ContextControl.Parallel.OpenCL.Types CLFilterModeCL_FILTER_LINEARCL_FILTER_NEARESTCLAddressingModeCL_ADDRESS_NONECL_ADDRESS_CLAMPCL_ADDRESS_CLAMP_TO_EDGECL_ADDRESS_REPEAT CLBuildStatusCL_BUILD_IN_PROGRESSCL_BUILD_SUCCESSCL_BUILD_ERROR CL_BUILD_NONECLMemObjectTypeCL_MEM_OBJECT_IMAGE3DCL_MEM_OBJECT_IMAGE2DCL_MEM_OBJECT_BUFFER CLMapFlag CL_MAP_WRITE CL_MAP_READ CLMemFlagCL_MEM_COPY_HOST_PTRCL_MEM_ALLOC_HOST_PTRCL_MEM_USE_HOST_PTRCL_MEM_READ_ONLYCL_MEM_WRITE_ONLYCL_MEM_READ_WRITECLProfilingInfoCL_PROFILING_COMMAND_ENDCL_PROFILING_COMMAND_STARTCL_PROFILING_COMMAND_SUBMITCL_PROFILING_COMMAND_QUEUEDCLCommandExecutionStatus CL_EXEC_ERROR CL_COMPLETE CL_RUNNING CL_SUBMITTED CL_QUEUED CLCommandTypeCL_COMMAND_RELEASE_GL_OBJECTSCL_COMMAND_ACQUIRE_GL_OBJECTSCL_COMMAND_MARKERCL_COMMAND_UNMAP_MEM_OBJECTCL_COMMAND_MAP_IMAGECL_COMMAND_MAP_BUFFERCL_COMMAND_COPY_IMAGE_TO_BUFFERCL_COMMAND_COPY_BUFFER_TO_IMAGECL_COMMAND_COPY_IMAGECL_COMMAND_WRITE_IMAGECL_COMMAND_READ_IMAGECL_COMMAND_COPY_BUFFERCL_COMMAND_WRITE_BUFFERCL_COMMAND_READ_BUFFERCL_COMMAND_NATIVE_KERNELCL_COMMAND_TASKCL_COMMAND_NDRANGE_KERNELCLDeviceLocalMemType CL_GLOBALCL_LOCALCLDeviceMemCacheTypeCL_READ_WRITE_CACHECL_READ_ONLY_CACHECL_NONECLDeviceExecCapabilityCL_EXEC_NATIVE_KERNELCL_EXEC_KERNELCLDeviceFPConfig CL_FP_FMACL_FP_ROUND_TO_INFCL_FP_ROUND_TO_ZEROCL_FP_ROUND_TO_NEAREST CL_FP_INF_NAN CL_FP_DENORMCLCommandQueuePropertyCL_QUEUE_PROFILING_ENABLE&CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE CLDeviceTypeCL_DEVICE_TYPE_ALLCL_DEVICE_TYPE_DEFAULTCL_DEVICE_TYPE_ACCELERATORCL_DEVICE_TYPE_GPUCL_DEVICE_TYPE_CPUCLPlatformInfoCL_PLATFORM_EXTENSIONSCL_PLATFORM_VENDORCL_PLATFORM_NAMECL_PLATFORM_VERSIONCL_PLATFORM_PROFILECLError CL_SUCCESSCL_PROFILING_INFO_NOT_AVAILABLECL_OUT_OF_RESOURCESCL_OUT_OF_HOST_MEMORYCL_MEM_COPY_OVERLAP CL_MEM_OBJECT_ALLOCATION_FAILURECL_MAP_FAILURECL_INVALID_WORK_ITEM_SIZECL_INVALID_WORK_GROUP_SIZECL_INVALID_WORK_DIMENSIONCL_INVALID_VALUECL_INVALID_SAMPLERCL_INVALID_QUEUE_PROPERTIESCL_INVALID_PROGRAM_EXECUTABLECL_INVALID_PROGRAMCL_INVALID_PLATFORMCL_INVALID_OPERATIONCL_INVALID_MEM_OBJECTCL_INVALID_KERNEL_DEFINITIONCL_INVALID_KERNEL_ARGSCL_INVALID_KERNELCL_INVALID_KERNEL_NAMECL_INVALID_IMAGE_SIZE"CL_INVALID_IMAGE_FORMAT_DESCRIPTORCL_INVALID_HOST_PTRCL_INVALID_GLOBAL_OFFSETCL_INVALID_GL_OBJECTCL_INVALID_EVENT_WAIT_LISTCL_INVALID_EVENTCL_INVALID_DEVICE_TYPECL_INVALID_DEVICECL_INVALID_CONTEXTCL_INVALID_COMMAND_QUEUECL_INVALID_BUILD_OPTIONSCL_INVALID_BUFFER_SIZECL_INVALID_BINARYCL_INVALID_ARG_VALUECL_INVALID_ARG_SIZECL_INVALID_ARG_INDEXCL_IMAGE_FORMAT_NOT_SUPPORTEDCL_IMAGE_FORMAT_MISMATCHCL_DEVICE_NOT_FOUNDCL_DEVICE_NOT_AVAILABLECL_COMPILER_NOT_AVAILABLECL_BUILD_PROGRAM_FAILURECLulongCLuintCLint CLSamplerCLKernel CLProgramCLEventCLMemCLCommandQueue CLContext CLDeviceID CLPlatformIDclCreateProgramWithSourceclCreateProgramWithBinaryclRetainProgramclReleaseProgramclUnloadCompilerclBuildProgramclGetProgramReferenceCountclGetProgramContextclGetProgramNumDevicesclGetProgramDevicesclGetProgramSourceclGetProgramBinarySizesclGetProgramBinariesclGetProgramBuildStatusclGetProgramBuildOptionsclGetProgramBuildLogclCreateKernelclCreateKernelsInProgramclRetainKernelclReleaseKernelclSetKernelArgclSetKernelArgStoclGetKernelFunctionNameclGetKernelNumArgsclGetKernelReferenceCountclGetKernelContextclGetKernelProgramclGetKernelWorkGroupSizeclGetKernelCompileWorkGroupSizeclGetKernelLocalMemSizeclWaitForEvents clRetainEventclReleaseEventclGetEventCommandQueueclGetEventCommandTypeclGetEventReferenceCount clGetEventCommandExecutionStatusclGetEventProfilingInfo CLImageFormatimage_channel_orderimage_channel_data_typeclCreateBufferclRetainMemObjectclReleaseMemObjectclCreateImage2DclCreateImage3DclGetSupportedImageFormatsclGetImageFormatclGetImageElementSizeclGetImageRowPitchclGetImageSlicePitchclGetImageWidthclGetImageHeightclGetImageDepth clGetMemType clGetMemFlags clGetMemSizeclGetMemHostPtrclGetMemMapCountclGetMemReferenceCountclGetMemContextclCreateSamplerclRetainSamplerclReleaseSamplerclGetSamplerReferenceCountclGetSamplerContextclGetSamplerAddressingModeclGetSamplerFilterModeclGetSamplerNormalizedCoordsclCreateCommandQueueclRetainCommandQueueclReleaseCommandQueueclGetCommandQueueContextclGetCommandQueueDeviceclGetCommandQueueReferenceCountclGetCommandQueuePropertiesclSetCommandQueuePropertyclEnqueueReadBufferclEnqueueWriteBufferclEnqueueReadImageclEnqueueWriteImageclEnqueueCopyImageclEnqueueCopyImageToBufferclEnqueueCopyBufferToImageclEnqueueMapBufferclEnqueueMapImageclEnqueueUnmapMemObjectclEnqueueNDRangeKernel clEnqueueTaskclEnqueueNativeKernelclEnqueueMarkerclEnqueueWaitForEventsclEnqueueBarrierclFlushclFinishCLContextPropertyCL_CONTEXT_PLATFORMclCreateContextclCreateContextFromTypeclRetainContextclReleaseContextclGetContextReferenceCountclGetContextDevicesclGetContextPropertiesclGetPlatformIDsclGetPlatformInfoclGetDeviceIDsclGetDeviceAddressBitsclGetDeviceAvailableclGetDeviceCompilerAvailableclGetDeviceDoubleFPConfigclGetDeviceEndianLittle!clGetDeviceErrorCorrectionSupport clGetDeviceExecutionCapabilitiesclGetDeviceExtensionsclGetDeviceGlobalMemCacheSizeclGetDeviceGlobalMemCacheType!clGetDeviceGlobalMemCachelineSizeclGetDeviceGlobalMemSizeclGetDeviceHalfFPConfigclGetDeviceImageSupportclGetDeviceImage2DMaxHeightclGetDeviceImage2DMaxWidthclGetDeviceImage3DMaxDepthclGetDeviceImage3DMaxHeightclGetDeviceImage3DMaxWidthclGetDeviceLocalMemSizeclGetDeviceLocalMemTypeclGetDeviceMaxClockFrequencyclGetDeviceMaxComputeUnitsclGetDeviceMaxConstantArgs clGetDeviceMaxConstantBufferSizeclGetDeviceMaxMemAllocSizeclGetDeviceMaxParameterSizeclGetDeviceMaxReadImageArgsclGetDeviceMaxSamplersclGetDeviceMaxWorkGroupSize clGetDeviceMaxWorkItemDimensionsclGetDeviceMaxWorkItemSizesclGetDeviceMaxWriteImageArgsclGetDeviceMemBaseAddrAlignclGetDeviceMinDataTypeAlignSizeclGetDeviceNameclGetDevicePlatform#clGetDevicePreferredVectorWidthChar$clGetDevicePreferredVectorWidthShort"clGetDevicePreferredVectorWidthInt#clGetDevicePreferredVectorWidthLong$clGetDevicePreferredVectorWidthFloat%clGetDevicePreferredVectorWidthDoubleclGetDeviceProfile#clGetDeviceProfilingTimerResolutionclGetDeviceQueuePropertiesclGetDeviceSingleFPConfigclGetDeviceTypeclGetDeviceVendorclGetDeviceVendorIDclGetDeviceVersionclGetDeviceDriverVersionghc-prim GHC.TypesFalseCLAddressingMode_CLSamplerInfo_ CLFilterMode_CLKernelWorkGroupInfo_ CLKernelInfo_CLBuildStatus_CLProgramBuildInfo_CLProgramInfo_ CLMapFlags_ CLImageInfo_ CLMemInfo_CLMemObjectType_ CLMemFlags_CLCommandType_CLProfilingInfo_ CLEventInfo_CLCommandQueueProperty_CLCommandQueueInfo_CLContextProperty_CLContextInfo_CLDeviceExecCapability_CLDeviceLocalMemType_CLDeviceMemCacheType_CLDeviceFPConfig_ CLDeviceInfo_ CLDeviceType_CLPlatformInfo_CLbool throwCLError wrapPErrorwrapCheckSuccess wrapGetInfo whenSuccess getCLValue getEnumCLgetCommandExecutionStatus binaryFlagstestMaskbitmaskFromFlagsbitmaskToFlagsbitmaskToDeviceTypesbitmaskToCommandQueuePropertiesbitmaskToFPConfigbitmaskToExecCapabilitybitmaskToMemFlagsCLKernelGroupInfoCL_KERNEL_LOCAL_MEM_SIZE!CL_KERNEL_COMPILE_WORK_GROUP_SIZECL_KERNEL_WORK_GROUP_SIZE CLKernelInfoCL_KERNEL_PROGRAMCL_KERNEL_CONTEXTCL_KERNEL_REFERENCE_COUNTCL_KERNEL_NUM_ARGSCL_KERNEL_FUNCTION_NAMECLProgramBuildInfoCL_PROGRAM_BUILD_LOGCL_PROGRAM_BUILD_OPTIONSCL_PROGRAM_BUILD_STATUS CLProgramInfoCL_PROGRAM_BINARIESCL_PROGRAM_BINARY_SIZESCL_PROGRAM_SOURCECL_PROGRAM_DEVICESCL_PROGRAM_NUM_DEVICESCL_PROGRAM_CONTEXTCL_PROGRAM_REFERENCE_COUNT BuildCallbackraw_clGetKernelWorkGroupInforaw_clGetKernelInforaw_clSetKernelArgraw_clReleaseKernelraw_clRetainKernelraw_clCreateKernelsInProgramraw_clCreateKernelraw_clGetProgramBuildInforaw_clGetProgramInforaw_clUnloadCompilerraw_clBuildProgramraw_clReleaseProgramraw_clRetainProgramraw_clCreateProgramWithBinaryraw_clCreateProgramWithSourceTruegetProgramInfoSizegetProgramBuildInfoSizegetKernelInfoSize CLEventInfoCL_EVENT_REFERENCE_COUNT!CL_EVENT_COMMAND_EXECUTION_STATUSCL_EVENT_COMMAND_TYPECL_EVENT_COMMAND_QUEUEraw_clGetEventProfilingInforaw_clReleaseEventraw_clRetainEventraw_clGetEventInforaw_clWaitForEventsbase Data.MaybeNothing CLSamplerInfoCL_SAMPLER_NORMALIZED_COORDSCL_SAMPLER_FILTER_MODECL_SAMPLER_ADDRESSING_MODECL_SAMPLER_CONTEXTCL_SAMPLER_REFERENCE_COUNT CLMemInfoCL_MEM_CONTEXTCL_MEM_REFERENCE_COUNTCL_MEM_MAP_COUNTCL_MEM_HOST_PTR CL_MEM_SIZE CL_MEM_FLAGS CL_MEM_TYPE CLImageInfoCL_IMAGE_DEPTHCL_IMAGE_HEIGHTCL_IMAGE_WIDTHCL_IMAGE_SLICE_PITCHCL_IMAGE_ROW_PITCHCL_IMAGE_ELEMENT_SIZECL_IMAGE_FORMATCLImageFormat_p CLChannelType CL_SNORM_INT8CL_SNORM_INT16 CL_UNORM_INT8CL_UNORM_INT16CL_UNORM_SHORT_565CL_RGBCL_UNORM_SHORT_555CL_UNORM_INT_101010CL_SIGNED_INT8CL_SIGNED_INT16CL_SIGNED_INT32CL_UNSIGNED_INT8CL_UNSIGNED_INT16CL_UNSIGNED_INT32 CL_HALF_FLOATCL_FLOATCLChannelOrderCL_RCL_A CL_INTENSITY CL_LUMINANCECL_RGCL_RACL_RGBACL_ARGBCL_BGRAraw_clGetSamplerInforaw_clReleaseSamplerraw_clRetainSamplerraw_clCreateSamplerraw_clGetImageInforaw_clGetMemObjectInforaw_clGetSupportedImageFormatsraw_clReleaseMemObjectraw_clRetainMemObjectraw_clCreateImage3Draw_clCreateImage2Draw_clCreateBufferGHC.PtrnullPtrgetNumSupportedImageFormatsCLCommandQueueInfoCL_QUEUE_PROPERTIESCL_QUEUE_REFERENCE_COUNTCL_QUEUE_DEVICECL_QUEUE_CONTEXTNativeKernelCallback raw_clFinish raw_clFlushraw_clEnqueueBarrierraw_clEnqueueWaitForEventsraw_clEnqueueMarkerraw_clEnqueueTaskraw_clEnqueueNativeKernelraw_clEnqueueNDRangeKernelraw_clEnqueueUnmapMemObjectraw_clEnqueueMapImageraw_clEnqueueMapBufferraw_clEnqueueCopyBufferToImageraw_clEnqueueCopyImageToBufferraw_clEnqueueCopyImageraw_clEnqueueWriteImageraw_clEnqueueReadImageraw_clEnqueueWriteBufferraw_clEnqueueReadBufferraw_clSetCommandQueuePropertyraw_clGetCommandQueueInforaw_clReleaseCommandQueueraw_clRetainCommandQueueraw_clCreateCommandQueuewrapNativeKernelCallbackwithMaybeArray clEnqueue CLContextInfoCL_CONTEXT_PROPERTIESCL_CONTEXT_DEVICESCL_CONTEXT_REFERENCE_COUNTCLContextPropertiesCL_CONTEXT_PLATFORM_ContextCallbackraw_clGetContextInforaw_clReleaseContextraw_clRetainContextraw_clCreateContextFromTyperaw_clCreateContextwrapContextCallbackpackContextPropertiesunpackContextPropertiesmkContextCallbackgetContextInfoSize CLDeviceInfoCL_DRIVER_VERSIONCL_DEVICE_VERSIONCL_DEVICE_VENDOR_IDCL_DEVICE_VENDORCL_DEVICE_TYPECL_DEVICE_SINGLE_FP_CONFIGCL_DEVICE_QUEUE_PROPERTIES$CL_DEVICE_PROFILING_TIMER_RESOLUTIONCL_DEVICE_PROFILE'CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE&CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT%CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG$CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT&CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT%CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHARCL_DEVICE_PLATFORMCL_DEVICE_NAME"CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZECL_DEVICE_MEM_BASE_ADDR_ALIGNCL_DEVICE_MAX_WRITE_IMAGE_ARGSCL_DEVICE_MAX_WORK_ITEM_SIZES"CL_DEVICE_MAX_WORK_ITEM_DIMENSIONSCL_DEVICE_MAX_WORK_GROUP_SIZECL_DEVICE_MAX_SAMPLERSCL_DEVICE_MAX_READ_IMAGE_ARGSCL_DEVICE_MAX_PARAMETER_SIZECL_DEVICE_MAX_MEM_ALLOC_SIZE"CL_DEVICE_MAX_CONSTANT_BUFFER_SIZECL_DEVICE_MAX_CONSTANT_ARGSCL_DEVICE_MAX_COMPUTE_UNITSCL_DEVICE_MAX_CLOCK_FREQUENCYCL_DEVICE_LOCAL_MEM_TYPECL_DEVICE_LOCAL_MEM_SIZECL_DEVICE_IMAGE3D_MAX_WIDTHCL_DEVICE_IMAGE3D_MAX_HEIGHTCL_DEVICE_IMAGE3D_MAX_DEPTHCL_DEVICE_IMAGE2D_MAX_WIDTHCL_DEVICE_IMAGE2D_MAX_HEIGHTCL_DEVICE_IMAGE_SUPPORTCL_DEVICE_HALF_FP_CONFIGCL_DEVICE_GLOBAL_MEM_SIZE#CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZECL_DEVICE_GLOBAL_MEM_CACHE_TYPECL_DEVICE_GLOBAL_MEM_CACHE_SIZECL_DEVICE_EXTENSIONS CL_DEVICE_EXECUTION_CAPABILITIES"CL_DEVICE_ERROR_CORRECTION_SUPPORTCL_DEVICE_ENDIAN_LITTLECL_DEVICE_DOUBLE_FP_CONFIGCL_DEVICE_COMPILER_AVAILABLECL_DEVICE_AVAILABLECL_DEVICE_ADDRESS_BITSraw_clGetDeviceInforaw_clGetDeviceIDsraw_clGetPlatformInforaw_clGetPlatformIDsgetNumPlatformsgetPlatformInfoSize getNumDevicesgetDeviceInfoSizegetDeviceInfoStringgetDeviceInfoUintgetDeviceInfoUlonggetDeviceInfoSizetgetDeviceInfoBoolgetDeviceInfoFP