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

Comparing OpenCL/OpenCL.pm (file contents):
Revision 1.21 by root, Sun Nov 20 10:21:27 2011 UTC vs.
Revision 1.45 by root, Sat Apr 21 17:50:27 2012 UTC

101 101
102Best run this once to get a feel for the platforms and devices in your 102Best run this once to get a feel for the platforms and devices in your
103system. 103system.
104 104
105 for my $platform (OpenCL::platforms) { 105 for my $platform (OpenCL::platforms) {
106 printf "platform: %s\n", $platform->info (OpenCL::PLATFORM_NAME); 106 printf "platform: %s\n", $platform->name;
107 printf "extensions: %s\n", $platform->info (OpenCL::PLATFORM_EXTENSIONS); 107 printf "extensions: %s\n", $platform->extensions;
108 for my $device ($platform->devices) { 108 for my $device ($platform->devices) {
109 printf "+ device: %s\n", $device->info (OpenCL::DEVICE_NAME); 109 printf "+ device: %s\n", $device->name;
110 my $ctx = $device->context; 110 my $ctx = $platform->context (undef, [$device]);
111 # do stuff 111 # do stuff
112 } 112 }
113 } 113 }
114 114
115=head2 Get a useful context and a command queue. 115=head2 Get a useful context and a command queue.
149 149
150=head2 Create and build a program, then create a kernel out of one of its 150=head2 Create and build a program, then create a kernel out of one of its
151functions. 151functions.
152 152
153 my $src = ' 153 my $src = '
154 __kernel void 154 kernel void
155 squareit (__global float *input, __global float *output) 155 squareit (global float *input, global float *output)
156 { 156 {
157 $id = get_global_id (0); 157 $id = get_global_id (0);
158 output [id] = input [id] * input [id]; 158 output [id] = input [id] * input [id];
159 } 159 }
160 '; 160 ';
161 161
162 my $prog = $ctx->program_with_source ($src); 162 my $prog = $ctx->program_with_source ($src);
163 163
164 # build croaks on compile errors, so catch it and print the compile errors 164 # build croaks on compile errors, so catch it and print the compile errors
165 eval { $prog->build ($dev); 1 } 165 eval { $prog->build ($dev, "-cl-fast-relaxed-math"); 1 }
166 or die $prog->build_info ($dev, OpenCL::PROGRAM_BUILD_LOG); 166 or die $prog->build_log;
167 167
168 my $kernel = $prog->kernel ("squareit"); 168 my $kernel = $prog->kernel ("squareit");
169 169
170=head2 Create some input and output float buffers, then call the 170=head2 Create some input and output float buffers, then call the
171'squareit' kernel on them. 171'squareit' kernel on them.
210 # enqueue an async read 210 # enqueue an async read
211 $ev = $queue->enqueue_read_buffer ($output, 0, 0, OpenCL::SIZEOF_FLOAT * 4, my $data, $ev); 211 $ev = $queue->enqueue_read_buffer ($output, 0, 0, OpenCL::SIZEOF_FLOAT * 4, my $data, $ev);
212 212
213 # wait for the last event to complete 213 # wait for the last event to complete
214 $ev->wait; 214 $ev->wait;
215
216=head2 Use the OpenGL module to share a texture between OpenCL and OpenGL and draw some julia
217set tunnel effect.
218
219This is quite a long example to get you going.
220
221 use OpenGL ":all";
222 use OpenCL;
223
224 # open a window and create a gl texture
225 OpenGL::glpOpenWindow width => 256, height => 256;
226 my $texid = glGenTextures_p 1;
227 glBindTexture GL_TEXTURE_2D, $texid;
228 glTexImage2D_c GL_TEXTURE_2D, 0, GL_RGBA8, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0;
229
230 # find and use the first opencl device that let's us get a shared opengl context
231 my $platform;
232 my $dev;
233 my $ctx;
234
235 for (OpenCL::platforms) {
236 $platform = $_;
237 for ($platform->devices) {
238 $dev = $_;
239 $ctx = $platform->context ([OpenCL::GLX_DISPLAY_KHR, undef, OpenCL::GL_CONTEXT_KHR, undef], [$dev])
240 and last;
241 }
242 }
243
244 $ctx
245 or die "cannot find suitable OpenCL device\n";
246
247 my $queue = $ctx->queue ($dev);
248
249 # now attach an opencl image2d object to the opengl texture
250 my $tex = $ctx->gl_texture2d (OpenCL::MEM_WRITE_ONLY, GL_TEXTURE_2D, 0, $texid);
251
252 # now the boring opencl code
253 my $src = <<EOF;
254 kernel void
255 juliatunnel (write_only image2d_t img, float time)
256 {
257 float2 p = (float2)(get_global_id (0), get_global_id (1)) / 256.f * 2.f - 1.f;
258
259 float2 m = (float2)(1.f, p.y) / fabs (p.x);
260 m.x = fabs (fmod (m.x + time * 0.05f, 4.f)) - 2.f;
261
262 float2 z = m;
263 float2 c = (float2)(sin (time * 0.05005), cos (time * 0.06001));
264
265 for (int i = 0; i < 25 && dot (z, z) < 4.f; ++i)
266 z = (float2)(z.x * z.x - z.y * z.y, 2.f * z.x * z.y) + c;
267
268 float3 colour = (float3)(z.x, z.y, z.x * z.y);
269 write_imagef (img, (int2)(get_global_id (0), get_global_id (1)), (float4)(colour * p.x * p.x, 1.));
270 }
271 EOF
272 my $prog = $ctx->program_with_source ($src);
273 eval { $prog->build ($dev); 1 }
274 or die $prog->build_log ($dev);
275
276 my $kernel = $prog->kernel ("juliatunnel");
277
278 # program compiled, kernel ready, now draw and loop
279
280 for (my $time; ; ++$time) {
281 # acquire objects from opengl
282 $queue->enqueue_acquire_gl_objects ([$tex]);
283
284 # configure and run our kernel
285 $kernel->set_image2d (0, $tex);
286 $kernel->set_float (1, $time);
287 $queue->enqueue_nd_range_kernel ($kernel, undef, [256, 256], undef);
288
289 # release objects to opengl again
290 $queue->enqueue_release_gl_objects ([$tex]);
291
292 # wait
293 $queue->finish;
294
295 # now draw the texture, the defaults should be all right
296 glTexParameterf GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST;
297
298 glEnable GL_TEXTURE_2D;
299 glBegin GL_QUADS;
300 glTexCoord2f 0, 1; glVertex3i -1, -1, -1;
301 glTexCoord2f 0, 0; glVertex3i 1, -1, -1;
302 glTexCoord2f 1, 0; glVertex3i 1, 1, -1;
303 glTexCoord2f 1, 1; glVertex3i -1, 1, -1;
304 glEnd;
305
306 glXSwapBuffers;
307
308 select undef, undef, undef, 1/60;
309 }
215 310
216=head1 DOCUMENTATION 311=head1 DOCUMENTATION
217 312
218=head2 BASIC CONVENTIONS 313=head2 BASIC CONVENTIONS
219 314
241=item * Structures are often specified by flattening out their components 336=item * Structures are often specified by flattening out their components
242as with short vectors, and returned as arrayrefs. 337as with short vectors, and returned as arrayrefs.
243 338
244=item * When enqueuing commands, the wait list is specified by adding 339=item * When enqueuing commands, the wait list is specified by adding
245extra arguments to the function - anywhere a C<$wait_events...> argument 340extra arguments to the function - anywhere a C<$wait_events...> argument
246is documented this can be any number of event objects. 341is documented this can be any number of event objects. As an extsnion
342implemented by this module, C<undef> values will be ignored in the event
343list.
247 344
248=item * When enqueuing commands, if the enqueue method is called in void 345=item * When enqueuing commands, if the enqueue method is called in void
249context, no event is created. In all other contexts an event is returned 346context, no event is created. In all other contexts an event is returned
250by the method. 347by the method.
251 348
271 ulong IV - Q 368 ulong IV - Q
272 float NV float f 369 float NV float f
273 half IV ushort S 370 half IV ushort S
274 double NV double d 371 double NV double d
275 372
373=head2 GLX SUPPORT
374
375Due to the sad state that OpenGL support is in in Perl (mostly the OpenGL
376module, which has little to no documentation and has little to no support
377for glX), this module, as a special extension, treats context creation
378properties C<OpenCL::GLX_DISPLAY_KHR> and C<OpenCL::GL_CONTEXT_KHR>
379specially: If either or both of these are C<undef>, then the OpenCL
380module tries to dynamically resolve C<glXGetCurrentDisplay> and
381C<glXGetCurrentContext>, call these functions and use their return values
382instead.
383
384For this to work, the OpenGL library must be loaded, a GLX context must
385have been created and be made current, and C<dlsym> must be available and
386capable of finding the function via C<RTLD_DEFAULT>.
387
276=head2 THE OpenCL PACKAGE 388=head2 THE OpenCL PACKAGE
277 389
278=over 4 390=over 4
279 391
280=item $int = OpenCL::errno 392=item $int = OpenCL::errno
286 398
287Comverts an error value into a human readable string. 399Comverts an error value into a human readable string.
288 400
289=item $str = OpenCL::enum2str $enum 401=item $str = OpenCL::enum2str $enum
290 402
291Converts most enum values (inof parameter names, image format constants, 403Converts most enum values (of parameter names, image format constants,
292object types, addressing and filter modes, command types etc.) into a 404object types, addressing and filter modes, command types etc.) into a
293human readbale string. When confronted with some random integer it can be 405human readable string. When confronted with some random integer it can be
294very helpful to pass it through this function to maybe get some readable 406very helpful to pass it through this function to maybe get some readable
295string out of it. 407string out of it.
296 408
297=item @platforms = OpenCL::platforms 409=item @platforms = OpenCL::platforms
298 410
322 434
323Returns a list of matching OpenCL::Device objects. 435Returns a list of matching OpenCL::Device objects.
324 436
325=item $ctx = $platform->context_from_type ($properties, $type = OpenCL::DEVICE_TYPE_DEFAULT, $notify = undef) 437=item $ctx = $platform->context_from_type ($properties, $type = OpenCL::DEVICE_TYPE_DEFAULT, $notify = undef)
326 438
327Tries to create a context. Never worked for me, and you need devices explitly anyway. 439Tries to create a context. Never worked for me, and you need devices explicitly anyway.
328 440
329L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContextFromType.html> 441L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContextFromType.html>
330 442
331=item $ctx = $device->context ($properties = undef, @$devices, $notify = undef) 443=item $ctx = $platform->context ($properties = undef, @$devices, $notify = undef)
332 444
333Create a new OpenCL::Context object using the given device object(s)- a 445Create a new OpenCL::Context object using the given device object(s)- a
334CL_CONTEXT_PLATFORM property is supplied automatically. 446CL_CONTEXT_PLATFORM property is supplied automatically.
335 447
336L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContext.html> 448L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateContext.html>
337 449
338=item $packed_value = $platform->info ($name) 450=item $packed_value = $platform->info ($name)
339 451
340Calls C<clGetPlatformInfo> and returns the packed, raw value - for 452Calls C<clGetPlatformInfo> and returns the packed, raw value - for
341strings, this will be the string, for other values you probably need to 453strings, this will be the string (possibly including terminating \0), for
342use the correct C<unpack>. 454other values you probably need to use the correct C<unpack>.
343 455
344It's best to avoid this method and use one of the predefined C<get_*> 456It's best to avoid this method and use one of the following convenience
345methods. 457wrappers.
346 458
347L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetPlatformInfo.html> 459L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetPlatformInfo.html>
348 460
349=for gengetinfo begin platform 461=for gengetinfo begin platform
350 462
351
352=item $string = $platform->profile 463=item $string = $platform->profile
353 464
354Calls C<clGetPlatformInfo> with C<CL_PLATFORM_PROFILE> and returns the result(s). 465Calls C<clGetPlatformInfo> with C<CL_PLATFORM_PROFILE> and returns the result.
355 466
356=item $string = $platform->version 467=item $string = $platform->version
357 468
358Calls C<clGetPlatformInfo> with C<CL_PLATFORM_VERSION> and returns the result(s). 469Calls C<clGetPlatformInfo> with C<CL_PLATFORM_VERSION> and returns the result.
359 470
360=item $string = $platform->name 471=item $string = $platform->name
361 472
362Calls C<clGetPlatformInfo> with C<CL_PLATFORM_NAME> and returns the result(s). 473Calls C<clGetPlatformInfo> with C<CL_PLATFORM_NAME> and returns the result.
363 474
364=item $string = $platform->vendor 475=item $string = $platform->vendor
365 476
366Calls C<clGetPlatformInfo> with C<CL_PLATFORM_VENDOR> and returns the result(s). 477Calls C<clGetPlatformInfo> with C<CL_PLATFORM_VENDOR> and returns the result.
367 478
368=item $string = $platform->extensions 479=item $string = $platform->extensions
369 480
370Calls C<clGetPlatformInfo> with C<CL_PLATFORM_EXTENSIONS> and returns the result(s). 481Calls C<clGetPlatformInfo> with C<CL_PLATFORM_EXTENSIONS> and returns the result.
371 482
372=for gengetinfo end platform 483=for gengetinfo end platform
373 484
374=back 485=back
375 486
383 494
384L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetDeviceInfo.html> 495L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetDeviceInfo.html>
385 496
386=for gengetinfo begin device 497=for gengetinfo begin device
387 498
388
389=item $device_type = $device->type 499=item $device_type = $device->type
390 500
391Calls C<clGetDeviceInfo> with C<CL_DEVICE_TYPE> and returns the result(s). 501Calls C<clGetDeviceInfo> with C<CL_DEVICE_TYPE> and returns the result.
392 502
393=item $uint = $device->vendor_id 503=item $uint = $device->vendor_id
394 504
395Calls C<clGetDeviceInfo> with C<CL_DEVICE_VENDOR_ID> and returns the result(s). 505Calls C<clGetDeviceInfo> with C<CL_DEVICE_VENDOR_ID> and returns the result.
396 506
397=item $uint = $device->max_compute_units 507=item $uint = $device->max_compute_units
398 508
399Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_COMPUTE_UNITS> and returns the result(s). 509Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_COMPUTE_UNITS> and returns the result.
400 510
401=item $uint = $device->max_work_item_dimensions 511=item $uint = $device->max_work_item_dimensions
402 512
403Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS> and returns the result(s). 513Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS> and returns the result.
404 514
405=item $int = $device->max_work_group_size 515=item $int = $device->max_work_group_size
406 516
407Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_GROUP_SIZE> and returns the result(s). 517Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_GROUP_SIZE> and returns the result.
408 518
409=item @ints = $device->max_work_item_sizes 519=item @ints = $device->max_work_item_sizes
410 520
411Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_ITEM_SIZES> and returns the result(s). 521Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WORK_ITEM_SIZES> and returns the result.
412 522
413=item $uint = $device->preferred_vector_width_char 523=item $uint = $device->preferred_vector_width_char
414 524
415Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR> and returns the result(s). 525Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR> and returns the result.
416 526
417=item $uint = $device->preferred_vector_width_short 527=item $uint = $device->preferred_vector_width_short
418 528
419Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT> and returns the result(s). 529Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT> and returns the result.
420 530
421=item $uint = $device->preferred_vector_width_int 531=item $uint = $device->preferred_vector_width_int
422 532
423Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT> and returns the result(s). 533Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT> and returns the result.
424 534
425=item $uint = $device->preferred_vector_width_long 535=item $uint = $device->preferred_vector_width_long
426 536
427Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG> and returns the result(s). 537Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG> and returns the result.
428 538
429=item $uint = $device->preferred_vector_width_float 539=item $uint = $device->preferred_vector_width_float
430 540
431Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT> and returns the result(s). 541Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT> and returns the result.
432 542
433=item $uint = $device->preferred_vector_width_double 543=item $uint = $device->preferred_vector_width_double
434 544
435Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE> and returns the result(s). 545Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE> and returns the result.
436 546
437=item $uint = $device->max_clock_frequency 547=item $uint = $device->max_clock_frequency
438 548
439Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CLOCK_FREQUENCY> and returns the result(s). 549Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CLOCK_FREQUENCY> and returns the result.
440 550
441=item $bitfield = $device->address_bits 551=item $bitfield = $device->address_bits
442 552
443Calls C<clGetDeviceInfo> with C<CL_DEVICE_ADDRESS_BITS> and returns the result(s). 553Calls C<clGetDeviceInfo> with C<CL_DEVICE_ADDRESS_BITS> and returns the result.
444 554
445=item $uint = $device->max_read_image_args 555=item $uint = $device->max_read_image_args
446 556
447Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_READ_IMAGE_ARGS> and returns the result(s). 557Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_READ_IMAGE_ARGS> and returns the result.
448 558
449=item $uint = $device->max_write_image_args 559=item $uint = $device->max_write_image_args
450 560
451Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WRITE_IMAGE_ARGS> and returns the result(s). 561Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_WRITE_IMAGE_ARGS> and returns the result.
452 562
453=item $ulong = $device->max_mem_alloc_size 563=item $ulong = $device->max_mem_alloc_size
454 564
455Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_MEM_ALLOC_SIZE> and returns the result(s). 565Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_MEM_ALLOC_SIZE> and returns the result.
456 566
457=item $int = $device->image2d_max_width 567=item $int = $device->image2d_max_width
458 568
459Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE2D_MAX_WIDTH> and returns the result(s). 569Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE2D_MAX_WIDTH> and returns the result.
460 570
461=item $int = $device->image2d_max_height 571=item $int = $device->image2d_max_height
462 572
463Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE2D_MAX_HEIGHT> and returns the result(s). 573Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE2D_MAX_HEIGHT> and returns the result.
464 574
465=item $int = $device->image3d_max_width 575=item $int = $device->image3d_max_width
466 576
467Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_WIDTH> and returns the result(s). 577Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_WIDTH> and returns the result.
468 578
469=item $int = $device->image3d_max_height 579=item $int = $device->image3d_max_height
470 580
471Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_HEIGHT> and returns the result(s). 581Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_HEIGHT> and returns the result.
472 582
473=item $int = $device->image3d_max_depth 583=item $int = $device->image3d_max_depth
474 584
475Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_DEPTH> and returns the result(s). 585Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE3D_MAX_DEPTH> and returns the result.
476 586
477=item $uint = $device->image_support 587=item $uint = $device->image_support
478 588
479Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE_SUPPORT> and returns the result(s). 589Calls C<clGetDeviceInfo> with C<CL_DEVICE_IMAGE_SUPPORT> and returns the result.
480 590
481=item $int = $device->max_parameter_size 591=item $int = $device->max_parameter_size
482 592
483Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_PARAMETER_SIZE> and returns the result(s). 593Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_PARAMETER_SIZE> and returns the result.
484 594
485=item $uint = $device->max_samplers 595=item $uint = $device->max_samplers
486 596
487Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_SAMPLERS> and returns the result(s). 597Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_SAMPLERS> and returns the result.
488 598
489=item $uint = $device->mem_base_addr_align 599=item $uint = $device->mem_base_addr_align
490 600
491Calls C<clGetDeviceInfo> with C<CL_DEVICE_MEM_BASE_ADDR_ALIGN> and returns the result(s). 601Calls C<clGetDeviceInfo> with C<CL_DEVICE_MEM_BASE_ADDR_ALIGN> and returns the result.
492 602
493=item $uint = $device->min_data_type_align_size 603=item $uint = $device->min_data_type_align_size
494 604
495Calls C<clGetDeviceInfo> with C<CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE> and returns the result(s). 605Calls C<clGetDeviceInfo> with C<CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE> and returns the result.
496 606
497=item $device_fp_config = $device->single_fp_config 607=item $device_fp_config = $device->single_fp_config
498 608
499Calls C<clGetDeviceInfo> with C<CL_DEVICE_SINGLE_FP_CONFIG> and returns the result(s). 609Calls C<clGetDeviceInfo> with C<CL_DEVICE_SINGLE_FP_CONFIG> and returns the result.
500 610
501=item $device_mem_cache_type = $device->global_mem_cache_type 611=item $device_mem_cache_type = $device->global_mem_cache_type
502 612
503Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHE_TYPE> and returns the result(s). 613Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHE_TYPE> and returns the result.
504 614
505=item $uint = $device->global_mem_cacheline_size 615=item $uint = $device->global_mem_cacheline_size
506 616
507Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE> and returns the result(s). 617Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE> and returns the result.
508 618
509=item $ulong = $device->global_mem_cache_size 619=item $ulong = $device->global_mem_cache_size
510 620
511Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHE_SIZE> and returns the result(s). 621Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_CACHE_SIZE> and returns the result.
512 622
513=item $ulong = $device->global_mem_size 623=item $ulong = $device->global_mem_size
514 624
515Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_SIZE> and returns the result(s). 625Calls C<clGetDeviceInfo> with C<CL_DEVICE_GLOBAL_MEM_SIZE> and returns the result.
516 626
517=item $ulong = $device->max_constant_buffer_size 627=item $ulong = $device->max_constant_buffer_size
518 628
519Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE> and returns the result(s). 629Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE> and returns the result.
520 630
521=item $uint = $device->max_constant_args 631=item $uint = $device->max_constant_args
522 632
523Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CONSTANT_ARGS> and returns the result(s). 633Calls C<clGetDeviceInfo> with C<CL_DEVICE_MAX_CONSTANT_ARGS> and returns the result.
524 634
525=item $device_local_mem_type = $device->local_mem_type 635=item $device_local_mem_type = $device->local_mem_type
526 636
527Calls C<clGetDeviceInfo> with C<CL_DEVICE_LOCAL_MEM_TYPE> and returns the result(s). 637Calls C<clGetDeviceInfo> with C<CL_DEVICE_LOCAL_MEM_TYPE> and returns the result.
528 638
529=item $ulong = $device->local_mem_size 639=item $ulong = $device->local_mem_size
530 640
531Calls C<clGetDeviceInfo> with C<CL_DEVICE_LOCAL_MEM_SIZE> and returns the result(s). 641Calls C<clGetDeviceInfo> with C<CL_DEVICE_LOCAL_MEM_SIZE> and returns the result.
532 642
533=item $boolean = $device->error_correction_support 643=item $boolean = $device->error_correction_support
534 644
535Calls C<clGetDeviceInfo> with C<CL_DEVICE_ERROR_CORRECTION_SUPPORT> and returns the result(s). 645Calls C<clGetDeviceInfo> with C<CL_DEVICE_ERROR_CORRECTION_SUPPORT> and returns the result.
536 646
537=item $int = $device->profiling_timer_resolution 647=item $int = $device->profiling_timer_resolution
538 648
539Calls C<clGetDeviceInfo> with C<CL_DEVICE_PROFILING_TIMER_RESOLUTION> and returns the result(s). 649Calls C<clGetDeviceInfo> with C<CL_DEVICE_PROFILING_TIMER_RESOLUTION> and returns the result.
540 650
541=item $boolean = $device->endian_little 651=item $boolean = $device->endian_little
542 652
543Calls C<clGetDeviceInfo> with C<CL_DEVICE_ENDIAN_LITTLE> and returns the result(s). 653Calls C<clGetDeviceInfo> with C<CL_DEVICE_ENDIAN_LITTLE> and returns the result.
544 654
545=item $boolean = $device->available 655=item $boolean = $device->available
546 656
547Calls C<clGetDeviceInfo> with C<CL_DEVICE_AVAILABLE> and returns the result(s). 657Calls C<clGetDeviceInfo> with C<CL_DEVICE_AVAILABLE> and returns the result.
548 658
549=item $boolean = $device->compiler_available 659=item $boolean = $device->compiler_available
550 660
551Calls C<clGetDeviceInfo> with C<CL_DEVICE_COMPILER_AVAILABLE> and returns the result(s). 661Calls C<clGetDeviceInfo> with C<CL_DEVICE_COMPILER_AVAILABLE> and returns the result.
552 662
553=item $device_exec_capabilities = $device->execution_capabilities 663=item $device_exec_capabilities = $device->execution_capabilities
554 664
555Calls C<clGetDeviceInfo> with C<CL_DEVICE_EXECUTION_CAPABILITIES> and returns the result(s). 665Calls C<clGetDeviceInfo> with C<CL_DEVICE_EXECUTION_CAPABILITIES> and returns the result.
556 666
557=item $command_queue_properties = $device->properties 667=item $command_queue_properties = $device->properties
558 668
559Calls C<clGetDeviceInfo> with C<CL_DEVICE_QUEUE_PROPERTIES> and returns the result(s). 669Calls C<clGetDeviceInfo> with C<CL_DEVICE_QUEUE_PROPERTIES> and returns the result.
560 670
561=item $ = $device->platform 671=item $ = $device->platform
562 672
563Calls C<clGetDeviceInfo> with C<CL_DEVICE_PLATFORM> and returns the result(s). 673Calls C<clGetDeviceInfo> with C<CL_DEVICE_PLATFORM> and returns the result.
564 674
565=item $string = $device->name 675=item $string = $device->name
566 676
567Calls C<clGetDeviceInfo> with C<CL_DEVICE_NAME> and returns the result(s). 677Calls C<clGetDeviceInfo> with C<CL_DEVICE_NAME> and returns the result.
568 678
569=item $string = $device->vendor 679=item $string = $device->vendor
570 680
571Calls C<clGetDeviceInfo> with C<CL_DEVICE_VENDOR> and returns the result(s). 681Calls C<clGetDeviceInfo> with C<CL_DEVICE_VENDOR> and returns the result.
572 682
573=item $string = $device->driver_version 683=item $string = $device->driver_version
574 684
575Calls C<clGetDeviceInfo> with C<CL_DRIVER_VERSION> and returns the result(s). 685Calls C<clGetDeviceInfo> with C<CL_DRIVER_VERSION> and returns the result.
576 686
577=item $string = $device->profile 687=item $string = $device->profile
578 688
579Calls C<clGetDeviceInfo> with C<CL_DEVICE_PROFILE> and returns the result(s). 689Calls C<clGetDeviceInfo> with C<CL_DEVICE_PROFILE> and returns the result.
580 690
581=item $string = $device->version 691=item $string = $device->version
582 692
583Calls C<clGetDeviceInfo> with C<CL_DEVICE_VERSION> and returns the result(s). 693Calls C<clGetDeviceInfo> with C<CL_DEVICE_VERSION> and returns the result.
584 694
585=item $string = $device->extensions 695=item $string = $device->extensions
586 696
587Calls C<clGetDeviceInfo> with C<CL_DEVICE_EXTENSIONS> and returns the result(s). 697Calls C<clGetDeviceInfo> with C<CL_DEVICE_EXTENSIONS> and returns the result.
588 698
589=item $uint = $device->preferred_vector_width_half 699=item $uint = $device->preferred_vector_width_half
590 700
591Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF> and returns the result(s). 701Calls C<clGetDeviceInfo> with C<CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF> and returns the result.
592 702
593=item $uint = $device->native_vector_width_char 703=item $uint = $device->native_vector_width_char
594 704
595Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR> and returns the result(s). 705Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR> and returns the result.
596 706
597=item $uint = $device->native_vector_width_short 707=item $uint = $device->native_vector_width_short
598 708
599Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT> and returns the result(s). 709Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT> and returns the result.
600 710
601=item $uint = $device->native_vector_width_int 711=item $uint = $device->native_vector_width_int
602 712
603Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_INT> and returns the result(s). 713Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_INT> and returns the result.
604 714
605=item $uint = $device->native_vector_width_long 715=item $uint = $device->native_vector_width_long
606 716
607Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG> and returns the result(s). 717Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG> and returns the result.
608 718
609=item $uint = $device->native_vector_width_float 719=item $uint = $device->native_vector_width_float
610 720
611Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT> and returns the result(s). 721Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT> and returns the result.
612 722
613=item $uint = $device->native_vector_width_double 723=item $uint = $device->native_vector_width_double
614 724
615Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE> and returns the result(s). 725Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE> and returns the result.
616 726
617=item $uint = $device->native_vector_width_half 727=item $uint = $device->native_vector_width_half
618 728
619Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF> and returns the result(s). 729Calls C<clGetDeviceInfo> with C<CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF> and returns the result.
620 730
621=item $device_fp_config = $device->double_fp_config 731=item $device_fp_config = $device->double_fp_config
622 732
623Calls C<clGetDeviceInfo> with C<CL_DEVICE_DOUBLE_FP_CONFIG> and returns the result(s). 733Calls C<clGetDeviceInfo> with C<CL_DEVICE_DOUBLE_FP_CONFIG> and returns the result.
624 734
625=item $device_fp_config = $device->half_fp_config 735=item $device_fp_config = $device->half_fp_config
626 736
627Calls C<clGetDeviceInfo> with C<CL_DEVICE_HALF_FP_CONFIG> and returns the result(s). 737Calls C<clGetDeviceInfo> with C<CL_DEVICE_HALF_FP_CONFIG> and returns the result.
628 738
629=item $boolean = $device->host_unified_memory 739=item $boolean = $device->host_unified_memory
630 740
631Calls C<clGetDeviceInfo> with C<CL_DEVICE_HOST_UNIFIED_MEMORY> and returns the result(s). 741Calls C<clGetDeviceInfo> with C<CL_DEVICE_HOST_UNIFIED_MEMORY> and returns the result.
632 742
633=item $device = $device->parent_device_ext 743=item $device = $device->parent_device_ext
634 744
635Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARENT_DEVICE_EXT> and returns the result(s). 745Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARENT_DEVICE_EXT> and returns the result.
636 746
637=item @device_partition_property_exts = $device->partition_types_ext 747=item @device_partition_property_exts = $device->partition_types_ext
638 748
639Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARTITION_TYPES_EXT> and returns the result(s). 749Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARTITION_TYPES_EXT> and returns the result.
640 750
641=item @device_partition_property_exts = $device->affinity_domains_ext 751=item @device_partition_property_exts = $device->affinity_domains_ext
642 752
643Calls C<clGetDeviceInfo> with C<CL_DEVICE_AFFINITY_DOMAINS_EXT> and returns the result(s). 753Calls C<clGetDeviceInfo> with C<CL_DEVICE_AFFINITY_DOMAINS_EXT> and returns the result.
644 754
645=item $uint = $device->reference_count_ext 755=item $uint = $device->reference_count_ext
646 756
647Calls C<clGetDeviceInfo> with C<CL_DEVICE_REFERENCE_COUNT_EXT > and returns the result(s). 757Calls C<clGetDeviceInfo> with C<CL_DEVICE_REFERENCE_COUNT_EXT > and returns the result.
648 758
649=item @device_partition_property_exts = $device->partition_style_ext 759=item @device_partition_property_exts = $device->partition_style_ext
650 760
651Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARTITION_STYLE_EXT> and returns the result(s). 761Calls C<clGetDeviceInfo> with C<CL_DEVICE_PARTITION_STYLE_EXT> and returns the result.
652 762
653=for gengetinfo end device 763=for gengetinfo end device
654 764
655=back 765=back
656 766
662 772
663Create a new OpenCL::Queue object from the context and the given device. 773Create a new OpenCL::Queue object from the context and the given device.
664 774
665L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateCommandQueue.html> 775L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateCommandQueue.html>
666 776
777Example: create an out-of-order queue.
778
779 $queue = $ctx->queue ($device, OpenCL::QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE);
780
667=item $ev = $ctx->user_event 781=item $ev = $ctx->user_event
668 782
669Creates a new OpenCL::UserEvent object. 783Creates a new OpenCL::UserEvent object.
670 784
671L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateUserEvent.html> 785L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateUserEvent.html>
672 786
673=item $buf = $ctx->buffer ($flags, $len) 787=item $buf = $ctx->buffer ($flags, $len)
674 788
675Creates a new OpenCL::Buffer object with the given flags and octet-size. 789Creates a new OpenCL::Buffer (actually OpenCL::BufferObj) object with the
790given flags and octet-size.
676 791
677L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateBuffer.html> 792L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateBuffer.html>
678 793
679=item $buf = $ctx->buffer_sv ($flags, $data) 794=item $buf = $ctx->buffer_sv ($flags, $data)
680 795
681Creates a new OpenCL::Buffer object and initialise it with the given data values. 796Creates a new OpenCL::Buffer (actually OpenCL::BufferObj) object and
797initialise it with the given data values.
682 798
683=item $img = $ctx->image2d ($flags, $channel_order, $channel_type, $width, $height, $row_pitch = 0, $data = undef) 799=item $img = $ctx->image2d ($flags, $channel_order, $channel_type, $width, $height, $row_pitch = 0, $data = undef)
684 800
685Creates a new OpenCL::Image2D object and optionally initialises it with the given data values. 801Creates a new OpenCL::Image2D object and optionally initialises it with
802the given data values.
686 803
687L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateImage2D.html> 804L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateImage2D.html>
688 805
689=item $img = $ctx->image3d ($flags, $channel_order, $channel_type, $width, $height, $depth, $row_pitch = 0, $slice_pitch = 0, $data = undef) 806=item $img = $ctx->image3d ($flags, $channel_order, $channel_type, $width, $height, $depth, $row_pitch = 0, $slice_pitch = 0, $data = undef)
690 807
691Creates a new OpenCL::Image3D object and optionally initialises it with the given data values. 808Creates a new OpenCL::Image3D object and optionally initialises it with
809the given data values.
692 810
693L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateImage3D.html> 811L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateImage3D.html>
812
813=item $buffer = $ctx->gl_buffer ($flags, $bufobj)
814
815Creates a new OpenCL::Buffer (actually OpenCL::BufferObj) object that refers to the given
816OpenGL buffer object.
817
818http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLBuffer.html
819
820=item $ctx->gl_texture2d ($flags, $target, $miplevel, $texture)
821
822Creates a new OpenCL::Image2D object that refers to the given OpenGL
8232D texture object.
824
825http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLTexture2D.html
826
827=item $ctx->gl_texture3d ($flags, $target, $miplevel, $texture)
828
829Creates a new OpenCL::Image3D object that refers to the given OpenGL
8303D texture object.
831
832http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLTexture3D.html
833
834=item $ctx->gl_renderbuffer ($flags, $renderbuffer)
835
836Creates a new OpenCL::Image2D object that refers to the given OpenGL
837render buffer.
838
839http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLRenderbuffer.html
694 840
695=item @formats = $ctx->supported_image_formats ($flags, $image_type) 841=item @formats = $ctx->supported_image_formats ($flags, $image_type)
696 842
697Returns a list of matching image formats - each format is an arrayref with 843Returns a list of matching image formats - each format is an arrayref with
698two values, $channel_order and $channel_type, in it. 844two values, $channel_order and $channel_type, in it.
717 863
718L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetContextInfo.html> 864L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetContextInfo.html>
719 865
720=for gengetinfo begin context 866=for gengetinfo begin context
721 867
722
723=item $uint = $context->reference_count 868=item $uint = $context->reference_count
724 869
725Calls C<clGetContextInfo> with C<CL_CONTEXT_REFERENCE_COUNT> and returns the result(s). 870Calls C<clGetContextInfo> with C<CL_CONTEXT_REFERENCE_COUNT> and returns the result.
726 871
727=item @devices = $context->devices 872=item @devices = $context->devices
728 873
729Calls C<clGetContextInfo> with C<CL_CONTEXT_DEVICES> and returns the result(s). 874Calls C<clGetContextInfo> with C<CL_CONTEXT_DEVICES> and returns the result.
730 875
731=item @property_ints = $context->properties 876=item @property_ints = $context->properties
732 877
733Calls C<clGetContextInfo> with C<CL_CONTEXT_PROPERTIES> and returns the result(s). 878Calls C<clGetContextInfo> with C<CL_CONTEXT_PROPERTIES> and returns the result.
734 879
735=item $uint = $context->num_devices 880=item $uint = $context->num_devices
736 881
737Calls C<clGetContextInfo> with C<CL_CONTEXT_NUM_DEVICES> and returns the result(s). 882Calls C<clGetContextInfo> with C<CL_CONTEXT_NUM_DEVICES> and returns the result.
738 883
739=for gengetinfo end context 884=for gengetinfo end context
740 885
741=back 886=back
742 887
750for completion, unless the method is called in void context, in which case 895for completion, unless the method is called in void context, in which case
751no event object is created. 896no event object is created.
752 897
753They also allow you to specify any number of other event objects that this 898They also allow you to specify any number of other event objects that this
754request has to wait for before it starts executing, by simply passing the 899request has to wait for before it starts executing, by simply passing the
755event objects as extra parameters to the enqueue methods. 900event objects as extra parameters to the enqueue methods. To simplify
901program design, this module ignores any C<undef> values in the list of
902events. This makes it possible to code operations such as this, without
903having to put a valid event object into C<$event> first:
904
905 $event = $queue->enqueue_xxx (..., $event);
756 906
757Queues execute in-order by default, without any parallelism, so in most 907Queues execute in-order by default, without any parallelism, so in most
758cases (i.e. you use only one queue) it's not necessary to wait for or 908cases (i.e. you use only one queue) it's not necessary to wait for or
759create event objects. 909create event objects, althoguh an our of order queue is often a bit
910faster.
760 911
761=over 4 912=over 4
762 913
763=item $ev = $queue->enqueue_read_buffer ($buffer, $blocking, $offset, $len, $data, $wait_events...) 914=item $ev = $queue->enqueue_read_buffer ($buffer, $blocking, $offset, $len, $data, $wait_events...)
764 915
774 925
775=item $ev = $queue->enqueue_copy_buffer ($src, $dst, $src_offset, $dst_offset, $len, $wait_events...) 926=item $ev = $queue->enqueue_copy_buffer ($src, $dst, $src_offset, $dst_offset, $len, $wait_events...)
776 927
777L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBuffer.html> 928L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBuffer.html>
778 929
930=item $ev = $queue->enqueue_read_buffer_rect (OpenCL::Memory buf, cl_bool blocking, $buf_x, $buf_y, $buf_z, $host_x, $host_y, $host_z, $width, $height, $depth, $buf_row_pitch, $buf_slice_pitch, $host_row_pitch, $host_slice_pitch, $data, $wait_events...)
931
932http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReadBufferRect.html
933
934=item $ev = $queue->enqueue_write_buffer_rect (OpenCL::Memory buf, cl_bool blocking, $buf_x, $buf_y, $buf_z, $host_x, $host_y, $host_z, $width, $height, $depth, $buf_row_pitch, $buf_slice_pitch, $host_row_pitch, $host_slice_pitch, $data, $wait_events...)
935
936http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWriteBufferRect.html
937
779=item $ev = $queue->enqueue_read_image ($src, $blocking, $x, $y, $z, $width, $height, $depth, $row_pitch, $slice_pitch, $data, $wait_events...) 938=item $ev = $queue->enqueue_read_image ($src, $blocking, $x, $y, $z, $width, $height, $depth, $row_pitch, $slice_pitch, $data, $wait_events...)
780 939
940L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferRect.html>
941
942=item $ev = $queue->enqueue_copy_buffer_to_image ($src_buffer, $dst_image, $src_offset, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...)
943
781L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReadImage.html> 944L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReadImage.html>
782 945
783=item $ev = $queue->enqueue_write_image ($src, $blocking, $x, $y, $z, $width, $height, $depth, $row_pitch, $slice_pitch, $data, $wait_events...) 946=item $ev = $queue->enqueue_write_image ($src, $blocking, $x, $y, $z, $width, $height, $depth, $row_pitch, $slice_pitch, $data, $wait_events...)
784 947
785L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWriteImage.html> 948L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWriteImage.html>
786 949
950=item $ev = $queue->enqueue_copy_image ($src_image, $dst_image, $src_x, $src_y, $src_z, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...)
951
952L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyImage.html>
953
954=item $ev = $queue->enqueue_copy_image_to_buffer ($src_image, $dst_image, $src_x, $src_y, $src_z, $width, $height, $depth, $dst_offset, $wait_events...)
955
956L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyImageToBuffer.html>
957
787=item $ev = $queue->enqueue_copy_buffer_rect ($src, $dst, $src_x, $src_y, $src_z, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $src_row_pitch, $src_slice_pitch, $dst_row_pitch, $dst_slice_pitch, $wait_event...) 958=item $ev = $queue->enqueue_copy_buffer_rect ($src, $dst, $src_x, $src_y, $src_z, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $src_row_pitch, $src_slice_pitch, $dst_row_pitch, $dst_slice_pitch, $wait_event...)
788 959
789Yeah. 960Yeah.
790 961
791L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferRect.html>
792
793=item $ev = $queue->enqueue_copy_buffer_to_image ($src_buffer, $dst_image, $src_offset, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...)
794
795L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferToImage.html>. 962L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyBufferToImage.html>.
796
797=item $ev = $queue->enqueue_copy_image ($src_image, $dst_image, $src_x, $src_y, $src_z, $dst_x, $dst_y, $dst_z, $width, $height, $depth, $wait_events...)
798
799L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyImage.html>
800
801=item $ev = $queue->enqueue_copy_image_to_buffer ($src_image, $dst_image, $src_x, $src_y, $src_z, $width, $height, $depth, $dst_offset, $wait_events...)
802
803L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueCopyImageToBuffer.html>
804 963
805=item $ev = $queue->enqueue_task ($kernel, $wait_events...) 964=item $ev = $queue->enqueue_task ($kernel, $wait_events...)
806 965
807L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueTask.html> 966L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueTask.html>
808 967
822reference to an array of local work sizes, with the same number of 981reference to an array of local work sizes, with the same number of
823elements as @$global_work_size. 982elements as @$global_work_size.
824 983
825L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueNDRangeKernel.html> 984L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueNDRangeKernel.html>
826 985
827=item $ev = $queue->enqueue_marker 986=item $ev = $queue->enqueue_marker ($wait_events...)
828 987
829L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueMarker.html> 988L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueMarker.html>
830 989
990=item $ev = $queue->enqueue_acquire_gl_objects ([object, ...], $wait_events...)
991
992Enqueues a list (an array-ref of OpenCL::Memory objects) to be acquired
993for subsequent OpenCL usage.
994
995L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueAcquireGLObjects.html>
996
997=item $ev = $queue->enqueue_release_gl_objects ([object, ...], $wait_events...)
998
999Enqueues a list (an array-ref of OpenCL::Memory objects) to be released
1000for subsequent OpenGL usage.
1001
1002L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueReleaseGLObjects.html>
1003
831=item $ev = $queue->enqueue_wait_for_events ($wait_events...) 1004=item $ev = $queue->enqueue_wait_for_events ($wait_events...)
832 1005
833L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWaitForEvents.html> 1006L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWaitForEvents.html>
834 1007
835=item $queue->enqueue_barrier 1008=item $queue->enqueue_barrier
850 1023
851L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetCommandQueueInfo.html> 1024L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetCommandQueueInfo.html>
852 1025
853=for gengetinfo begin command_queue 1026=for gengetinfo begin command_queue
854 1027
855
856=item $ctx = $command_queue->context 1028=item $ctx = $command_queue->context
857 1029
858Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_CONTEXT> and returns the result(s). 1030Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_CONTEXT> and returns the result.
859 1031
860=item $device = $command_queue->device 1032=item $device = $command_queue->device
861 1033
862Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_DEVICE> and returns the result(s). 1034Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_DEVICE> and returns the result.
863 1035
864=item $uint = $command_queue->reference_count 1036=item $uint = $command_queue->reference_count
865 1037
866Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_REFERENCE_COUNT> and returns the result(s). 1038Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_REFERENCE_COUNT> and returns the result.
867 1039
868=item $command_queue_properties = $command_queue->properties 1040=item $command_queue_properties = $command_queue->properties
869 1041
870Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_PROPERTIES> and returns the result(s). 1042Calls C<clGetCommandQueueInfo> with C<CL_QUEUE_PROPERTIES> and returns the result.
871 1043
872=for gengetinfo end command_queue 1044=for gengetinfo end command_queue
873 1045
874=back 1046=back
875 1047
886 1058
887L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetMemObjectInfo.html> 1059L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetMemObjectInfo.html>
888 1060
889=for gengetinfo begin mem 1061=for gengetinfo begin mem
890 1062
891
892=item $mem_object_type = $mem->type 1063=item $mem_object_type = $mem->type
893 1064
894Calls C<clGetMemObjectInfo> with C<CL_MEM_TYPE> and returns the result(s). 1065Calls C<clGetMemObjectInfo> with C<CL_MEM_TYPE> and returns the result.
895 1066
896=item $mem_flags = $mem->flags 1067=item $mem_flags = $mem->flags
897 1068
898Calls C<clGetMemObjectInfo> with C<CL_MEM_FLAGS> and returns the result(s). 1069Calls C<clGetMemObjectInfo> with C<CL_MEM_FLAGS> and returns the result.
899 1070
900=item $int = $mem->size 1071=item $int = $mem->size
901 1072
902Calls C<clGetMemObjectInfo> with C<CL_MEM_SIZE> and returns the result(s). 1073Calls C<clGetMemObjectInfo> with C<CL_MEM_SIZE> and returns the result.
903 1074
904=item $ptr_value = $mem->host_ptr 1075=item $ptr_value = $mem->host_ptr
905 1076
906Calls C<clGetMemObjectInfo> with C<CL_MEM_HOST_PTR> and returns the result(s). 1077Calls C<clGetMemObjectInfo> with C<CL_MEM_HOST_PTR> and returns the result.
907 1078
908=item $uint = $mem->map_count 1079=item $uint = $mem->map_count
909 1080
910Calls C<clGetMemObjectInfo> with C<CL_MEM_MAP_COUNT> and returns the result(s). 1081Calls C<clGetMemObjectInfo> with C<CL_MEM_MAP_COUNT> and returns the result.
911 1082
912=item $uint = $mem->reference_count 1083=item $uint = $mem->reference_count
913 1084
914Calls C<clGetMemObjectInfo> with C<CL_MEM_REFERENCE_COUNT> and returns the result(s). 1085Calls C<clGetMemObjectInfo> with C<CL_MEM_REFERENCE_COUNT> and returns the result.
915 1086
916=item $ctx = $mem->context 1087=item $ctx = $mem->context
917 1088
918Calls C<clGetMemObjectInfo> with C<CL_MEM_CONTEXT> and returns the result(s). 1089Calls C<clGetMemObjectInfo> with C<CL_MEM_CONTEXT> and returns the result.
919 1090
920=item $mem = $mem->associated_memobject 1091=item $mem = $mem->associated_memobject
921 1092
922Calls C<clGetMemObjectInfo> with C<CL_MEM_ASSOCIATED_MEMOBJECT> and returns the result(s). 1093Calls C<clGetMemObjectInfo> with C<CL_MEM_ASSOCIATED_MEMOBJECT> and returns the result.
923 1094
924=item $int = $mem->offset 1095=item $int = $mem->offset
925 1096
926Calls C<clGetMemObjectInfo> with C<CL_MEM_OFFSET> and returns the result(s). 1097Calls C<clGetMemObjectInfo> with C<CL_MEM_OFFSET> and returns the result.
927 1098
928=for gengetinfo end mem 1099=for gengetinfo end mem
1100
1101=item ($type, $name) = $mem->gl_object_info
1102
1103Returns the OpenGL object type (e.g. OpenCL::GL_OBJECT_TEXTURE2D) and the
1104object "name" (e.g. the texture name) used to create this memory object.
1105
1106L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetGLObjectInfo.html>
1107
1108=back
1109
1110=head2 THE OpenCL::Buffer CLASS
1111
1112This is a subclass of OpenCL::Memory, and the superclass of
1113OpenCL::BufferObj. Its purpose is simply to distinguish between buffers
1114and sub-buffers.
1115
1116=head2 THE OpenCL::BufferObj CLASS
1117
1118This is a subclass of OpenCL::Buffer and thus OpenCL::Memory. It exists
1119because one cna create sub buffers of OpenLC::BufferObj objects, but not
1120sub buffers from these sub buffers.
1121
1122=over 4
1123
1124=item $subbuf = $buf_obj->sub_buffer_region ($flags, $origin, $size)
1125
1126Creates an OpenCL::Buffer objects from this buffer and returns it. The
1127C<buffer_create_type> is assumed to be C<CL_BUFFER_CREATE_TYPE_REGION>.
1128
1129L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateSubBuffer.html>
929 1130
930=back 1131=back
931 1132
932=head2 THE OpenCL::Image CLASS 1133=head2 THE OpenCL::Image CLASS
933 1134
944 1145
945L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetImageInfo.html> 1146L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetImageInfo.html>
946 1147
947=for gengetinfo begin image 1148=for gengetinfo begin image
948 1149
949
950=item $int = $image->element_size 1150=item $int = $image->element_size
951 1151
952Calls C<clGetImageInfo> with C<CL_IMAGE_ELEMENT_SIZE> and returns the result(s). 1152Calls C<clGetImageInfo> with C<CL_IMAGE_ELEMENT_SIZE> and returns the result.
953 1153
954=item $int = $image->row_pitch 1154=item $int = $image->row_pitch
955 1155
956Calls C<clGetImageInfo> with C<CL_IMAGE_ROW_PITCH> and returns the result(s). 1156Calls C<clGetImageInfo> with C<CL_IMAGE_ROW_PITCH> and returns the result.
957 1157
958=item $int = $image->slice_pitch 1158=item $int = $image->slice_pitch
959 1159
960Calls C<clGetImageInfo> with C<CL_IMAGE_SLICE_PITCH> and returns the result(s). 1160Calls C<clGetImageInfo> with C<CL_IMAGE_SLICE_PITCH> and returns the result.
961 1161
962=item $int = $image->width 1162=item $int = $image->width
963 1163
964Calls C<clGetImageInfo> with C<CL_IMAGE_WIDTH> and returns the result(s). 1164Calls C<clGetImageInfo> with C<CL_IMAGE_WIDTH> and returns the result.
965 1165
966=item $int = $image->height 1166=item $int = $image->height
967 1167
968Calls C<clGetImageInfo> with C<CL_IMAGE_HEIGHT> and returns the result(s). 1168Calls C<clGetImageInfo> with C<CL_IMAGE_HEIGHT> and returns the result.
969 1169
970=item $int = $image->depth 1170=item $int = $image->depth
971 1171
972Calls C<clGetImageInfo> with C<CL_IMAGE_DEPTH> and returns the result(s). 1172Calls C<clGetImageInfo> with C<CL_IMAGE_DEPTH> and returns the result.
973 1173
974=for gengetinfo end image 1174=for gengetinfo end image
975 1175
1176=for gengetinfo begin gl_texture
1177
1178=item $GLenum = $gl_texture->target
1179
1180Calls C<clGetGLTextureInfo> with C<CL_GL_TEXTURE_TARGET> and returns the result.
1181
1182=item $GLint = $gl_texture->gl_mipmap_level
1183
1184Calls C<clGetGLTextureInfo> with C<CL_GL_MIPMAP_LEVEL> and returns the result.
1185
1186=for gengetinfo end gl_texture
1187
976=back 1188=back
977 1189
978=head2 THE OpenCL::Sampler CLASS 1190=head2 THE OpenCL::Sampler CLASS
979 1191
980=over 4 1192=over 4
985 1197
986L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetSamplerInfo.html> 1198L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetSamplerInfo.html>
987 1199
988=for gengetinfo begin sampler 1200=for gengetinfo begin sampler
989 1201
990
991=item $uint = $sampler->reference_count 1202=item $uint = $sampler->reference_count
992 1203
993Calls C<clGetSamplerInfo> with C<CL_SAMPLER_REFERENCE_COUNT> and returns the result(s). 1204Calls C<clGetSamplerInfo> with C<CL_SAMPLER_REFERENCE_COUNT> and returns the result.
994 1205
995=item $ctx = $sampler->context 1206=item $ctx = $sampler->context
996 1207
997Calls C<clGetSamplerInfo> with C<CL_SAMPLER_CONTEXT> and returns the result(s). 1208Calls C<clGetSamplerInfo> with C<CL_SAMPLER_CONTEXT> and returns the result.
998 1209
999=item $addressing_mode = $sampler->normalized_coords 1210=item $addressing_mode = $sampler->normalized_coords
1000 1211
1001Calls C<clGetSamplerInfo> with C<CL_SAMPLER_NORMALIZED_COORDS> and returns the result(s). 1212Calls C<clGetSamplerInfo> with C<CL_SAMPLER_NORMALIZED_COORDS> and returns the result.
1002 1213
1003=item $filter_mode = $sampler->addressing_mode 1214=item $filter_mode = $sampler->addressing_mode
1004 1215
1005Calls C<clGetSamplerInfo> with C<CL_SAMPLER_ADDRESSING_MODE> and returns the result(s). 1216Calls C<clGetSamplerInfo> with C<CL_SAMPLER_ADDRESSING_MODE> and returns the result.
1006 1217
1007=item $boolean = $sampler->filter_mode 1218=item $boolean = $sampler->filter_mode
1008 1219
1009Calls C<clGetSamplerInfo> with C<CL_SAMPLER_FILTER_MODE> and returns the result(s). 1220Calls C<clGetSamplerInfo> with C<CL_SAMPLER_FILTER_MODE> and returns the result.
1010 1221
1011=for gengetinfo end sampler 1222=for gengetinfo end sampler
1012 1223
1013=back 1224=back
1014 1225
1036 1247
1037L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateKernel.html> 1248L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateKernel.html>
1038 1249
1039=for gengetinfo begin program_build 1250=for gengetinfo begin program_build
1040 1251
1041
1042=item $build_status = $program->build_status ($device) 1252=item $build_status = $program->build_status ($device)
1043 1253
1044Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_STATUS> and returns the result(s). 1254Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_STATUS> and returns the result.
1045 1255
1046=item $string = $program->build_options ($device) 1256=item $string = $program->build_options ($device)
1047 1257
1048Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_OPTIONS> and returns the result(s). 1258Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_OPTIONS> and returns the result.
1049 1259
1050=item $string = $program->build_log ($device) 1260=item $string = $program->build_log ($device)
1051 1261
1052Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_LOG> and returns the result(s). 1262Calls C<clGetProgramBuildInfo> with C<CL_PROGRAM_BUILD_LOG> and returns the result.
1053 1263
1054=for gengetinfo end program_build 1264=for gengetinfo end program_build
1055 1265
1056=item $packed_value = $program->info ($name) 1266=item $packed_value = $program->info ($name)
1057 1267
1059 1269
1060L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProgramInfo.html> 1270L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProgramInfo.html>
1061 1271
1062=for gengetinfo begin program 1272=for gengetinfo begin program
1063 1273
1064
1065=item $uint = $program->reference_count 1274=item $uint = $program->reference_count
1066 1275
1067Calls C<clGetProgramInfo> with C<CL_PROGRAM_REFERENCE_COUNT> and returns the result(s). 1276Calls C<clGetProgramInfo> with C<CL_PROGRAM_REFERENCE_COUNT> and returns the result.
1068 1277
1069=item $ctx = $program->context 1278=item $ctx = $program->context
1070 1279
1071Calls C<clGetProgramInfo> with C<CL_PROGRAM_CONTEXT> and returns the result(s). 1280Calls C<clGetProgramInfo> with C<CL_PROGRAM_CONTEXT> and returns the result.
1072 1281
1073=item $uint = $program->num_devices 1282=item $uint = $program->num_devices
1074 1283
1075Calls C<clGetProgramInfo> with C<CL_PROGRAM_NUM_DEVICES> and returns the result(s). 1284Calls C<clGetProgramInfo> with C<CL_PROGRAM_NUM_DEVICES> and returns the result.
1076 1285
1077=item @devices = $program->devices 1286=item @devices = $program->devices
1078 1287
1079Calls C<clGetProgramInfo> with C<CL_PROGRAM_DEVICES> and returns the result(s). 1288Calls C<clGetProgramInfo> with C<CL_PROGRAM_DEVICES> and returns the result.
1080 1289
1081=item $string = $program->source 1290=item $string = $program->source
1082 1291
1083Calls C<clGetProgramInfo> with C<CL_PROGRAM_SOURCE> and returns the result(s). 1292Calls C<clGetProgramInfo> with C<CL_PROGRAM_SOURCE> and returns the result.
1084 1293
1085=item @ints = $program->binary_sizes 1294=item @ints = $program->binary_sizes
1086 1295
1087Calls C<clGetProgramInfo> with C<CL_PROGRAM_BINARY_SIZES> and returns the result(s). 1296Calls C<clGetProgramInfo> with C<CL_PROGRAM_BINARY_SIZES> and returns the result.
1088 1297
1089=for gengetinfo end program 1298=for gengetinfo end program
1090 1299
1300=item @blobs = $program->binaries
1301
1302Returns a string for the compiled binary for every device associated with
1303the program, empty strings indicate missing programs, and an empty result
1304means no program binaries are available.
1305
1306These "binaries" are often, in fact, informative low-level assembly
1307sources.
1308
1309L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProgramInfo.html>
1310
1091=back 1311=back
1092 1312
1093=head2 THE OpenCL::Kernel CLASS 1313=head2 THE OpenCL::Kernel CLASS
1094 1314
1095=over 4 1315=over 4
1100 1320
1101L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelInfo.html> 1321L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelInfo.html>
1102 1322
1103=for gengetinfo begin kernel 1323=for gengetinfo begin kernel
1104 1324
1105
1106=item $string = $kernel->function_name 1325=item $string = $kernel->function_name
1107 1326
1108Calls C<clGetKernelInfo> with C<CL_KERNEL_FUNCTION_NAME> and returns the result(s). 1327Calls C<clGetKernelInfo> with C<CL_KERNEL_FUNCTION_NAME> and returns the result.
1109 1328
1110=item $uint = $kernel->num_args 1329=item $uint = $kernel->num_args
1111 1330
1112Calls C<clGetKernelInfo> with C<CL_KERNEL_NUM_ARGS> and returns the result(s). 1331Calls C<clGetKernelInfo> with C<CL_KERNEL_NUM_ARGS> and returns the result.
1113 1332
1114=item $uint = $kernel->reference_count 1333=item $uint = $kernel->reference_count
1115 1334
1116Calls C<clGetKernelInfo> with C<CL_KERNEL_REFERENCE_COUNT> and returns the result(s). 1335Calls C<clGetKernelInfo> with C<CL_KERNEL_REFERENCE_COUNT> and returns the result.
1117 1336
1118=item $ctx = $kernel->context 1337=item $ctx = $kernel->context
1119 1338
1120Calls C<clGetKernelInfo> with C<CL_KERNEL_CONTEXT> and returns the result(s). 1339Calls C<clGetKernelInfo> with C<CL_KERNEL_CONTEXT> and returns the result.
1121 1340
1122=item $program = $kernel->program 1341=item $program = $kernel->program
1123 1342
1124Calls C<clGetKernelInfo> with C<CL_KERNEL_PROGRAM> and returns the result(s). 1343Calls C<clGetKernelInfo> with C<CL_KERNEL_PROGRAM> and returns the result.
1125 1344
1126=for gengetinfo end kernel 1345=for gengetinfo end kernel
1127 1346
1128=item $packed_value = $kernel->work_group_info ($device, $name) 1347=item $packed_value = $kernel->work_group_info ($device, $name)
1129 1348
1134 1353
1135L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelWorkGroupInfo.html> 1354L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetKernelWorkGroupInfo.html>
1136 1355
1137=for gengetinfo begin kernel_work_group 1356=for gengetinfo begin kernel_work_group
1138 1357
1139
1140=item $int = $kernel->work_group_size ($device) 1358=item $int = $kernel->work_group_size ($device)
1141 1359
1142Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_WORK_GROUP_SIZE> and returns the result(s). 1360Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_WORK_GROUP_SIZE> and returns the result.
1143 1361
1144=item @ints = $kernel->compile_work_group_size ($device) 1362=item @ints = $kernel->compile_work_group_size ($device)
1145 1363
1146Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_COMPILE_WORK_GROUP_SIZE> and returns the result(s). 1364Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_COMPILE_WORK_GROUP_SIZE> and returns the result.
1147 1365
1148=item $ulong = $kernel->local_mem_size ($device) 1366=item $ulong = $kernel->local_mem_size ($device)
1149 1367
1150Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_LOCAL_MEM_SIZE> and returns the result(s). 1368Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_LOCAL_MEM_SIZE> and returns the result.
1151 1369
1152=item $int = $kernel->preferred_work_group_size_multiple ($device) 1370=item $int = $kernel->preferred_work_group_size_multiple ($device)
1153 1371
1154Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE> and returns the result(s). 1372Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE> and returns the result.
1155 1373
1156=item $ulong = $kernel->private_mem_size ($device) 1374=item $ulong = $kernel->private_mem_size ($device)
1157 1375
1158Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_PRIVATE_MEM_SIZE> and returns the result(s). 1376Calls C<clGetKernelWorkGroupInfo> with C<CL_KERNEL_PRIVATE_MEM_SIZE> and returns the result.
1159 1377
1160=for gengetinfo end kernel_work_group 1378=for gengetinfo end kernel_work_group
1161 1379
1162=item $kernel->set_TYPE ($index, $value) 1380=item $kernel->set_TYPE ($index, $value)
1163 1381
1164This is a family of methods to set the kernel argument with the number C<$index> to the give C<$value>. 1382This is a family of methods to set the kernel argument with the number C<$index> to the give C<$value>.
1165 1383
1166TYPE is one of C<char>, C<uchar>, C<short>, C<ushort>, C<int>, C<uint>, 1384TYPE is one of C<char>, C<uchar>, C<short>, C<ushort>, C<int>, C<uint>,
1167C<long>, C<ulong>, C<half>, C<float>, C<double>, C<memory>, C<buffer>, 1385C<long>, C<ulong>, C<half>, C<float>, C<double>, C<memory>, C<buffer>,
1168C<image2d>, C<image3d>, C<sampler> or C<event>. 1386C<image2d>, C<image3d>, C<sampler>, C<local> or C<event>.
1169 1387
1170Chars and integers (including the half type) are specified as integers, 1388Chars and integers (including the half type) are specified as integers,
1171float and double as floating point values, memory/buffer/image2d/image3d 1389float and double as floating point values, memory/buffer/image2d/image3d
1172must be an object of that type or C<undef>, and sampler and event must be 1390must be an object of that type or C<undef>, local-memory arguments are
1173objects of that type. 1391set by specifying the size, and sampler and event must be objects of that
1392type.
1174 1393
1175L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clSetKernelArg.html> 1394L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clSetKernelArg.html>
1176 1395
1177=back 1396=back
1178 1397
1195 1414
1196L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetEventInfo.html> 1415L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetEventInfo.html>
1197 1416
1198=for gengetinfo begin event 1417=for gengetinfo begin event
1199 1418
1200
1201=item $queue = $event->command_queue 1419=item $queue = $event->command_queue
1202 1420
1203Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_QUEUE> and returns the result(s). 1421Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_QUEUE> and returns the result.
1204 1422
1205=item $command_type = $event->command_type 1423=item $command_type = $event->command_type
1206 1424
1207Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_TYPE> and returns the result(s). 1425Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_TYPE> and returns the result.
1208 1426
1209=item $uint = $event->reference_count 1427=item $uint = $event->reference_count
1210 1428
1211Calls C<clGetEventInfo> with C<CL_EVENT_REFERENCE_COUNT> and returns the result(s). 1429Calls C<clGetEventInfo> with C<CL_EVENT_REFERENCE_COUNT> and returns the result.
1212 1430
1213=item $uint = $event->command_execution_status 1431=item $uint = $event->command_execution_status
1214 1432
1215Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_EXECUTION_STATUS> and returns the result(s). 1433Calls C<clGetEventInfo> with C<CL_EVENT_COMMAND_EXECUTION_STATUS> and returns the result.
1216 1434
1217=item $ctx = $event->context 1435=item $ctx = $event->context
1218 1436
1219Calls C<clGetEventInfo> with C<CL_EVENT_CONTEXT> and returns the result(s). 1437Calls C<clGetEventInfo> with C<CL_EVENT_CONTEXT> and returns the result.
1220 1438
1221=for gengetinfo end event 1439=for gengetinfo end event
1222 1440
1223=item $packed_value = $ev->profiling_info ($name) 1441=item $packed_value = $ev->profiling_info ($name)
1224 1442
1229 1447
1230L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProfilingInfo.html> 1448L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetProfilingInfo.html>
1231 1449
1232=for gengetinfo begin profiling 1450=for gengetinfo begin profiling
1233 1451
1234
1235=item $ulong = $event->profiling_command_queued 1452=item $ulong = $event->profiling_command_queued
1236 1453
1237Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_QUEUED> and returns the result(s). 1454Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_QUEUED> and returns the result.
1238 1455
1239=item $ulong = $event->profiling_command_submit 1456=item $ulong = $event->profiling_command_submit
1240 1457
1241Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_SUBMIT> and returns the result(s). 1458Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_SUBMIT> and returns the result.
1242 1459
1243=item $ulong = $event->profiling_command_start 1460=item $ulong = $event->profiling_command_start
1244 1461
1245Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_START> and returns the result(s). 1462Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_START> and returns the result.
1246 1463
1247=item $ulong = $event->profiling_command_end 1464=item $ulong = $event->profiling_command_end
1248 1465
1249Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_END> and returns the result(s). 1466Calls C<clGetEventProfilingInfo> with C<CL_PROFILING_COMMAND_END> and returns the result.
1250 1467
1251=for gengetinfo end profiling 1468=for gengetinfo end profiling
1252 1469
1253=back 1470=back
1254 1471
1269package OpenCL; 1486package OpenCL;
1270 1487
1271use common::sense; 1488use common::sense;
1272 1489
1273BEGIN { 1490BEGIN {
1274 our $VERSION = '0.55'; 1491 our $VERSION = '0.96';
1275 1492
1276 require XSLoader; 1493 require XSLoader;
1277 XSLoader::load (__PACKAGE__, $VERSION); 1494 XSLoader::load (__PACKAGE__, $VERSION);
1278 1495
1279 @OpenCL::Buffer::ISA = 1496 @OpenCL::Buffer::ISA =
1280 @OpenCL::Image::ISA = OpenCL::Memory::; 1497 @OpenCL::Image::ISA = OpenCL::Memory::;
1281 1498
1499 @OpenCL::BufferObj::ISA = OpenCL::Buffer::;
1500
1282 @OpenCL::Image2D::ISA = 1501 @OpenCL::Image2D::ISA =
1283 @OpenCL::Image3D::ISA = OpenCL::Image::; 1502 @OpenCL::Image3D::ISA = OpenCL::Image::;
1284 1503
1285 @OpenCL::UserEvent::ISA = OpenCL::Event::; 1504 @OpenCL::UserEvent::ISA = OpenCL::Event::;
1286} 1505}
1287 1506
12881; 15071;
1289 1508
1290=head1 AUTHOR 1509=head1 AUTHOR

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines