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

Comparing OpenCL/OpenCL.pm (file contents):
Revision 1.68 by root, Tue May 1 22:25:13 2012 UTC vs.
Revision 1.69 by root, Thu May 3 23:30:08 2012 UTC

1158 1158
1159Creates a new OpenCL::Program object from the given source code. 1159Creates a new OpenCL::Program object from the given source code.
1160 1160
1161L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateProgramWithSource.html> 1161L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateProgramWithSource.html>
1162 1162
1163=item ($program, \@status) = $ctx->program_with_binary (\@devices, \@binaries)
1164
1165Creates a new OpenCL::Program object from the given binaries.
1166
1167L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateProgramWithBinary.html>
1168
1169Example: clone an existing program object that contains a successfully
1170compiled program, no matter how useless this is.
1171
1172 my $clone = $ctx->program_with_binary ([$prog->devices], [$prog->binaries]);
1173
1163=item $packed_value = $ctx->info ($name) 1174=item $packed_value = $ctx->info ($name)
1164 1175
1165See C<< $platform->info >> for details. 1176See C<< $platform->info >> for details.
1166 1177
1167L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetContextInfo.html> 1178L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetContextInfo.html>
1374 1385
1375OpenCL allows you to map buffers and images to host memory (read: perl 1386OpenCL allows you to map buffers and images to host memory (read: perl
1376scalars). This is done much like reading or copying a buffer, by enqueuing 1387scalars). This is done much like reading or copying a buffer, by enqueuing
1377a map or unmap operation on the command queue. 1388a map or unmap operation on the command queue.
1378 1389
1379The map operations return a C<OpenCL::Mapped> object - see L<THE 1390The map operations return an C<OpenCL::Mapped> object - see L<THE
1380OpenCL::Mapped CLASS> section for details on what to do with these 1391OpenCL::Mapped CLASS> section for details on what to do with these
1381objects. 1392objects.
1382 1393
1383The object will be unmapped automatically when the mapped object is 1394The object will be unmapped automatically when the mapped object is
1384destroyed (you can use a barrier to make sure the unmap has finished, 1395destroyed (you can use a barrier to make sure the unmap has finished,
1385before using the buffer in a kernel), but you can also enqueue an unmap 1396before using the buffer in a kernel), but you can also enqueue an unmap
1386operation manually. 1397operation manually.
1387 1398
1388=over 4 1399=over 4
1389 1400
1390=item $mapped_buffer = $queue->map_buffer ($buf, $data, $blocking=1, $map_flags=OpenCL::MAP_READ|OpenCL::MAP_WRITE, $offset=0, $size=0, $wait_events...) 1401=item $mapped_buffer = $queue->map_buffer ($buf, $blocking=1, $map_flags=OpenCL::MAP_READ|OpenCL::MAP_WRITE, $offset=0, $size=undef, $wait_events...)
1391 1402
1392Maps the given buffer into host memory and returns a C<OpenCL::MappedBuffer> object. 1403Maps the given buffer into host memory and returns an
1404C<OpenCL::MappedBuffer> object. If C<$size> is specified as undef, then
1405the map will extend to the end of the buffer.
1393 1406
1394L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueMapBuffer.html> 1407L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueMapBuffer.html>
1395 1408
1409Example: map the buffer $buf fully and replace the first 4 bytes by "abcd", then unmap.
1410
1411 {
1412 my $mapped = $queue->map_buffer ($buf, 1, OpenCL::MAP_WRITE);
1413 substr $$mapped, 0, 4, "abcd";
1414 } # asynchronously unmap because $mapped is destroyed
1415
1396=item $mapped_image = $queue->map_image ($img, $data, $blocking=1, $map_flags=OpenCL::MAP_READ|OpenCL::MAP_WRITE, $x=0, $y=0, $z=0, $width=0, $height=0, $depth=0, $wait_events...) 1416=item $mapped_image = $queue->map_image ($img, $blocking=1, $map_flags=OpenCL::MAP_READ|OpenCL::MAP_WRITE, $x=0, $y=0, $z=0, $width=undef, $height=undef, $depth=undef, $wait_events...)
1397 1417
1398Maps the given image area into host memory and return a 1418Maps the given image area into host memory and return an
1399C<OpenCL::MappedImage> object. Although there are default values for most 1419C<OpenCL::MappedImage> object.
1400arguments, you currently have to specify all arguments, otherwise the call 1420
1401will fail. 1421If any of C<$width>, C<$height> and/or C<$depth> are C<undef> then they
1422will be replaced by the maximum possible value.
1402 1423
1403L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueMapImage.html> 1424L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueMapImage.html>
1425
1426Example: map an image (with OpenCL::UNSIGNED_INT8 channel type) and set
1427the first channel of the leftmost column to 5, then explicitly unmap
1428it. You are not necessarily meant to do it this way, this example just
1429shows you the accessors to use :)
1430
1431 my $mapped = $queue->map_image ($image, 1, OpenCL::MAP_WRITE);
1432
1433 $mapped->set ($_ * $mapped->row_pitch, pack "C", 5)
1434 for 0..$image->height;
1435
1436 $mapped->unmap;.
1437 $mapped->wait; # only needed for out of order queues normally
1404 1438
1405=item $ev = $queue->unmap ($mapped, $wait_events...) 1439=item $ev = $queue->unmap ($mapped, $wait_events...)
1406 1440
1407Unmaps the data from host memory. You must not call any methods that 1441Unmaps the data from host memory. You must not call any methods that
1408modify the data, or modify the data scalar directly, after calling this 1442modify the data, or modify the data scalar directly, after calling this

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines