opencl_ruby_ffi 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/lib/opencl_ruby_ffi.rb +2 -0
- data/lib/opencl_ruby_ffi/Buffer.rb +18 -13
- data/lib/opencl_ruby_ffi/CommandQueue.rb +301 -302
- data/lib/opencl_ruby_ffi/Context.rb +158 -158
- data/lib/opencl_ruby_ffi/Device.rb +270 -224
- data/lib/opencl_ruby_ffi/Event.rb +40 -36
- data/lib/opencl_ruby_ffi/Image.rb +34 -57
- data/lib/opencl_ruby_ffi/Kernel.rb +251 -191
- data/lib/opencl_ruby_ffi/Mem.rb +49 -70
- data/lib/opencl_ruby_ffi/Pipe.rb +3 -14
- data/lib/opencl_ruby_ffi/Platform.rb +46 -48
- data/lib/opencl_ruby_ffi/Program.rb +131 -124
- data/lib/opencl_ruby_ffi/Sampler.rb +6 -24
- data/lib/opencl_ruby_ffi/amd/device_attribute_query.rb +100 -0
- data/lib/opencl_ruby_ffi/egl.rb +2 -0
- data/lib/opencl_ruby_ffi/ext.rb +11 -0
- data/lib/opencl_ruby_ffi/ext/device_fission.rb +264 -0
- data/lib/opencl_ruby_ffi/gl_ext.rb +2 -0
- data/lib/opencl_ruby_ffi/khr/d3d10_sharing.rb +120 -0
- data/lib/opencl_ruby_ffi/khr/d3d11_sharing.rb +120 -0
- data/lib/opencl_ruby_ffi/khr/dx9_media_sharing.rb +113 -0
- data/lib/opencl_ruby_ffi/khr/egl_event.rb +15 -0
- data/lib/opencl_ruby_ffi/khr/egl_image.rb +58 -0
- data/lib/opencl_ruby_ffi/khr/fp16.rb +23 -0
- data/lib/opencl_ruby_ffi/khr/fp64.rb +23 -0
- data/lib/opencl_ruby_ffi/khr/gl_event.rb +38 -0
- data/lib/opencl_ruby_ffi/khr/gl_sharing.rb +79 -0
- data/lib/opencl_ruby_ffi/khr/icd.rb +30 -0
- data/lib/opencl_ruby_ffi/khr/initalize_memory.rb +19 -0
- data/lib/opencl_ruby_ffi/khr/priority_hints.rb +48 -0
- data/lib/opencl_ruby_ffi/khr/spir.rb +45 -0
- data/lib/opencl_ruby_ffi/khr/sub_groups.rb +49 -0
- data/lib/opencl_ruby_ffi/khr/terminate_context.rb +46 -0
- data/lib/opencl_ruby_ffi/khr/throttle_hints.rb +47 -0
- data/lib/opencl_ruby_ffi/nv/device_attribute_query.rb +50 -0
- data/lib/opencl_ruby_ffi/opencl_ruby_ffi_base.rb +40 -13
- data/lib/opencl_ruby_ffi/opencl_ruby_ffi_base_gen.rb +214 -2114
- data/lib/opencl_ruby_ffi/opencl_types.rb +15 -3
- data/opencl_ruby_ffi.gemspec +4 -4
- data/templates_custom/default/module/setup.rb +9 -0
- metadata +29 -6
- data/lib/opencl_ruby_ffi/GLExt.rb +0 -58
- data/lib/opencl_ruby_ffi/Stream.rb +0 -127
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84004d4b456d5ea8aabfba8a811565b3b551086a
|
4
|
+
data.tar.gz: 89b78273145a8457c34e61ae6e0fb887f8b19b41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d799134cb834e51f1782c07c328bebf91dde9cec0134fbe60400ff4a2f79b46a2db38a0e6fbed5db7b5bf1f067a8843453050a22403ba1f5c1ea4130a7296476
|
7
|
+
data.tar.gz: 8b9c3fa63dca70bf13b7deaca5ac4d1291f24b39c6de642edb1e78c483cb86ad8faa6e22daa7b661987724335400a13ab673be908b614a8c0913ab83c5e00093
|
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
-p templates_custom/ --no-private lib/opencl_ruby_ffi/opencl_ruby_ffi_base_gen.rb lib/opencl_ruby_ffi/opencl_ruby_ffi_base.rb lib/**/*.rb lib/opencl_ruby_ffi/opencl_ruby_ffi_base.rb lib/**/**/*.rb
|
data/lib/opencl_ruby_ffi.rb
CHANGED
@@ -69,20 +69,25 @@ module OpenCL
|
|
69
69
|
class Buffer < Mem
|
70
70
|
layout :dummy, :pointer
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
72
|
+
module OpenCL11
|
73
|
+
# Creates a Buffer from a sub part of the Buffer
|
74
|
+
#
|
75
|
+
# ==== Attributes
|
76
|
+
#
|
77
|
+
# * +type+ - type of sub-buffer to create. Only OpenCL::BUFFER_CREATE_TYPE_REGION is supported for now
|
78
|
+
# * +info+ - inf reguarding the type of sub-buffer created. if type == OpenCL::BUFFER_CREATE_TYPE_REGION, info is a BufferRegion
|
79
|
+
# * +options+ - a hash containing named options
|
80
|
+
#
|
81
|
+
# ==== Options
|
82
|
+
#
|
83
|
+
# * +:flags+ - a single or an Array of :cl_mem_flags specifying the flags to be used when creating the Buffer
|
84
|
+
def create_sub_buffer( type, region, options = {} )
|
85
|
+
OpenCL.create_sub_buffer( self, type, region, options )
|
86
|
+
end
|
85
87
|
end
|
88
|
+
|
89
|
+
register_extension( :v11, Buffer::OpenCL11, "platform.version_number >= 1.1" )
|
90
|
+
|
86
91
|
end
|
87
92
|
|
88
93
|
end
|
@@ -39,7 +39,7 @@ module OpenCL
|
|
39
39
|
properties = get_command_queue_properties( options )
|
40
40
|
size = options[:size]
|
41
41
|
error = MemoryPointer::new( :cl_int )
|
42
|
-
if
|
42
|
+
if device.platform.version_number < 2.0 then
|
43
43
|
cmd = clCreateCommandQueue( context, device, properties, error )
|
44
44
|
else
|
45
45
|
props = nil
|
@@ -85,7 +85,7 @@ module OpenCL
|
|
85
85
|
#
|
86
86
|
# the Event associated with the command
|
87
87
|
def self.enqueue_migrate_mem_objects( command_queue, mem_objects, options = {} )
|
88
|
-
error_check(INVALID_OPERATION) if command_queue.
|
88
|
+
error_check(INVALID_OPERATION) if command_queue.device.platform.version_number < 1.2
|
89
89
|
num_mem_objects = [mem_objects].flatten.length
|
90
90
|
mem_list = nil
|
91
91
|
if num_mem_objects > 0 then
|
@@ -234,7 +234,7 @@ module OpenCL
|
|
234
234
|
#
|
235
235
|
# the Event associated with the command
|
236
236
|
def self.enqueue_read_buffer_rect( command_queue, buffer, ptr, region, options = {} )
|
237
|
-
error_check(INVALID_OPERATION) if command_queue.
|
237
|
+
error_check(INVALID_OPERATION) if command_queue.device.platform.version_number < 1.1
|
238
238
|
blocking = FALSE
|
239
239
|
blocking = TRUE if options[:blocking] or options[:blocking_read]
|
240
240
|
|
@@ -311,7 +311,7 @@ module OpenCL
|
|
311
311
|
#
|
312
312
|
# the Event associated with the command
|
313
313
|
def self.enqueue_write_buffer_rect(command_queue, buffer, ptr, region, options = {})
|
314
|
-
error_check(INVALID_OPERATION) if command_queue.
|
314
|
+
error_check(INVALID_OPERATION) if command_queue.device.platform.version_number < 1.1
|
315
315
|
blocking = FALSE
|
316
316
|
blocking = TRUE if options[:blocking] or options[:blocking_write]
|
317
317
|
|
@@ -386,7 +386,7 @@ module OpenCL
|
|
386
386
|
#
|
387
387
|
# the Event associated with the command
|
388
388
|
def self.enqueue_copy_buffer_rect(command_queue, src_buffer, dst_buffer, region, options = {})
|
389
|
-
error_check(INVALID_OPERATION) if command_queue.
|
389
|
+
error_check(INVALID_OPERATION) if command_queue.device.platform.version_number < 1.1
|
390
390
|
|
391
391
|
src_origin = MemoryPointer::new( :size_t, 3 )
|
392
392
|
(0..2).each { |i| src_origin[i].write_size_t(0) }
|
@@ -623,7 +623,7 @@ module OpenCL
|
|
623
623
|
#
|
624
624
|
# the Event associated with the command
|
625
625
|
def self.enqueue_fill_buffer( command_queue, buffer, pattern, options = {} )
|
626
|
-
error_check(INVALID_OPERATION) if command_queue.
|
626
|
+
error_check(INVALID_OPERATION) if command_queue.device.platform.version_number < 1.1
|
627
627
|
offset = 0
|
628
628
|
offset = options[:offset] if options[:offset]
|
629
629
|
pattern_size = pattern.size
|
@@ -656,7 +656,7 @@ module OpenCL
|
|
656
656
|
#
|
657
657
|
# the Event associated with the command
|
658
658
|
def self.enqueue_fill_image( command_queue, image, fill_color, options = {} )
|
659
|
-
error_check(INVALID_OPERATION) if command_queue.
|
659
|
+
error_check(INVALID_OPERATION) if command_queue.device.platform.version_number < 1.1
|
660
660
|
origin, region = get_origin_region( image, options, :origin, :region )
|
661
661
|
num_events, events = get_event_wait_list( options )
|
662
662
|
event = MemoryPointer::new( Event )
|
@@ -905,7 +905,7 @@ module OpenCL
|
|
905
905
|
#
|
906
906
|
# the Event associated with the command
|
907
907
|
def self.enqueue_task( command_queue, kernel, options = {} )
|
908
|
-
if
|
908
|
+
if command_queue.device.platform.version_number < 2.0 then
|
909
909
|
num_events, events = get_event_wait_list( options )
|
910
910
|
event = MemoryPointer::new( Event )
|
911
911
|
error = clEnqueueTask( command_queue, kernel, num_events, events, event )
|
@@ -990,7 +990,7 @@ module OpenCL
|
|
990
990
|
#
|
991
991
|
# an Event if implementation version is >= 1.2, nil otherwise
|
992
992
|
def self.enqueue_barrier( command_queue, events = [] )
|
993
|
-
if command_queue.
|
993
|
+
if command_queue.device.platform.version_number < 1.2 then
|
994
994
|
num_events = [events].flatten.length
|
995
995
|
if num_events > 0 then
|
996
996
|
evts = MemoryPointer::new( Event, num_events )
|
@@ -1031,7 +1031,7 @@ module OpenCL
|
|
1031
1031
|
# an Event
|
1032
1032
|
def self.enqueue_marker( command_queue, events = [] )
|
1033
1033
|
event = MemoryPointer::new( Event )
|
1034
|
-
if command_queue.
|
1034
|
+
if command_queue.device.platform.version_number < 1.2 then
|
1035
1035
|
error = clEnqueueMarker( command_queue, event )
|
1036
1036
|
else
|
1037
1037
|
num_events = [events].flatten.length
|
@@ -1051,10 +1051,7 @@ module OpenCL
|
|
1051
1051
|
# Maps the cl_command_queue object of OpenCL
|
1052
1052
|
class CommandQueue
|
1053
1053
|
include InnerInterface
|
1054
|
-
|
1055
|
-
class << self
|
1056
|
-
include InnerGenerator
|
1057
|
-
end
|
1054
|
+
extend InnerGenerator
|
1058
1055
|
|
1059
1056
|
def inspect
|
1060
1057
|
p = properties
|
@@ -1077,38 +1074,8 @@ module OpenCL
|
|
1077
1074
|
return Device::new( ptr.read_pointer )
|
1078
1075
|
end
|
1079
1076
|
|
1080
|
-
|
1081
|
-
|
1082
|
-
ptr = MemoryPointer::new( CommandQueue )
|
1083
|
-
error = OpenCL.clGetCommandQueueInfo(self, DEVICE_DEFAULT, CommandQueue.size, ptr, nil)
|
1084
|
-
error_check(error)
|
1085
|
-
return CommandQueue::new( ptr.read_pointer )
|
1086
|
-
end
|
1087
|
-
|
1088
|
-
##
|
1089
|
-
# :method: reference_count
|
1090
|
-
# Returns the reference count of the CommandQueue
|
1091
|
-
eval get_info("CommandQueue", :cl_uint, "REFERENCE_COUNT")
|
1092
|
-
|
1093
|
-
##
|
1094
|
-
# :method: size
|
1095
|
-
# Returns the currently specified size for the command queue (2.0 and for device queue only)
|
1096
|
-
eval get_info("CommandQueue", :cl_uint, "SIZE")
|
1097
|
-
|
1098
|
-
##
|
1099
|
-
# :method: properties
|
1100
|
-
# Returns the :cl_command_queue_properties used to create the CommandQueue
|
1101
|
-
eval get_info("CommandQueue", :cl_command_queue_properties, "PROPERTIES")
|
1102
|
-
|
1103
|
-
##
|
1104
|
-
# :method: priority_khr
|
1105
|
-
# Returns the :cl_queue_priority_khr used to create the CommandQueue (2.1 and cl_khr_priority_hints required)
|
1106
|
-
eval get_info("CommandQueue", :cl_queue_priority_khr, "PRIORITY_KHR")
|
1107
|
-
|
1108
|
-
##
|
1109
|
-
# :method: throttle_khr
|
1110
|
-
# Returns the :cl_queue_throttle_khr used to create the CommandQueue (2.1 and cl_khr_throttle_hints required)
|
1111
|
-
eval get_info("CommandQueue", :cl_queue_throttle_khr, "THROTTLE_KHR")
|
1077
|
+
get_info("CommandQueue", :cl_uint, "reference_count")
|
1078
|
+
get_info("CommandQueue", :cl_command_queue_properties, "properties")
|
1112
1079
|
|
1113
1080
|
# Enqueues a kernel as a task using the CommandQueue
|
1114
1081
|
#
|
@@ -1173,34 +1140,6 @@ module OpenCL
|
|
1173
1140
|
return OpenCL.enqueue_write_buffer( self, buffer, ptr, options )
|
1174
1141
|
end
|
1175
1142
|
|
1176
|
-
# Enqueues a command to write to a rectangular region in a Buffer object from host memory using the CommandQueue
|
1177
|
-
#
|
1178
|
-
# ==== Attributes
|
1179
|
-
#
|
1180
|
-
# * +buffer+ - the Buffer to be written to
|
1181
|
-
# * +ptr+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area to use
|
1182
|
-
# * +region+ - the region to write in the Buffer
|
1183
|
-
# * +options+ - a hash containing named options
|
1184
|
-
#
|
1185
|
-
# ==== Options
|
1186
|
-
#
|
1187
|
-
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1188
|
-
# * +:blocking_write+ - if provided indicates if the command blocks until the region is written
|
1189
|
-
# * +:blocking+ - if provided indicates if the command blocks until the region is written
|
1190
|
-
# * +:buffer_origin+ - if provided indicates the origin inside the buffer of the area to copy, else [0, 0, 0]
|
1191
|
-
# * +:host_origin+ - if provided indicates the origin inside the target host area, else [0, 0, 0]
|
1192
|
-
# * +:buffer_row_pitch+ - if provided indicates the row pitch inside the buffer, else 0
|
1193
|
-
# * +:buffer_slice_pitch+ - if provided indicates the slice pitch inside the buffer, else 0
|
1194
|
-
# * +:host_row_pitch+ - if provided indicates the row pitch inside the host area, else 0
|
1195
|
-
# * +:host_slice_pitch+ - if provided indicates the slice pitch inside the host area, else 0
|
1196
|
-
#
|
1197
|
-
# ==== Returns
|
1198
|
-
#
|
1199
|
-
# the Event associated with the command
|
1200
|
-
def enqueue_write_buffer_rect( buffer, ptr, region, options = {} )
|
1201
|
-
return OpenCL.enqueue_write_buffer_rect( self, buffer, ptr, region, options )
|
1202
|
-
end
|
1203
|
-
|
1204
1143
|
# Enqueues a command to read from a Buffer object to host memory using the CommandQueue
|
1205
1144
|
#
|
1206
1145
|
# ==== Attributes
|
@@ -1224,34 +1163,6 @@ module OpenCL
|
|
1224
1163
|
return OpenCL.enqueue_read_buffer( self, buffer, ptr, options)
|
1225
1164
|
end
|
1226
1165
|
|
1227
|
-
# Enqueues a command to read from a rectangular region from a Buffer object to host memory using the CommandQueue
|
1228
|
-
#
|
1229
|
-
# ==== Attributes
|
1230
|
-
#
|
1231
|
-
# * +buffer+ - the Buffer to be read from
|
1232
|
-
# * +ptr+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area to use
|
1233
|
-
# * +region+ - the region in the Buffer to copy
|
1234
|
-
# * +options+ - a hash containing named options
|
1235
|
-
#
|
1236
|
-
# ==== Options
|
1237
|
-
#
|
1238
|
-
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1239
|
-
# * +:blocking_read+ - if provided indicates if the command blocks until the region is read
|
1240
|
-
# * +:blocking+ - if provided indicates if the command blocks until the region is read
|
1241
|
-
# * +:buffer_origin+ - if provided indicates the origin inside the buffer of the area to copy, else [0, 0, 0]
|
1242
|
-
# * +:host_origin+ - if provided indicates the origin inside the target host area, else [0, 0, 0]
|
1243
|
-
# * +:buffer_row_pitch+ - if provided indicates the row pitch inside the buffer, else 0
|
1244
|
-
# * +:buffer_slice_pitch+ - if provided indicates the slice pitch inside the buffer, else 0
|
1245
|
-
# * +:host_row_pitch+ - if provided indicates the row pitch inside the host area, else 0
|
1246
|
-
# * +:host_slice_pitch+ - if provided indicates the slice pitch inside the host area, else 0
|
1247
|
-
#
|
1248
|
-
# ==== Returns
|
1249
|
-
#
|
1250
|
-
# the Event associated with the command
|
1251
|
-
def enqueue_read_buffer_rect( buffer, ptr, region, options = {} )
|
1252
|
-
return OpenCL.enqueue_read_buffer_rect( self, buffer, ptr, region, options )
|
1253
|
-
end
|
1254
|
-
|
1255
1166
|
# Enqueues a command to copy data from a Buffer object into another Buffer object using the CommandQueue
|
1256
1167
|
#
|
1257
1168
|
# ==== Attributes
|
@@ -1274,32 +1185,6 @@ module OpenCL
|
|
1274
1185
|
return OpenCL.enqueue_copy_buffer( self, src_buffer, dst_buffer, options )
|
1275
1186
|
end
|
1276
1187
|
|
1277
|
-
# Enqueues a command to copy a rectangular region into a Buffer object from another Buffer object using the CommandQueue
|
1278
|
-
#
|
1279
|
-
# ==== Attributes
|
1280
|
-
#
|
1281
|
-
# * +src_buffer+ - the Buffer to be read from
|
1282
|
-
# * +dst_buffer+ - the Buffer to be written to
|
1283
|
-
# * +region+ - the region to write in the Buffer
|
1284
|
-
# * +options+ - a hash containing named options
|
1285
|
-
#
|
1286
|
-
# ==== Options
|
1287
|
-
#
|
1288
|
-
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1289
|
-
# * +:src_origin+ - if provided indicates the origin inside the src Buffer of the area to copy, else [0, 0, 0]
|
1290
|
-
# * +:dst_origin+ - if provided indicates the origin inside the dst Buffer of the area to write to, else [0, 0, 0]
|
1291
|
-
# * +:src_row_pitch+ - if provided indicates the row pitch inside the src Buffer, else 0
|
1292
|
-
# * +:src_slice_pitch+ - if provided indicates the slice pitch inside the src Buffer, else 0
|
1293
|
-
# * +:dst_row_pitch+ - if provided indicates the row pitch inside the dst Buffer, else 0
|
1294
|
-
# * +:dst_slice_pitch+ - if provided indicates the slice pitch inside the dst Buffer area, else 0
|
1295
|
-
#
|
1296
|
-
# ==== Returns
|
1297
|
-
#
|
1298
|
-
# the Event associated with the command
|
1299
|
-
def enqueue_copy_buffer_rect( src_buffer, dst_buffer, region, options = {} )
|
1300
|
-
return OpenCL.enqueue_copy_buffer_rect( self, src_buffer, dst_buffer, region, options )
|
1301
|
-
end
|
1302
|
-
|
1303
1188
|
# Enqueues a barrier on a list of envents using the CommandQueue
|
1304
1189
|
#
|
1305
1190
|
# ==== Attributes
|
@@ -1455,49 +1340,6 @@ module OpenCL
|
|
1455
1340
|
return OpenCL.enqueue_copy_image_to_buffer( self, src_image, dst_buffer, options )
|
1456
1341
|
end
|
1457
1342
|
|
1458
|
-
# Enqueues a command to fill an Image with the given color using the CommandQueue
|
1459
|
-
#
|
1460
|
-
# ==== Attributes
|
1461
|
-
#
|
1462
|
-
# * +image+ - an Image object to be filled
|
1463
|
-
# * +fill_color+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area where the color is stored
|
1464
|
-
# * +options+ - a hash containing named options
|
1465
|
-
#
|
1466
|
-
# ==== Options
|
1467
|
-
#
|
1468
|
-
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1469
|
-
# * +:origin+ - if provided indicates the origin of the region to fill inside the Image, else [0, 0, 0]
|
1470
|
-
# * +:region+ - if provided indicates the dimension of the region to fill, else the maximum region is filled
|
1471
|
-
#
|
1472
|
-
# ==== Returns
|
1473
|
-
#
|
1474
|
-
# the Event associated with the command
|
1475
|
-
def enqueue_fill_image( image, fill_color, options = {} )
|
1476
|
-
return OpenCL.enqueue_fill_image( self, image, fill_color, options )
|
1477
|
-
end
|
1478
|
-
|
1479
|
-
# Enqueues a command to fill a Buffer with the given pattern using the CommandQueue
|
1480
|
-
#
|
1481
|
-
# ==== Attributes
|
1482
|
-
#
|
1483
|
-
# * +buffer+ - a Buffer object to be filled
|
1484
|
-
# * +pattern+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area where the pattern is stored
|
1485
|
-
# * +options+ - a hash containing named options
|
1486
|
-
#
|
1487
|
-
# ==== Options
|
1488
|
-
#
|
1489
|
-
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1490
|
-
# * +:offset+ - if provided indicates the offset inside the Buffer of the area to be filled, else 0
|
1491
|
-
# * +:size+ - if provided indicates the size of data to fill, else the maximum size is filled
|
1492
|
-
# * +:pattern_size+ - if provided indicates the size of the pattern, else the maximum pattern data is used
|
1493
|
-
#
|
1494
|
-
# ==== Returns
|
1495
|
-
#
|
1496
|
-
# the Event associated with the command
|
1497
|
-
def enqueue_fill_buffer( buffer, pattern, options = {} )
|
1498
|
-
return OpenCL.enqueue_fill_buffer( self, buffer, pattern, options )
|
1499
|
-
end
|
1500
|
-
|
1501
1343
|
# Acquire OpenCL Mem objects that have been created from OpenGL objects using the CommandQueue
|
1502
1344
|
#
|
1503
1345
|
# ==== Attributes
|
@@ -1607,25 +1449,6 @@ module OpenCL
|
|
1607
1449
|
return OpenCL.enqueue_unmap_mem_object( self, mem_obj, mapped_ptr, options )
|
1608
1450
|
end
|
1609
1451
|
|
1610
|
-
# Enqueues a command to indicate which device a set of memory objects should be migrated to using the CommandQueue
|
1611
|
-
#
|
1612
|
-
# ==== Attributes
|
1613
|
-
#
|
1614
|
-
# * +mem_objects+ - the Mem objects to migrate
|
1615
|
-
# * +options+ - a hash containing named options
|
1616
|
-
#
|
1617
|
-
# ==== Options
|
1618
|
-
#
|
1619
|
-
# * +:flags+ - a single or an Array of :cl_mem_migration flags
|
1620
|
-
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1621
|
-
#
|
1622
|
-
# ==== Returns
|
1623
|
-
#
|
1624
|
-
# the Event associated with the command
|
1625
|
-
def enqueue_migrate_mem_objects( mem_objects, options = {} )
|
1626
|
-
return OpenCL.enqueue_migrate_mem_objects( self, mem_objects, options )
|
1627
|
-
end
|
1628
|
-
|
1629
1452
|
# Enqueues a native kernel in the CommandQueue
|
1630
1453
|
#
|
1631
1454
|
# ==== Attributes
|
@@ -1656,127 +1479,303 @@ module OpenCL
|
|
1656
1479
|
return OpenCL.flush( self )
|
1657
1480
|
end
|
1658
1481
|
|
1659
|
-
|
1660
|
-
|
1661
|
-
|
1662
|
-
|
1663
|
-
|
1664
|
-
|
1665
|
-
|
1666
|
-
|
1667
|
-
|
1668
|
-
|
1669
|
-
|
1670
|
-
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
1482
|
+
module OpenCL11
|
1483
|
+
|
1484
|
+
# Enqueues a command to read from a rectangular region from a Buffer object to host memory using the CommandQueue
|
1485
|
+
#
|
1486
|
+
# ==== Attributes
|
1487
|
+
#
|
1488
|
+
# * +buffer+ - the Buffer to be read from
|
1489
|
+
# * +ptr+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area to use
|
1490
|
+
# * +region+ - the region in the Buffer to copy
|
1491
|
+
# * +options+ - a hash containing named options
|
1492
|
+
#
|
1493
|
+
# ==== Options
|
1494
|
+
#
|
1495
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1496
|
+
# * +:blocking_read+ - if provided indicates if the command blocks until the region is read
|
1497
|
+
# * +:blocking+ - if provided indicates if the command blocks until the region is read
|
1498
|
+
# * +:buffer_origin+ - if provided indicates the origin inside the buffer of the area to copy, else [0, 0, 0]
|
1499
|
+
# * +:host_origin+ - if provided indicates the origin inside the target host area, else [0, 0, 0]
|
1500
|
+
# * +:buffer_row_pitch+ - if provided indicates the row pitch inside the buffer, else 0
|
1501
|
+
# * +:buffer_slice_pitch+ - if provided indicates the slice pitch inside the buffer, else 0
|
1502
|
+
# * +:host_row_pitch+ - if provided indicates the row pitch inside the host area, else 0
|
1503
|
+
# * +:host_slice_pitch+ - if provided indicates the slice pitch inside the host area, else 0
|
1504
|
+
#
|
1505
|
+
# ==== Returns
|
1506
|
+
#
|
1507
|
+
# the Event associated with the command
|
1508
|
+
def enqueue_read_buffer_rect( buffer, ptr, region, options = {} )
|
1509
|
+
return OpenCL.enqueue_read_buffer_rect( self, buffer, ptr, region, options )
|
1510
|
+
end
|
1680
1511
|
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1688
|
-
|
1689
|
-
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
|
1699
|
-
|
1512
|
+
# Enqueues a command to write to a rectangular region in a Buffer object from host memory using the CommandQueue
|
1513
|
+
#
|
1514
|
+
# ==== Attributes
|
1515
|
+
#
|
1516
|
+
# * +buffer+ - the Buffer to be written to
|
1517
|
+
# * +ptr+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area to use
|
1518
|
+
# * +region+ - the region to write in the Buffer
|
1519
|
+
# * +options+ - a hash containing named options
|
1520
|
+
#
|
1521
|
+
# ==== Options
|
1522
|
+
#
|
1523
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1524
|
+
# * +:blocking_write+ - if provided indicates if the command blocks until the region is written
|
1525
|
+
# * +:blocking+ - if provided indicates if the command blocks until the region is written
|
1526
|
+
# * +:buffer_origin+ - if provided indicates the origin inside the buffer of the area to copy, else [0, 0, 0]
|
1527
|
+
# * +:host_origin+ - if provided indicates the origin inside the target host area, else [0, 0, 0]
|
1528
|
+
# * +:buffer_row_pitch+ - if provided indicates the row pitch inside the buffer, else 0
|
1529
|
+
# * +:buffer_slice_pitch+ - if provided indicates the slice pitch inside the buffer, else 0
|
1530
|
+
# * +:host_row_pitch+ - if provided indicates the row pitch inside the host area, else 0
|
1531
|
+
# * +:host_slice_pitch+ - if provided indicates the slice pitch inside the host area, else 0
|
1532
|
+
#
|
1533
|
+
# ==== Returns
|
1534
|
+
#
|
1535
|
+
# the Event associated with the command
|
1536
|
+
def enqueue_write_buffer_rect( buffer, ptr, region, options = {} )
|
1537
|
+
return OpenCL.enqueue_write_buffer_rect( self, buffer, ptr, region, options )
|
1538
|
+
end
|
1539
|
+
|
1540
|
+
# Enqueues a command to copy a rectangular region into a Buffer object from another Buffer object using the CommandQueue
|
1541
|
+
#
|
1542
|
+
# ==== Attributes
|
1543
|
+
#
|
1544
|
+
# * +src_buffer+ - the Buffer to be read from
|
1545
|
+
# * +dst_buffer+ - the Buffer to be written to
|
1546
|
+
# * +region+ - the region to write in the Buffer
|
1547
|
+
# * +options+ - a hash containing named options
|
1548
|
+
#
|
1549
|
+
# ==== Options
|
1550
|
+
#
|
1551
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1552
|
+
# * +:src_origin+ - if provided indicates the origin inside the src Buffer of the area to copy, else [0, 0, 0]
|
1553
|
+
# * +:dst_origin+ - if provided indicates the origin inside the dst Buffer of the area to write to, else [0, 0, 0]
|
1554
|
+
# * +:src_row_pitch+ - if provided indicates the row pitch inside the src Buffer, else 0
|
1555
|
+
# * +:src_slice_pitch+ - if provided indicates the slice pitch inside the src Buffer, else 0
|
1556
|
+
# * +:dst_row_pitch+ - if provided indicates the row pitch inside the dst Buffer, else 0
|
1557
|
+
# * +:dst_slice_pitch+ - if provided indicates the slice pitch inside the dst Buffer area, else 0
|
1558
|
+
#
|
1559
|
+
# ==== Returns
|
1560
|
+
#
|
1561
|
+
# the Event associated with the command
|
1562
|
+
def enqueue_copy_buffer_rect( src_buffer, dst_buffer, region, options = {} )
|
1563
|
+
return OpenCL.enqueue_copy_buffer_rect( self, src_buffer, dst_buffer, region, options )
|
1564
|
+
end
|
1700
1565
|
|
1701
|
-
# Enqueues a command to fill a an SVM memory area using the CommandQueue
|
1702
|
-
#
|
1703
|
-
# ==== Attributes
|
1704
|
-
#
|
1705
|
-
# * +svm_ptr+ - the SVMPointer to the area to fill
|
1706
|
-
# * +pattern+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area where the pattern is stored
|
1707
|
-
# * +size+ - the size of the area to fill
|
1708
|
-
#
|
1709
|
-
# ==== Options
|
1710
|
-
#
|
1711
|
-
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1712
|
-
# * +:pattern_size+ - if provided indicates the size of the pattern, else the maximum pattern data is used
|
1713
|
-
#
|
1714
|
-
# ==== Returns
|
1715
|
-
#
|
1716
|
-
# the Event associated with the command
|
1717
|
-
def enqueue_svm_memfill(command_queue, svm_ptr, pattern, size, options = {})
|
1718
|
-
return OpenCL.enqueue_svm_memfill(self, svm_ptr, pattern, size, options)
|
1719
1566
|
end
|
1720
1567
|
|
1721
|
-
|
1722
|
-
|
1723
|
-
|
1724
|
-
|
1725
|
-
|
1726
|
-
|
1727
|
-
|
1728
|
-
|
1729
|
-
|
1730
|
-
|
1731
|
-
|
1732
|
-
|
1733
|
-
|
1734
|
-
|
1735
|
-
|
1736
|
-
|
1737
|
-
|
1738
|
-
|
1739
|
-
|
1740
|
-
|
1568
|
+
module OpenCL12
|
1569
|
+
|
1570
|
+
# Enqueues a command to fill a Buffer with the given pattern using the CommandQueue
|
1571
|
+
#
|
1572
|
+
# ==== Attributes
|
1573
|
+
#
|
1574
|
+
# * +buffer+ - a Buffer object to be filled
|
1575
|
+
# * +pattern+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area where the pattern is stored
|
1576
|
+
# * +options+ - a hash containing named options
|
1577
|
+
#
|
1578
|
+
# ==== Options
|
1579
|
+
#
|
1580
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1581
|
+
# * +:offset+ - if provided indicates the offset inside the Buffer of the area to be filled, else 0
|
1582
|
+
# * +:size+ - if provided indicates the size of data to fill, else the maximum size is filled
|
1583
|
+
# * +:pattern_size+ - if provided indicates the size of the pattern, else the maximum pattern data is used
|
1584
|
+
#
|
1585
|
+
# ==== Returns
|
1586
|
+
#
|
1587
|
+
# the Event associated with the command
|
1588
|
+
def enqueue_fill_buffer( buffer, pattern, options = {} )
|
1589
|
+
return OpenCL.enqueue_fill_buffer( self, buffer, pattern, options )
|
1590
|
+
end
|
1591
|
+
|
1592
|
+
# Enqueues a command to fill an Image with the given color using the CommandQueue
|
1593
|
+
#
|
1594
|
+
# ==== Attributes
|
1595
|
+
#
|
1596
|
+
# * +image+ - an Image object to be filled
|
1597
|
+
# * +fill_color+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area where the color is stored
|
1598
|
+
# * +options+ - a hash containing named options
|
1599
|
+
#
|
1600
|
+
# ==== Options
|
1601
|
+
#
|
1602
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1603
|
+
# * +:origin+ - if provided indicates the origin of the region to fill inside the Image, else [0, 0, 0]
|
1604
|
+
# * +:region+ - if provided indicates the dimension of the region to fill, else the maximum region is filled
|
1605
|
+
#
|
1606
|
+
# ==== Returns
|
1607
|
+
#
|
1608
|
+
# the Event associated with the command
|
1609
|
+
def enqueue_fill_image( image, fill_color, options = {} )
|
1610
|
+
return OpenCL.enqueue_fill_image( self, image, fill_color, options )
|
1611
|
+
end
|
1612
|
+
|
1613
|
+
# Enqueues a command to indicate which device a set of memory objects should be migrated to using the CommandQueue
|
1614
|
+
#
|
1615
|
+
# ==== Attributes
|
1616
|
+
#
|
1617
|
+
# * +mem_objects+ - the Mem objects to migrate
|
1618
|
+
# * +options+ - a hash containing named options
|
1619
|
+
#
|
1620
|
+
# ==== Options
|
1621
|
+
#
|
1622
|
+
# * +:flags+ - a single or an Array of :cl_mem_migration flags
|
1623
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1624
|
+
#
|
1625
|
+
# ==== Returns
|
1626
|
+
#
|
1627
|
+
# the Event associated with the command
|
1628
|
+
def enqueue_migrate_mem_objects( mem_objects, options = {} )
|
1629
|
+
return OpenCL.enqueue_migrate_mem_objects( self, mem_objects, options )
|
1630
|
+
end
|
1631
|
+
|
1741
1632
|
end
|
1742
|
-
|
1743
|
-
|
1744
|
-
|
1745
|
-
|
1746
|
-
|
1747
|
-
|
1748
|
-
|
1749
|
-
|
1750
|
-
|
1751
|
-
|
1752
|
-
|
1753
|
-
|
1754
|
-
|
1755
|
-
|
1756
|
-
|
1757
|
-
|
1758
|
-
|
1633
|
+
|
1634
|
+
module OpenCL20
|
1635
|
+
extend InnerGenerator
|
1636
|
+
|
1637
|
+
get_info("CommandQueue", :cl_uint, "size")
|
1638
|
+
|
1639
|
+
# Enqueues a command to copy from or to an SVMPointer using the CommandQueue
|
1640
|
+
#
|
1641
|
+
# ==== Attributes
|
1642
|
+
#
|
1643
|
+
# * +dst_ptr+ - the Pointer (or convertible to Pointer using to_ptr) or SVMPointer to be written to
|
1644
|
+
# * +src_ptr+ - the Pointer (or convertible to Pointer using to_ptr) or SVMPointer to be read from
|
1645
|
+
# * +size+ - the size of data to copy
|
1646
|
+
# * +options+ - a hash containing named options
|
1647
|
+
#
|
1648
|
+
# ==== Options
|
1649
|
+
#
|
1650
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1651
|
+
# * +:blocking_copy+ - if provided indicates if the command blocks until the copy finishes
|
1652
|
+
# * +:blocking+ - if provided indicates if the command blocks until the copy finishes
|
1653
|
+
#
|
1654
|
+
# ==== Returns
|
1655
|
+
#
|
1656
|
+
# the Event associated with the command
|
1657
|
+
def enqueue_svm_memcpy( dst_ptr, src_ptr, size, options = {})
|
1658
|
+
return OpenCL.enqueue_svm_memcpy(self, dst_ptr, src_ptr, size, options)
|
1659
|
+
end
|
1660
|
+
|
1661
|
+
# Enqueues a command that frees SVMPointers (or Pointers using a callback) using the CommandQueue
|
1662
|
+
#
|
1663
|
+
# ==== Attributes
|
1664
|
+
#
|
1665
|
+
# * +svm_pointer+ - a single or an Array of SVMPointer (or Pointer)
|
1666
|
+
# * +options+ - a hash containing named options
|
1667
|
+
# * +block+ - if provided, a callback invoked to free the pointers. Signature of the callback is { |CommandQueue, num_pointers, Pointer to an array of num_pointers Pointers, Pointer to user_data| ... }
|
1668
|
+
#
|
1669
|
+
# ==== Options
|
1670
|
+
#
|
1671
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1672
|
+
# * +:user_data+ - if provided, a Pointer (or convertible to using to_ptr) that will be passed to the callback
|
1673
|
+
#
|
1674
|
+
# ==== Returns
|
1675
|
+
#
|
1676
|
+
# the Event associated with the command
|
1677
|
+
def enqueue_svm_free(svm_pointers, options = {}, &block)
|
1678
|
+
return OpenCL.enqueue_svm_free(self, svm_pointers, options, &block)
|
1679
|
+
end
|
1680
|
+
|
1681
|
+
# Enqueues a command to fill a an SVM memory area using the CommandQueue
|
1682
|
+
#
|
1683
|
+
# ==== Attributes
|
1684
|
+
#
|
1685
|
+
# * +svm_ptr+ - the SVMPointer to the area to fill
|
1686
|
+
# * +pattern+ - the Pointer (or convertible to Pointer using to_ptr) to the memory area where the pattern is stored
|
1687
|
+
# * +size+ - the size of the area to fill
|
1688
|
+
#
|
1689
|
+
# ==== Options
|
1690
|
+
#
|
1691
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1692
|
+
# * +:pattern_size+ - if provided indicates the size of the pattern, else the maximum pattern data is used
|
1693
|
+
#
|
1694
|
+
# ==== Returns
|
1695
|
+
#
|
1696
|
+
# the Event associated with the command
|
1697
|
+
def enqueue_svm_memfill(command_queue, svm_ptr, pattern, size, options = {})
|
1698
|
+
return OpenCL.enqueue_svm_memfill(self, svm_ptr, pattern, size, options)
|
1699
|
+
end
|
1700
|
+
|
1701
|
+
# Enqueues a command to map an Image into host memory using the CommandQueue
|
1702
|
+
#
|
1703
|
+
# ==== Attributes
|
1704
|
+
#
|
1705
|
+
# * +svm_ptr+ - the SVMPointer to the area to map
|
1706
|
+
# * +size+ - the size of the region to map
|
1707
|
+
# * +map_flags+ - a single or an Array of :cl_map_flags flags
|
1708
|
+
# * +options+ - a hash containing named options
|
1709
|
+
#
|
1710
|
+
# ==== Options
|
1711
|
+
#
|
1712
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1713
|
+
# * +:blocking_map+ - if provided indicates if the command blocks until the region is mapped
|
1714
|
+
# * +:blocking+ - if provided indicates if the command blocks until the region is mapped
|
1715
|
+
#
|
1716
|
+
# ==== Returns
|
1717
|
+
#
|
1718
|
+
# the Event associated with the command
|
1719
|
+
def enqueue_svm_map( svm_ptr, size, map_flags, options = {} )
|
1720
|
+
return OpenCL.enqueue_svm_map( self, svm_ptr, size, map_flags, options )
|
1721
|
+
end
|
1722
|
+
|
1723
|
+
# Enqueues a command to unmap a previously mapped SVM memory area using the CommandQueue
|
1724
|
+
#
|
1725
|
+
# ==== Attributes
|
1726
|
+
#
|
1727
|
+
# * +svm_ptr+ - the SVMPointer of the area to be unmapped
|
1728
|
+
# * +options+ - a hash containing named options
|
1729
|
+
#
|
1730
|
+
# ==== Options
|
1731
|
+
#
|
1732
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1733
|
+
#
|
1734
|
+
# ==== Returns
|
1735
|
+
#
|
1736
|
+
# the Event associated with the command
|
1737
|
+
def enqueue_svm_unmap( svm_ptr, options = {} )
|
1738
|
+
return OpenCL.enqueue_svm_unmap( self, svm_ptr, options )
|
1739
|
+
end
|
1740
|
+
|
1759
1741
|
end
|
1760
1742
|
|
1761
|
-
|
1762
|
-
|
1763
|
-
|
1764
|
-
|
1765
|
-
|
1766
|
-
|
1767
|
-
|
1768
|
-
|
1769
|
-
|
1770
|
-
|
1771
|
-
|
1772
|
-
|
1773
|
-
|
1774
|
-
|
1775
|
-
|
1776
|
-
|
1777
|
-
|
1743
|
+
module OpenCL21
|
1744
|
+
|
1745
|
+
# Return the default CommandQueue for the underlying Device
|
1746
|
+
def device_default
|
1747
|
+
ptr = MemoryPointer::new( CommandQueue )
|
1748
|
+
error = OpenCL.clGetCommandQueueInfo(self, DEVICE_DEFAULT, CommandQueue.size, ptr, nil)
|
1749
|
+
error_check(error)
|
1750
|
+
return CommandQueue::new( ptr.read_pointer )
|
1751
|
+
end
|
1752
|
+
|
1753
|
+
# Enqueues a command to migrate SVM memory area
|
1754
|
+
# ==== Attributes
|
1755
|
+
#
|
1756
|
+
# * +svm_ptrs+ - a single or an Array of SVM memory area to migrate
|
1757
|
+
# * +options+ - a hash containing named options
|
1758
|
+
#
|
1759
|
+
# ==== Options
|
1760
|
+
#
|
1761
|
+
# * +:sizes+ - a single or an Array of sizes to transfer
|
1762
|
+
# * +:flags+ - a single or an Array of :cl_mem_migration flags
|
1763
|
+
# * +:event_wait_list+ - if provided, a list of Event to wait upon before executing the command
|
1764
|
+
#
|
1765
|
+
# ==== Returns
|
1766
|
+
#
|
1767
|
+
# the Event associated with the command
|
1768
|
+
def enqueue_svm_migrate_mem( svn_ptrs, options = {} )
|
1769
|
+
return OpenCL.enqueue_svm_migrate_mem( self, svn_ptrs, options = {} )
|
1770
|
+
end
|
1771
|
+
|
1778
1772
|
end
|
1779
1773
|
|
1774
|
+
register_extension( :v11, OpenCL11, "device.platform.version_number >= 1.1" )
|
1775
|
+
register_extension( :v12, OpenCL12, "device.platform.version_number >= 1.2" )
|
1776
|
+
register_extension( :v20, OpenCL20, "device.platform.version_number >= 2.0" )
|
1777
|
+
register_extension( :v21, OpenCL21, "device.platform.version_number >= 2.1" )
|
1778
|
+
|
1780
1779
|
end
|
1781
1780
|
|
1782
1781
|
end
|