… | |
… | |
750 | |
750 | |
751 | =item @device_partition_property_exts = $device->affinity_domains_ext |
751 | =item @device_partition_property_exts = $device->affinity_domains_ext |
752 | |
752 | |
753 | Calls C<clGetDeviceInfo> with C<CL_DEVICE_AFFINITY_DOMAINS_EXT> and returns the result. |
753 | Calls C<clGetDeviceInfo> with C<CL_DEVICE_AFFINITY_DOMAINS_EXT> and returns the result. |
754 | |
754 | |
755 | =item $uint = $device->reference_count_ext |
755 | =item $uint = $device->reference_count_ext |
756 | |
756 | |
757 | Calls C<clGetDeviceInfo> with C<CL_DEVICE_REFERENCE_COUNT_EXT > and returns the result. |
757 | Calls C<clGetDeviceInfo> with C<CL_DEVICE_REFERENCE_COUNT_EXT > and returns the result. |
758 | |
758 | |
759 | =item @device_partition_property_exts = $device->partition_style_ext |
759 | =item @device_partition_property_exts = $device->partition_style_ext |
760 | |
760 | |
… | |
… | |
771 | =item $queue = $ctx->queue ($device, $properties) |
771 | =item $queue = $ctx->queue ($device, $properties) |
772 | |
772 | |
773 | Create a new OpenCL::Queue object from the context and the given device. |
773 | Create a new OpenCL::Queue object from the context and the given device. |
774 | |
774 | |
775 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateCommandQueue.html> |
775 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateCommandQueue.html> |
|
|
776 | |
|
|
777 | Example: create an out-of-order queue. |
|
|
778 | |
|
|
779 | $queue = $ctx->queue ($device, OpenCL::QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE); |
776 | |
780 | |
777 | =item $ev = $ctx->user_event |
781 | =item $ev = $ctx->user_event |
778 | |
782 | |
779 | Creates a new OpenCL::UserEvent object. |
783 | Creates a new OpenCL::UserEvent object. |
780 | |
784 | |
… | |
… | |
811 | Creates a new OpenCL::Buffer (actually OpenCL::BufferObj) object that refers to the given |
815 | Creates a new OpenCL::Buffer (actually OpenCL::BufferObj) object that refers to the given |
812 | OpenGL buffer object. |
816 | OpenGL buffer object. |
813 | |
817 | |
814 | http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLBuffer.html |
818 | http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLBuffer.html |
815 | |
819 | |
|
|
820 | =item $img = $ctx->gl_texture ($flags, $target, $miplevel, $texture) |
|
|
821 | |
|
|
822 | Creates a new OpenCL::Image object that refers to the given OpenGL |
|
|
823 | texture object or buffer. |
|
|
824 | |
|
|
825 | http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clCreateFromGLTexture.html |
|
|
826 | |
816 | =item $ctx->gl_texture2d ($flags, $target, $miplevel, $texture) |
827 | =item $img = $ctx->gl_texture2d ($flags, $target, $miplevel, $texture) |
817 | |
828 | |
818 | Creates a new OpenCL::Image2D object that refers to the given OpenGL |
829 | Creates a new OpenCL::Image2D object that refers to the given OpenGL |
819 | 2D texture object. |
830 | 2D texture object. |
820 | |
831 | |
821 | http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLTexture2D.html |
832 | http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLTexture2D.html |
822 | |
833 | |
823 | =item $ctx->gl_texture3d ($flags, $target, $miplevel, $texture) |
834 | =item $img = $ctx->gl_texture3d ($flags, $target, $miplevel, $texture) |
824 | |
835 | |
825 | Creates a new OpenCL::Image3D object that refers to the given OpenGL |
836 | Creates a new OpenCL::Image3D object that refers to the given OpenGL |
826 | 3D texture object. |
837 | 3D texture object. |
827 | |
838 | |
828 | http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLTexture3D.html |
839 | http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateFromGLTexture3D.html |
… | |
… | |
891 | for completion, unless the method is called in void context, in which case |
902 | for completion, unless the method is called in void context, in which case |
892 | no event object is created. |
903 | no event object is created. |
893 | |
904 | |
894 | They also allow you to specify any number of other event objects that this |
905 | They also allow you to specify any number of other event objects that this |
895 | request has to wait for before it starts executing, by simply passing the |
906 | request has to wait for before it starts executing, by simply passing the |
896 | event objects as extra parameters to the enqueue methods. |
907 | event objects as extra parameters to the enqueue methods. To simplify |
|
|
908 | program design, this module ignores any C<undef> values in the list of |
|
|
909 | events. This makes it possible to code operations such as this, without |
|
|
910 | having to put a valid event object into C<$event> first: |
|
|
911 | |
|
|
912 | $event = $queue->enqueue_xxx (..., $event); |
897 | |
913 | |
898 | Queues execute in-order by default, without any parallelism, so in most |
914 | Queues execute in-order by default, without any parallelism, so in most |
899 | cases (i.e. you use only one queue) it's not necessary to wait for or |
915 | cases (i.e. you use only one queue) it's not necessary to wait for or |
900 | create event objects. |
916 | create event objects, althoguh an our of order queue is often a bit |
|
|
917 | faster. |
901 | |
918 | |
902 | =over 4 |
919 | =over 4 |
903 | |
920 | |
904 | =item $ev = $queue->enqueue_read_buffer ($buffer, $blocking, $offset, $len, $data, $wait_events...) |
921 | =item $ev = $queue->enqueue_read_buffer ($buffer, $blocking, $offset, $len, $data, $wait_events...) |
905 | |
922 | |
… | |
… | |
971 | reference to an array of local work sizes, with the same number of |
988 | reference to an array of local work sizes, with the same number of |
972 | elements as @$global_work_size. |
989 | elements as @$global_work_size. |
973 | |
990 | |
974 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueNDRangeKernel.html> |
991 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueNDRangeKernel.html> |
975 | |
992 | |
976 | =item $ev = $queue->enqueue_marker ($wait_events...) |
|
|
977 | |
|
|
978 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueMarker.html> |
|
|
979 | |
|
|
980 | =item $ev = $queue->enqueue_acquire_gl_objects ([object, ...], $wait_events...) |
993 | =item $ev = $queue->enqueue_acquire_gl_objects ([object, ...], $wait_events...) |
981 | |
994 | |
982 | Enqueues a list (an array-ref of OpenCL::Memory objects) to be acquired |
995 | Enqueues a list (an array-ref of OpenCL::Memory objects) to be acquired |
983 | for subsequent OpenCL usage. |
996 | for subsequent OpenCL usage. |
984 | |
997 | |
… | |
… | |
993 | |
1006 | |
994 | =item $ev = $queue->enqueue_wait_for_events ($wait_events...) |
1007 | =item $ev = $queue->enqueue_wait_for_events ($wait_events...) |
995 | |
1008 | |
996 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWaitForEvents.html> |
1009 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueWaitForEvents.html> |
997 | |
1010 | |
998 | =item $queue->enqueue_barrier |
1011 | =item $ev = $queue->enqueue_marker ($wait_events...) |
999 | |
1012 | |
|
|
1013 | L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueMarkerWithWaitList.html> |
|
|
1014 | |
|
|
1015 | =item $ev = $queue->enqueue_barrier ($wait_events...) |
|
|
1016 | |
1000 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clEnqueueBarrier.html> |
1017 | L<http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueBarrierWithWaitList.html> |
1001 | |
1018 | |
1002 | =item $queue->flush |
1019 | =item $queue->flush |
1003 | |
1020 | |
1004 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clFlush.html> |
1021 | L<http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clFlush.html> |
1005 | |
1022 | |
… | |
… | |
1120 | |
1137 | |
1121 | =back |
1138 | =back |
1122 | |
1139 | |
1123 | =head2 THE OpenCL::Image CLASS |
1140 | =head2 THE OpenCL::Image CLASS |
1124 | |
1141 | |
1125 | This is the superclass of all image objects - OpenCL::Image2D and OpenCL::Image3D. |
1142 | This is the superclass of all image objects - OpenCL::Image1D, |
|
|
1143 | OpenCL::Image1DArray, OpenCL::Image1DBuffer, OpenCL::Image2D, |
|
|
1144 | OpenCL::Image2DArray and OpenCL::Image3D. |
1126 | |
1145 | |
1127 | =over 4 |
1146 | =over 4 |
1128 | |
1147 | |
1129 | =item $packed_value = $ev->image_info ($name) |
1148 | =item $packed_value = $ev->image_info ($name) |
1130 | |
1149 | |
… | |
… | |
1481 | our $VERSION = '0.96'; |
1500 | our $VERSION = '0.96'; |
1482 | |
1501 | |
1483 | require XSLoader; |
1502 | require XSLoader; |
1484 | XSLoader::load (__PACKAGE__, $VERSION); |
1503 | XSLoader::load (__PACKAGE__, $VERSION); |
1485 | |
1504 | |
1486 | @OpenCL::Buffer::ISA = |
1505 | @OpenCL::Buffer::ISA = |
1487 | @OpenCL::Image::ISA = OpenCL::Memory::; |
1506 | @OpenCL::Image::ISA = OpenCL::Memory::; |
1488 | |
1507 | |
1489 | @OpenCL::BufferObj::ISA = OpenCL::Buffer::; |
1508 | @OpenCL::BufferObj::ISA = OpenCL::Buffer::; |
1490 | |
1509 | |
1491 | @OpenCL::Image2D::ISA = |
1510 | @OpenCL::Image2D::ISA = |
|
|
1511 | @OpenCL::Image3D::ISA = |
|
|
1512 | @OpenCL::Image2DArray::ISA = |
|
|
1513 | @OpenCL::Image1D::ISA = |
|
|
1514 | @OpenCL::Image1DArray::ISA = |
1492 | @OpenCL::Image3D::ISA = OpenCL::Image::; |
1515 | @OpenCL::Image1DBuffer::ISA = OpenCL::Image::; |
1493 | |
1516 | |
1494 | @OpenCL::UserEvent::ISA = OpenCL::Event::; |
1517 | @OpenCL::UserEvent::ISA = OpenCL::Event::; |
1495 | } |
1518 | } |
1496 | |
1519 | |
1497 | 1; |
1520 | 1; |
1498 | |
1521 | |
1499 | =head1 AUTHOR |
1522 | =head1 AUTHOR |