{W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       ;. 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:;< >0, The OpenCL device can execute OpenCL kernels.  =0, The OpenCL device can execute native kernels. =>? E, denorms are supported.  D, INF and NaNs are supported.  C1, round to nearest even rounding mode supported.  B), round to zero rounding mode supported.  A:, round to +ve and -ve infinity rounding modes supported.  @0, IEEE754-2008 fused multiply-add is supported. @ABCDEF H#, 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.  G2, 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. GHI N9, An OpenCL device that is the host processor. The host Mprocessor runs the OpenCL implementations and is a single or multi-core CPU.  M<, 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.  L2, Dedicated OpenCL accelerators (for example the LIBM CELL Blade). These devices communicate with the host processor using a &peripheral interconnect such as PCIe.  K+, The default OpenCL device in the system.  J., All OpenCL devices available in the system. JKLMNO T3, 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.  S5, 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.  R, Platform name string.  Q, Platform vendor string.  P5, 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. PQRSTU- ., 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 .  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).  z7, Returned if the argument value specified is NULL for Kan argument that is not declared with the __local qualifier or vice-versa.  y;, Returned if the program binary is not a valid binary for the specified device.  x6, Returned if the value of the parameter size is 0 or is greater than clDeviceMaxMemAllocSize" for all devices specified in the parameter context.  w., Returned if the specified build options are  invalid.  v3, Returned if the specified command-queue is not a valid command-queue.  u:, Returned if the specified context is not a valid OpenCL Mcontext, or the context associated with certain parameters are not the same.  t6, Returned if the device or devices specified are not valid.  s2, Returned if device type specified is not valid.  r9, Returned if the event objects specified are not valid.  q*, 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.  p6, Returned if obj is not a vaild GL object or is a GL 1object but does not have an existing data store.  o., Returned if global_work_offset is not NULL.  n#, 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.  m), Returned if the image format specified Lis not valid or is NULL or does not map to a supported OpenCL image format.  l6, 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.  k5, Returned if the specified kernel name is not found  in program.  j9, Returned if the specified kernel is not a valid kernel object.  i7, Returned if the kernel argument values have not been  specified.  h*, 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.  g8, Returned if a parameter is not a valid memory, image, or buffer object.  f3, 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.  e4, 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.  d;, Returned if the specified program is not a valid program object.  c-, 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.  b1, Returned if specified properties are valid but !are not supported by the device.  a;, 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.  `4, Returned if a parameter is not an expected value.  _-, Returned if work_dim is not a valid value.  ^/, 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.  Z8, 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.  Y1, Returned in the event of a failure to allocate =resources required by the OpenCL implementation on the host.  X2, 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.  W, Returned if the G 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).  V5, Indicates that the function executed successfully. VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@A  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'(*+-./012345678;<=>?@A "!  !"#43210/.-,+*)('&%$$%&'()*+,-./01234576678;:99:;<>==>?EDCBA@@ABCDEFHGGHINMLKJJKLMNOTSRQPPQRSTU-~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'(*+-./012345678;<=>?@AFBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgLCreates 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 U 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 U 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 U 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 h if 3 the function is executed successfully. It returns  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 h if 3 the function is executed successfully. It returns  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 U 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 .  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. iKReturn 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  W. AReturn the context specified when the program object is created. 3This function execute OpenCL clGetProgramInfo with V. 6Return the number of devices associated with program. 3This function execute OpenCL clGetProgramInfo with U. 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 T. ,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 S. 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 R. 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 Q. jFReturns the build status of program for a specific device as given by  device. 8This function execute OpenCL clGetProgramBuildInfo with  O. >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  N. 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  M. 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 U  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  h+ 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 h 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 U 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). k!Return the kernel function name. 2This function execute OpenCL clGetKernelInfo with K. *Return the number of arguments to kernel. 2This function execute OpenCL clGetKernelInfo with J. 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  I. +Return the context associated with kernel. 2This function execute OpenCL clGetKernelInfo with H. 2Return the program object associated with kernel. 2This function execute OpenCL clGetKernelInfo with G. 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  E. 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  D. 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  C. $ $ lmnopqrstuFWaits 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 h7 if the function was executed successfully. It returns  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 h6 if the function is executed successfully. It returns  ' 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 h6 if the function is executed successfully. It returns  ' if event is not a valid event object. 0Return the command-queue associated with event. 1This function execute OpenCL clGetEventInfo with p. *Return the command associated with event. 1This function execute OpenCL clGetEventInfo with o. 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 m. @Return the execution status of the command identified by event. 1This function execute OpenCL clGetEventInfo with  n. 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 v 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. & !"#$%&'()*+,-./01234&#43210/.-,+*)('&%$"! (wxyz{|}~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 h 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  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 h 6 if the function is executed successfully. It returns  if memobj is not  a valid memory object. 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 ).  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 h6 if the function is executed successfully. It returns  + 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  h6 if the function is executed successfully. It returns  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  z. GReturn the value specified by filter_mode argument to clCreateSampler. 3This function execute OpenCL clGetSamplerInfo with y. <Return the value specified by normalized_coords argument to  clCreateSampler. 3This function execute OpenCL clGetSamplerInfo with  x. ' ' %-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 H! 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 H* 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 H 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 clEnqueueNativeKernel Qcommands are not guaranteed to wait for kernels scheduled for execution to have completed (if the H property is set). To Censure correct ordering of commands, the event object returned by ,  or clEnqueueNativeKernel 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 h. if the function is executed successfully. It returns 2 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 h6 if the function is executed successfully. It returns  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 H# 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 H# 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. 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. 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 h4 if the function call was executed successfully. It returns @ 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 clEnqueueReadImage or  with blocking_read set to h, clEnqueueWriteImage or  with blocking_write set to h, clEnqueueMapImage or clEnqueueMapBuffer with blocking_map set to h 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 h5 if the function call was executed successfully. It  returns ? 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. FGHFHGCreates 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 h. if the function is executed successfully, or  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 h. if the function is executed successfully, or  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 . zJObtain 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. IObtain 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. HThe 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 h if the device is available and  if the device is not  available. 2This function execute OpenCL clGetDeviceInfo with . Is > if the implementation does not have a compiler available to  compile the program source. Is h) if the compiler is available. This can  be * for the embededed platform profile only. 2This function execute OpenCL clGetDeviceInfo with  . 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  ? values. E The mandated minimum double precision floating-point capability is  @ | C | B |  A | D | E. 2This function execute OpenCL clGetDeviceInfo with  . Is h4 if the OpenCL device is a little endian device and   otherwise. 2This function execute OpenCL clGetDeviceInfo with . Is h> if the device implements error correction for the memories, * caches, registers etc. in the device. Is  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  . IDescribes the execution capabilities of the device. This is a list that  describes one or more of the < values. $ The mandated minimum capability is >. 2This function execute OpenCL clGetDeviceInfo with  . 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 . &Size of global memory cache in bytes. 2This function execute OpenCL clGetDeviceInfo with  . 9Type of global memory cache supported. Valid values are: ;,  :, and 9. 2This function execute OpenCL clGetDeviceInfo with  . +Size of global memory cache line in bytes. 2This function execute OpenCL clGetDeviceInfo with  . '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  ? values. O The required minimum half precision floating-point capability as implemented  by this extension is B | A |  D. 2This function execute OpenCL clGetDeviceInfo with . Is h2 if images are supported by the OpenCL device and  otherwise. 2This function execute OpenCL clGetDeviceInfo with . ?Max height of 2D image in pixels. The minimum value is 8192 if   is h. 2This function execute OpenCL clGetDeviceInfo with  . >Max width of 2D image in pixels. The minimum value is 8192 if   is h. 2This function execute OpenCL clGetDeviceInfo with  . ?Max depth of 3D image in pixels. The minimum value is 2048 if   is h. 2This function execute OpenCL clGetDeviceInfo with  . @Max height of 3D image in pixels. The minimum value is 2048 if   is h. 2This function execute OpenCL clGetDeviceInfo with  . ?Max width of 3D image in pixels. The minimum value is 2048 if   is h. 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 7 implying 1 dedicated local memory storage such as SRAM, or 6. 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 h. 2This function execute OpenCL clGetDeviceInfo with  . LMaximum number of samplers that can be used in a kernel. The minimum value  is 16 if  is h. (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 h. 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 ? values. 3 The mandated minimum floating-point capability is C |  D. 2This function execute OpenCL clGetDeviceInfo with  . DThe OpenCL device type. Currently supported values are one of or a  combination of: N, M,  L, or K. 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 . LOpenCL 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 . MOpenCL software driver version string in the form major_number.minor_number. 2This function execute OpenCL clGetDeviceInfo with . V56789:;<=>?@ABCDEIJKLMNOPQRST     VOTSRQPINMLKJ?EDCBA@<>=5768;:9     7       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     1U~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWV      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~OpenCL-1.0.2.4System.GPU.OpenCL.MemorySystem.GPU.OpenCL.ProgramSystem.GPU.OpenCL.EventSystem.GPU.OpenCL.QuerySystem.GPU.OpenCL.CommandQueueSystem.GPU.OpenCLSystem.GPU.OpenCL.ContextSystem.GPU.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 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 CLPlatformIDclCreateProgramWithSourceclCreateProgramWithBinaryclRetainProgramclReleaseProgramclUnloadCompilerclBuildProgramclGetProgramReferenceCountclGetProgramContextclGetProgramNumDevicesclGetProgramDevicesclGetProgramSourceclGetProgramBinarySizesclGetProgramBinariesclGetProgramBuildStatusclGetProgramBuildOptionsclGetProgramBuildLogclCreateKernelclCreateKernelsInProgramclRetainKernelclReleaseKernelclSetKernelArgclGetKernelFunctionNameclGetKernelNumArgsclGetKernelReferenceCountclGetKernelContextclGetKernelProgramclGetKernelWorkGroupSizeclGetKernelCompileWorkGroupSizeclGetKernelLocalMemSizeclWaitForEvents clRetainEventclReleaseEventclGetEventCommandQueueclGetEventCommandTypeclGetEventReferenceCount clGetEventCommandExecutionStatusclGetEventProfilingInfoclCreateBufferclRetainMemObjectclReleaseMemObject clGetMemType clGetMemFlags clGetMemSizeclGetMemHostPtrclGetMemMapCountclGetMemReferenceCountclGetMemContextclCreateSamplerclRetainSamplerclReleaseSamplerclGetSamplerReferenceCountclGetSamplerContextclGetSamplerAddressingModeclGetSamplerFilterModeclGetSamplerNormalizedCoordsclCreateCommandQueueclRetainCommandQueueclReleaseCommandQueueclGetCommandQueueContextclGetCommandQueueDeviceclGetCommandQueueReferenceCountclGetCommandQueuePropertiesclSetCommandQueuePropertyclEnqueueReadBufferclEnqueueWriteBufferclEnqueueNDRangeKernel clEnqueueTaskclEnqueueMarkerclEnqueueWaitForEventsclEnqueueBarrierclFlushclFinishclCreateContextclCreateContextFromTypeclRetainContextclReleaseContextclGetContextReferenceCountclGetContextDevicesclGetPlatformIDsclGetPlatformInfoclGetDeviceIDsclGetDeviceAddressBitsclGetDeviceAvailableclGetDeviceCompilerAvailableclGetDeviceDoubleFPConfigclGetDeviceEndianLittle!clGetDeviceErrorCorrectionSupport clGetDeviceExecutionCapabilitiesclGetDeviceExtensionsclGetDeviceGlobalMemCacheSizeclGetDeviceGlobalMemCacheType!clGetDeviceGlobalMemCachelineSizeclGetDeviceGlobalMemSizeclGetDeviceHalfFPConfigclGetDeviceImageSupportclGetDeviceImage2DMaxHeightclGetDeviceImage2DMaxWidthclGetDeviceImage3DMaxDepthclGetDeviceImage3DMaxHeightclGetDeviceImage3DMaxWidthclGetDeviceLocalMemSizeclGetDeviceLocalMemTypeclGetDeviceMaxClockFrequencyclGetDeviceMaxComputeUnitsclGetDeviceMaxConstantArgs clGetDeviceMaxConstantBufferSizeclGetDeviceMaxMemAllocSizeclGetDeviceMaxParameterSizeclGetDeviceMaxReadImageArgsclGetDeviceMaxSamplersclGetDeviceMaxWorkGroupSize clGetDeviceMaxWorkItemDimensionsclGetDeviceMaxWorkItemSizesclGetDeviceMaxWriteImageArgsclGetDeviceMemBaseAddrAlignclGetDeviceMinDataTypeAlignSizeclGetDeviceNameclGetDevicePlatform#clGetDevicePreferredVectorWidthChar$clGetDevicePreferredVectorWidthShort"clGetDevicePreferredVectorWidthInt#clGetDevicePreferredVectorWidthLong$clGetDevicePreferredVectorWidthFloat%clGetDevicePreferredVectorWidthDoubleclGetDeviceProfile#clGetDeviceProfilingTimerResolutionclGetDeviceQueuePropertiesclGetDeviceSingleFPConfigclGetDeviceTypeclGetDeviceVendorclGetDeviceVendorIDclGetDeviceVersionclGetDeviceDriverVersionghc-prim GHC.TypesFalseCLImageFormat_pCLAddressingMode_CLSamplerInfo_ CLFilterMode_CLKernelWorkGroupInfo_ CLKernelInfo_CLBuildStatus_CLProgramBuildInfo_CLProgramInfo_ 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_TYPEraw_clGetSamplerInforaw_clReleaseSamplerraw_clRetainSamplerraw_clCreateSamplerraw_clGetMemObjectInforaw_clReleaseMemObjectraw_clRetainMemObjectraw_clCreateBufferCLCommandQueueInfoCL_QUEUE_PROPERTIESCL_QUEUE_REFERENCE_COUNTCL_QUEUE_DEVICECL_QUEUE_CONTEXT raw_clFinish raw_clFlushraw_clEnqueueBarrierraw_clEnqueueWaitForEventsraw_clEnqueueMarkerraw_clEnqueueTaskraw_clEnqueueNDRangeKernelraw_clEnqueueWriteBufferraw_clEnqueueReadBufferraw_clSetCommandQueuePropertyraw_clGetCommandQueueInforaw_clReleaseCommandQueueraw_clRetainCommandQueueraw_clCreateCommandQueue clEnqueue CLContextInfoCL_CONTEXT_PROPERTIESCL_CONTEXT_DEVICESCL_CONTEXT_REFERENCE_COUNTContextCallbackraw_clGetContextInforaw_clReleaseContextraw_clRetainContextraw_clCreateContextFromTyperaw_clCreateContextwrapContextCallbackmkContextCallbackgetContextInfoSize 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