ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/OpenCL/OpenCL.pm
(Generate patch)

Comparing OpenCL/OpenCL.pm (file contents):
Revision 1.72 by root, Fri May 4 14:49:42 2012 UTC vs.
Revision 1.80 by root, Sat May 5 13:55:59 2012 UTC

28specific device ("compiling and linking"), also binary programs. For each 28specific device ("compiling and linking"), also binary programs. For each
29kernel function in a program you can then create an OpenCL::Kernel object 29kernel function in a program you can then create an OpenCL::Kernel object
30which represents basically a function call with argument values. 30which represents basically a function call with argument values.
31 31
32OpenCL::Memory objects of various flavours: OpenCL::Buffer objects (flat 32OpenCL::Memory objects of various flavours: OpenCL::Buffer objects (flat
33memory areas, think arrays or structs) and OpenCL::Image objects (think 2d 33memory areas, think arrays or structs) and OpenCL::Image objects (think 2D
34or 3d array) for bulk data and input and output for kernels. 34or 3D array) for bulk data and input and output for kernels.
35 35
36OpenCL::Sampler objects, which are kind of like texture filter modes in 36OpenCL::Sampler objects, which are kind of like texture filter modes in
37OpenGL. 37OpenGL.
38 38
39OpenCL::Queue objects - command queues, which allow you to submit memory 39OpenCL::Queue objects - command queues, which allow you to submit memory
388 388
389=item * When enqueuing commands, if the enqueue method is called in void 389=item * When enqueuing commands, if the enqueue method is called in void
390context, no event is created. In all other contexts an event is returned 390context, no event is created. In all other contexts an event is returned
391by the method. 391by the method.
392 392
393=item * This module expects all functions to return C<CL_SUCCESS>. If any 393=item * This module expects all functions to return C<OpenCL::SUCCESS>. If any
394other status is returned the function will throw an exception, so you 394other status is returned the function will throw an exception, so you
395don't normally have to to any error checking. 395don't normally have to to any error checking.
396 396
397=back 397=back
398
399=head2 CONSTANTS
400
401All C<CL_xxx> constants that this module supports are always available
402in the C<OpenCL> namespace as C<OpenCL::xxx> (i.e. without the C<CL_>
403prefix). Constants which are not defined in the heaer files used during
404compilation, or otherwise are not available, will have the value C<-1>.
405
406=head2 OPENCL 1.1 VS. OPENCL 1.2
407
408This module supports both OpenCL version 1.1 and 1.2, although the OpenCL
4091.2 interface hasn't been tested much for lack of availability of an
410actual implementation.
411
412Every function or method in this manual page that interfaces to a
413particular OpenCL function has a link to the its C manual page.
414
415If the link contains a F<1.1>, then this function is an OpenCL 1.1
416function. Most but not all also exist in OpenCL 1.2, and this module
417tries to emulate the missing ones for you, when told to do so at
418compiletime. You cna check whether a function was removed in OpenCL 1.2 by
419replacing the F<1.1> component in the URL by F<1.2>.
420
421If the link contains a F<1.2>, then this is a OpenCL 1.2-only
422function. Even if the module was compiled with OpenCL 1.2 header files
423and has an 1.2 OpenCL library, calling such a function on a platform that
424doesn't implement 1.2 causes undefined behaviour, usually a crash (But
425this is not guaranteed).
426
427You can find out whether this module was compiled to prefer 1.1
428functionality by ooking at C<OpenCL::PREFER_1_1> - if it is true, then
4291.1 functions generally are implemented using 1.1 OpenCL functions. If it
430is false, then 1.1 functions missing from 1.2 are emulated by calling 1.2
431fucntions.
432
433This is a somewhat sorry state of affairs, but the Khronos group choose to
434make every release of OpenCL source and binary incompatible with previous
435releases.
398 436
399=head2 PERL AND OPENCL TYPES 437=head2 PERL AND OPENCL TYPES
400 438
401This handy(?) table lists OpenCL types and their perl, PDL and pack/unpack 439This handy(?) table lists OpenCL types and their perl, PDL and pack/unpack
402format equivalents: 440format equivalents:
434OpenCL can generate a number of (potentially) asynchronous events, for 472OpenCL can generate a number of (potentially) asynchronous events, for
435example, after compiling a program, to signal a context-related error or, 473example, after compiling a program, to signal a context-related error or,
436perhaps most important, to signal completion of queued jobs (by setting 474perhaps most important, to signal completion of queued jobs (by setting
437callbacks on OpenCL::Event objects). 475callbacks on OpenCL::Event objects).
438 476
477The OpenCL module converts all these callbacks into events - you can
478still register callbacks, but they are not executed when your OpenCL
479implementation calls the actual callback, but only later. Therefore, none
480of the limitations of OpenCL callbacks apply to the perl implementation:
481it is perfectly safe to make blocking operations from event callbacks, and
482enqueued operations don't need to be flushed.
483
439To facilitate this, this module maintains an event queue - each 484To facilitate this, this module maintains an event queue - each
440time an asynchronous event happens, it is queued, and perl will be 485time an asynchronous event happens, it is queued, and perl will be
441interrupted. This is implemented via the L<Async::Interrupt> module. In 486interrupted. This is implemented via the L<Async::Interrupt> module. In
442addition, this module has L<AnyEvent> support, so it can seamlessly 487addition, this module has L<AnyEvent> support, so it can seamlessly
443integrate itself into many event loops. 488integrate itself into many event loops.
444 489
445Since this module is a bit hard to understand, here are some case examples: 490Since L<Async::Interrupt> is a bit hard to understand, here are some case examples:
446 491
447=head3 Don't use callbacks. 492=head3 Don't use callbacks.
448 493
449When your program never uses any callbacks, then there will never be any 494When your program never uses any callbacks, then there will never be any
450notifications you need to take care of, and therefore no need to worry 495notifications you need to take care of, and therefore no need to worry
613L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetPlatformIDs.html> 658L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetPlatformIDs.html>
614 659
615=item $ctx = OpenCL::context_from_type $properties, $type = OpenCL::DEVICE_TYPE_DEFAULT, $callback->($err, $pvt) = $print_stderr 660=item $ctx = OpenCL::context_from_type $properties, $type = OpenCL::DEVICE_TYPE_DEFAULT, $callback->($err, $pvt) = $print_stderr
616 661
617Tries to create a context from a default device and platform type - never worked for me. 662Tries to create a context from a default device and platform type - never worked for me.
663Consider using C<< $platform->context_from_type >> instead.
618 664
619type: OpenCL::DEVICE_TYPE_DEFAULT, OpenCL::DEVICE_TYPE_CPU, OpenCL::DEVICE_TYPE_GPU, 665type: OpenCL::DEVICE_TYPE_DEFAULT, OpenCL::DEVICE_TYPE_CPU, OpenCL::DEVICE_TYPE_GPU,
620OpenCL::DEVICE_TYPE_ACCELERATOR, OpenCL::DEVICE_TYPE_CUSTOM, OpenCL::DEVICE_TYPE_ALL. 666OpenCL::DEVICE_TYPE_ACCELERATOR, OpenCL::DEVICE_TYPE_CUSTOM, OpenCL::DEVICE_TYPE_ALL.
621 667
622L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContextFromType.html> 668L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContextFromType.html>
623 669
624=item $ctx = OpenCL::context $properties, \@devices, $callback->($err, $pvt) = $print_stderr) 670=item $ctx = OpenCL::context $properties, \@devices, $callback->($err, $pvt) = $print_stderr)
625 671
626Create a new OpenCL::Context object using the given device object(s). This 672Create a new OpenCL::Context object using the given device object(s).
627function isn't implemented yet, use C<< $platform->context >> instead. 673Consider using C<< $platform->context >> instead.
628 674
629L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContext.html> 675L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContext.html>
630 676
631=item OpenCL::wait_for_events $wait_events... 677=item OpenCL::wait_for_events $wait_events...
632 678
713L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContextFromType.html> 759L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContextFromType.html>
714 760
715=item $ctx = $platform->context ($properties, \@devices, $callback->($err, $pvt) = $print_stderr) 761=item $ctx = $platform->context ($properties, \@devices, $callback->($err, $pvt) = $print_stderr)
716 762
717Create a new OpenCL::Context object using the given device object(s)- a 763Create a new OpenCL::Context object using the given device object(s)- a
718CL_CONTEXT_PLATFORM property is supplied automatically. 764OpenCL::CONTEXT_PLATFORM property is supplied automatically.
719 765
720L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContext.html> 766L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContext.html>
721 767
722=item $packed_value = $platform->info ($name) 768=item $packed_value = $platform->info ($name)
723 769
768=over 4 814=over 4
769 815
770=item $packed_value = $device->info ($name) 816=item $packed_value = $device->info ($name)
771 817
772See C<< $platform->info >> for details. 818See C<< $platform->info >> for details.
819
820type: OpenCL::DEVICE_TYPE_DEFAULT, OpenCL::DEVICE_TYPE_CPU,
821OpenCL::DEVICE_TYPE_GPU, OpenCL::DEVICE_TYPE_ACCELERATOR,
822OpenCL::DEVICE_TYPE_CUSTOM, OpenCL::DEVICE_TYPE_ALL.
823
824fp_config: OpenCL::FP_DENORM, OpenCL::FP_INF_NAN, OpenCL::FP_ROUND_TO_NEAREST,
825OpenCL::FP_ROUND_TO_ZERO, OpenCL::FP_ROUND_TO_INF, OpenCL::FP_FMA,
826OpenCL::FP_SOFT_FLOAT, OpenCL::FP_CORRECTLY_ROUNDED_DIVIDE_SQRT.
827
828mem_cache_type: OpenCL::NONE, OpenCL::READ_ONLY_CACHE, OpenCL::READ_WRITE_CACHE.
829
830local_mem_type: OpenCL::LOCAL, OpenCL::GLOBAL.
831
832exec_capabilities: OpenCL::EXEC_KERNEL, OpenCL::EXEC_NATIVE_KERNEL.
833
834command_queue_properties: OpenCL::QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE,
835OpenCL::QUEUE_PROFILING_ENABLE.
836
837partition_properties: OpenCL::DEVICE_PARTITION_EQUALLY,
838OpenCL::DEVICE_PARTITION_BY_COUNTS, OpenCL::DEVICE_PARTITION_BY_COUNTS_LIST_END,
839OpenCL::DEVICE_PARTITION_BY_AFFINITY_DOMAIN.
840
841affinity_domain: OpenCL::DEVICE_AFFINITY_DOMAIN_NUMA,
842OpenCL::DEVICE_AFFINITY_DOMAIN_L4_CACHE, OpenCL::DEVICE_AFFINITY_DOMAIN_L3_CACHE,
843OpenCL::DEVICE_AFFINITY_DOMAIN_L2_CACHE, OpenCL::DEVICE_AFFINITY_DOMAIN_L1_CACHE,
844OpenCL::DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE.
773 845
774L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetDeviceInfo.html> 846L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetDeviceInfo.html>
775 847
776=item @devices = $device->sub_devices (\@properties) 848=item @devices = $device->sub_devices (\@properties)
777 849
1157OpenCL::UNORM_INT16, OpenCL::UNORM_SHORT_565, OpenCL::UNORM_SHORT_555, 1229OpenCL::UNORM_INT16, OpenCL::UNORM_SHORT_565, OpenCL::UNORM_SHORT_555,
1158OpenCL::UNORM_INT_101010, OpenCL::SIGNED_INT8, OpenCL::SIGNED_INT16, 1230OpenCL::UNORM_INT_101010, OpenCL::SIGNED_INT8, OpenCL::SIGNED_INT16,
1159OpenCL::SIGNED_INT32, OpenCL::UNSIGNED_INT8, OpenCL::UNSIGNED_INT16, 1231OpenCL::SIGNED_INT32, OpenCL::UNSIGNED_INT8, OpenCL::UNSIGNED_INT16,
1160OpenCL::UNSIGNED_INT32, OpenCL::HALF_FLOAT, OpenCL::FLOAT. 1232OpenCL::UNSIGNED_INT32, OpenCL::HALF_FLOAT, OpenCL::FLOAT.
1161 1233
1162
1163type: OpenCL::MEM_OBJECT_BUFFER, OpenCL::MEM_OBJECT_IMAGE2D, 1234type: OpenCL::MEM_OBJECT_BUFFER, OpenCL::MEM_OBJECT_IMAGE2D,
1164OpenCL::MEM_OBJECT_IMAGE3D, OpenCL::MEM_OBJECT_IMAGE2D_ARRAY, 1235OpenCL::MEM_OBJECT_IMAGE3D, OpenCL::MEM_OBJECT_IMAGE2D_ARRAY,
1165OpenCL::MEM_OBJECT_IMAGE1D, OpenCL::MEM_OBJECT_IMAGE1D_ARRAY, 1236OpenCL::MEM_OBJECT_IMAGE1D, OpenCL::MEM_OBJECT_IMAGE1D_ARRAY,
1166OpenCL::MEM_OBJECT_IMAGE1D_BUFFER. 1237OpenCL::MEM_OBJECT_IMAGE1D_BUFFER.
1167 1238
1264 1335
1265Creates a new OpenCL::Program object from the given built-in kernel names. 1336Creates a new OpenCL::Program object from the given built-in kernel names.
1266 1337
1267L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clCreateProgramWithBuiltInKernels.html> 1338L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clCreateProgramWithBuiltInKernels.html>
1268 1339
1340=item $program = $ctx->link_program (\@devices, $options, \@programs, $cb->($program) = undef)
1341
1342Links all (already compiled) program objects specified in C<@programs>
1343together and returns a new OpenCL::Program object with the result.
1344
1345L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clLinkProgram.html>
1346
1269=item $packed_value = $ctx->info ($name) 1347=item $packed_value = $ctx->info ($name)
1270 1348
1271See C<< $platform->info >> for details. 1349See C<< $platform->info >> for details.
1272 1350
1273L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetContextInfo.html> 1351L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetContextInfo.html>
1630=over 4 1708=over 4
1631 1709
1632=item $subbuf = $buf_obj->sub_buffer_region ($flags, $origin, $size) 1710=item $subbuf = $buf_obj->sub_buffer_region ($flags, $origin, $size)
1633 1711
1634Creates an OpenCL::Buffer objects from this buffer and returns it. The 1712Creates an OpenCL::Buffer objects from this buffer and returns it. The
1635C<buffer_create_type> is assumed to be C<CL_BUFFER_CREATE_TYPE_REGION>. 1713C<buffer_create_type> is assumed to be C<OpenCL::BUFFER_CREATE_TYPE_REGION>.
1636 1714
1637L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateSubBuffer.html> 1715L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateSubBuffer.html>
1638 1716
1639=back 1717=back
1640 1718
1656L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetImageInfo.html> 1734L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetImageInfo.html>
1657 1735
1658=item ($channel_order, $channel_data_type) = $image->format 1736=item ($channel_order, $channel_data_type) = $image->format
1659 1737
1660Returns the channel order and type used to create the image by calling 1738Returns the channel order and type used to create the image by calling
1661C<clGetImageInfo> with C<CL_IMAGE_FORMAT>. 1739C<clGetImageInfo> with C<OpenCL::IMAGE_FORMAT>.
1662 1740
1663=for gengetinfo begin image 1741=for gengetinfo begin image
1664 1742
1665=item $int = $image->element_size 1743=item $int = $image->element_size
1666 1744
1766C<-cl-mad-enable>, C<-cl-no-signed-zeros>, C<-cl-unsafe-math-optimizations>, 1844C<-cl-mad-enable>, C<-cl-no-signed-zeros>, C<-cl-unsafe-math-optimizations>,
1767C<-cl-finite-math-only>, C<-cl-fast-relaxed-math>, 1845C<-cl-finite-math-only>, C<-cl-fast-relaxed-math>,
1768C<-w>, C<-Werror>, C<-cl-std=CL1.1/CL1.2>, C<-cl-kernel-arg-info>, 1846C<-w>, C<-Werror>, C<-cl-std=CL1.1/CL1.2>, C<-cl-kernel-arg-info>,
1769C<-create-library>, C<-enable-link-options>. 1847C<-create-library>, C<-enable-link-options>.
1770 1848
1849build_status: OpenCL::BUILD_SUCCESS, OpenCL::BUILD_NONE,
1850OpenCL::BUILD_ERROR, OpenCL::BUILD_IN_PROGRESS.
1851
1771L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clBuildProgram.html> 1852L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clBuildProgram.html>
1772 1853
1773=item $program->build_async (\@devices = undef, $options = "", $cb->($program) = undef) 1854=item $program->build_async (\@devices = undef, $options = "", $cb->($program) = undef)
1774 1855
1775Similar to C<< ->build >>, except it starts a thread, and never fails (you 1856Similar to C<< ->build >>, except it starts a thread, and never fails (you
1776need to check the compilation status form the callback, or by polling). 1857need to check the compilation status form the callback, or by polling).
1777 1858
1778build_status: OpenCL::BUILD_SUCCESS, OpenCL::BUILD_NONE, 1859=item $program->compile (\@devices = undef, $options = "", \%headers = undef, $cb->($program) = undef)
1779OpenCL::BUILD_ERROR, OpenCL::BUILD_IN_PROGRESS. 1860
1861Compiles the given program for the given devices (or all devices if
1862undef). If C<$headers> is given, it must be a hashref with include name =>
1863OpenCL::Program pairs.
1864
1865L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clCompileProgram.html>
1780 1866
1781=item $packed_value = $program->build_info ($device, $name) 1867=item $packed_value = $program->build_info ($device, $name)
1782 1868
1783Similar to C<< $platform->info >>, but returns build info for a previous 1869Similar to C<< $platform->info >>, but returns build info for a previous
1784build attempt for the given device. 1870build attempt for the given device.
1785 1871
1872binary_type: OpenCL::PROGRAM_BINARY_TYPE_NONE,
1873OpenCL::PROGRAM_BINARY_TYPE_COMPILED_OBJECT,
1874OpenCL::PROGRAM_BINARY_TYPE_LIBRARY,
1875OpenCL::PROGRAM_BINARY_TYPE_EXECUTABLE.
1876
1786L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetBuildInfo.html> 1877L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetBuildInfo.html>
1787 1878
1788=item $kernel = $program->kernel ($function_name) 1879=item $kernel = $program->kernel ($function_name)
1789 1880
1790Creates an OpenCL::Kernel object out of the named C<__kernel> function in 1881Creates an OpenCL::Kernel object out of the named C<__kernel> function in
1809Calls C<clGetProgramBuildInfo> with C<OpenCL::PROGRAM_BUILD_OPTIONS> and returns the result. 1900Calls C<clGetProgramBuildInfo> with C<OpenCL::PROGRAM_BUILD_OPTIONS> and returns the result.
1810 1901
1811=item $string = $program->build_log ($device) 1902=item $string = $program->build_log ($device)
1812 1903
1813Calls C<clGetProgramBuildInfo> with C<OpenCL::PROGRAM_BUILD_LOG> and returns the result. 1904Calls C<clGetProgramBuildInfo> with C<OpenCL::PROGRAM_BUILD_LOG> and returns the result.
1905
1906=item $binary_type = $program->binary_type ($device)
1907
1908Calls C<clGetProgramBuildInfo> with C<OpenCL::PROGRAM_BINARY_TYPE> and returns the result.
1814 1909
1815=for gengetinfo end program_build 1910=for gengetinfo end program_build
1816 1911
1817=item $packed_value = $program->info ($name) 1912=item $packed_value = $program->info ($name)
1818 1913
1897 1992
1898=item $packed_value = $kernel->work_group_info ($device, $name) 1993=item $packed_value = $kernel->work_group_info ($device, $name)
1899 1994
1900See C<< $platform->info >> for details. 1995See C<< $platform->info >> for details.
1901 1996
1902The reason this method is not called C<info> is that there already is an
1903C<< ->info >> method.
1904
1905L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelWorkGroupInfo.html> 1997L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelWorkGroupInfo.html>
1906 1998
1907=for gengetinfo begin kernel_work_group 1999=for gengetinfo begin kernel_work_group
1908 2000
1909=item $int = $kernel->work_group_size ($device) 2001=item $int = $kernel->work_group_size ($device)
1926 2018
1927Calls C<clGetKernelWorkGroupInfo> with C<OpenCL::KERNEL_PRIVATE_MEM_SIZE> and returns the result. 2019Calls C<clGetKernelWorkGroupInfo> with C<OpenCL::KERNEL_PRIVATE_MEM_SIZE> and returns the result.
1928 2020
1929=for gengetinfo end kernel_work_group 2021=for gengetinfo end kernel_work_group
1930 2022
2023=item $packed_value = $kernel->arg_info ($idx, $name)
2024
2025See C<< $platform->info >> for details.
2026
2027L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clGetKernelArgInfo.html>
2028
1931=for gengetinfo begin kernel_arg_info 2029=for gengetinfo begin kernel_arg
1932 2030
2031=item $kernel_arg_address_qualifier = $kernel->arg_address_qualifier ($idx)
2032
2033Calls C<clGetKernelArgInfo> with C<OpenCL::KERNEL_ARG_ADDRESS_QUALIFIER> and returns the result.
2034
2035=item $kernel_arg_access_qualifier = $kernel->arg_access_qualifier ($idx)
2036
2037Calls C<clGetKernelArgInfo> with C<OpenCL::KERNEL_ARG_ACCESS_QUALIFIER> and returns the result.
2038
2039=item $string = $kernel->arg_type_name ($idx)
2040
2041Calls C<clGetKernelArgInfo> with C<OpenCL::KERNEL_ARG_TYPE_NAME> and returns the result.
2042
2043=item $kernel_arg_type_qualifier = $kernel->arg_type_qualifier ($idx)
2044
2045Calls C<clGetKernelArgInfo> with C<OpenCL::KERNEL_ARG_TYPE_QUALIFIER> and returns the result.
2046
2047=item $string = $kernel->arg_name ($idx)
2048
2049Calls C<clGetKernelArgInfo> with C<OpenCL::KERNEL_ARG_NAME> and returns the result.
2050
1933=for gengetinfo end kernel_arg_info 2051=for gengetinfo end kernel_arg
1934 2052
1935=item $kernel->setf ($format, ...) 2053=item $kernel->setf ($format, ...)
1936 2054
1937Sets the arguments of a kernel. Since OpenCL 1.1 doesn't have a generic 2055Sets the arguments of a kernel. Since OpenCL 1.1 doesn't have a generic
1938way to set arguments (and with OpenCL 1.2 it might be rather slow), you 2056way to set arguments (and with OpenCL 1.2 it might be rather slow), you

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines