opencl_ruby_ffi 1.3.5 → 1.3.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/opencl_ruby_ffi.rb +1 -0
- data/lib/opencl_ruby_ffi/Buffer.rb +7 -1
- data/lib/opencl_ruby_ffi/CommandQueue.rb +24 -11
- data/lib/opencl_ruby_ffi/Context.rb +88 -18
- data/lib/opencl_ruby_ffi/Device.rb +99 -18
- data/lib/opencl_ruby_ffi/Event.rb +22 -13
- data/lib/opencl_ruby_ffi/Image.rb +7 -1
- data/lib/opencl_ruby_ffi/Kernel.rb +76 -49
- data/lib/opencl_ruby_ffi/Mem.rb +28 -12
- data/lib/opencl_ruby_ffi/Pipe.rb +8 -0
- data/lib/opencl_ruby_ffi/Platform.rb +41 -14
- data/lib/opencl_ruby_ffi/Program.rb +71 -26
- data/lib/opencl_ruby_ffi/SVM.rb +23 -11
- data/lib/opencl_ruby_ffi/Sampler.rb +6 -4
- data/lib/opencl_ruby_ffi/ext.rb +1 -0
- data/lib/opencl_ruby_ffi/intel/kernel_profiling.rb +38 -0
- data/lib/opencl_ruby_ffi/intel/unified_shared_memory_preview.rb +613 -0
- data/lib/opencl_ruby_ffi/intel/unofficial.rb +95 -0
- data/lib/opencl_ruby_ffi/khr/device_uuid.rb +119 -0
- data/lib/opencl_ruby_ffi/opencl_ruby_ffi_base.rb +222 -61
- data/lib/opencl_ruby_ffi/opencl_ruby_ffi_base_gen.rb +84 -174
- data/lib/opencl_ruby_ffi/opencl_ruby_ffi_library.rb +181 -0
- data/lib/opencl_ruby_ffi/opencl_types.rb +4 -0
- data/opencl_ruby_ffi.gemspec +3 -4
- metadata +10 -6
@@ -1,27 +1,6 @@
|
|
1
1
|
using OpenCLRefinements if RUBY_VERSION.scan(/\d+/).collect(&:to_i).first >= 2
|
2
2
|
# Maps the OpenCL API using FFI
|
3
3
|
module OpenCL
|
4
|
-
begin
|
5
|
-
if ENV["LIBOPENCL_SO"]
|
6
|
-
ffi_lib ENV["LIBOPENCL_SO"]
|
7
|
-
else
|
8
|
-
raise LoadError
|
9
|
-
end
|
10
|
-
rescue LoadError => e
|
11
|
-
begin
|
12
|
-
ffi_lib "OpenCL"
|
13
|
-
rescue LoadError => e
|
14
|
-
begin
|
15
|
-
ffi_lib "libOpenCL.so.1"
|
16
|
-
rescue LoadError => e
|
17
|
-
begin
|
18
|
-
ffi_lib '/System/Library/Frameworks/OpenCL.framework/OpenCL'
|
19
|
-
rescue LoadError => e
|
20
|
-
raise "OpenCL implementation not found!"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
4
|
SUCCESS = 0
|
26
5
|
DEVICE_NOT_FOUND = -1
|
27
6
|
DEVICE_NOT_AVAILABLE = -2
|
@@ -102,6 +81,8 @@ module OpenCL
|
|
102
81
|
PLATFORM_VENDOR = 0x0903
|
103
82
|
PLATFORM_EXTENSIONS = 0x0904
|
104
83
|
PLATFORM_HOST_TIMER_RESOLUTION = 0x0905
|
84
|
+
PLATFORM_NUMERIC_VERSION = 0x0906
|
85
|
+
PLATFORM_EXTENSIONS_WITH_VERSION = 0x0907
|
105
86
|
DEVICE_TYPE_DEFAULT = (1 << 0)
|
106
87
|
DEVICE_TYPE_CPU = (1 << 1)
|
107
88
|
DEVICE_TYPE_GPU = (1 << 2)
|
@@ -201,6 +182,20 @@ module OpenCL
|
|
201
182
|
DEVICE_IL_VERSION = 0x105B
|
202
183
|
DEVICE_MAX_NUM_SUB_GROUPS = 0x105C
|
203
184
|
DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS = 0x105D
|
185
|
+
DEVICE_NUMERIC_VERSION = 0x105E
|
186
|
+
DEVICE_EXTENSIONS_WITH_VERSION = 0x1060
|
187
|
+
DEVICE_ILS_WITH_VERSION = 0x1061
|
188
|
+
DEVICE_BUILT_IN_KERNELS_WITH_VERSION = 0x1062
|
189
|
+
DEVICE_ATOMIC_MEMORY_CAPABILITIES = 0x1063
|
190
|
+
DEVICE_ATOMIC_FENCE_CAPABILITIES = 0x1064
|
191
|
+
DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT = 0x1065
|
192
|
+
DEVICE_OPENCL_C_ALL_VERSIONS = 0x1066
|
193
|
+
DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE = 0x1067
|
194
|
+
DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT = 0x1068
|
195
|
+
DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT = 0x1069
|
196
|
+
DEVICE_OPENCL_C_FEATURES = 0x106F
|
197
|
+
DEVICE_DEVICE_ENQUEUE_SUPPORT = 0x1070
|
198
|
+
DEVICE_PIPE_SUPPORT = 0x1071
|
204
199
|
FP_DENORM = (1 << 0)
|
205
200
|
FP_INF_NAN = (1 << 1)
|
206
201
|
FP_ROUND_TO_NEAREST = (1 << 2)
|
@@ -240,12 +235,20 @@ module OpenCL
|
|
240
235
|
DEVICE_SVM_FINE_GRAIN_BUFFER = (1 << 1)
|
241
236
|
DEVICE_SVM_FINE_GRAIN_SYSTEM = (1 << 2)
|
242
237
|
DEVICE_SVM_ATOMICS = (1 << 3)
|
238
|
+
DEVICE_ATOMIC_ORDER_RELAXED = (1 << 0)
|
239
|
+
DEVICE_ATOMIC_ORDER_ACQ_REL = (1 << 1)
|
240
|
+
DEVICE_ATOMIC_ORDER_SEQ_CST = (1 << 2)
|
241
|
+
DEVICE_ATOMIC_SCOPE_WORK_ITEM = (1 << 3)
|
242
|
+
DEVICE_ATOMIC_SCOPE_WORK_GROUP = (1 << 4)
|
243
|
+
DEVICE_ATOMIC_SCOPE_DEVICE = (1 << 5)
|
244
|
+
DEVICE_ATOMIC_SCOPE_ALL_DEVICES = (1 << 6)
|
243
245
|
QUEUE_CONTEXT = 0x1090
|
244
246
|
QUEUE_DEVICE = 0x1091
|
245
247
|
QUEUE_REFERENCE_COUNT = 0x1092
|
246
248
|
QUEUE_PROPERTIES = 0x1093
|
247
249
|
QUEUE_SIZE = 0x1094
|
248
250
|
QUEUE_DEVICE_DEFAULT = 0x1095
|
251
|
+
QUEUE_PROPERTIES_ARRAY = 0x1098
|
249
252
|
MEM_READ_WRITE = (1 << 0)
|
250
253
|
MEM_WRITE_ONLY = (1 << 1)
|
251
254
|
MEM_READ_ONLY = (1 << 2)
|
@@ -323,6 +326,7 @@ module OpenCL
|
|
323
326
|
MEM_ASSOCIATED_MEMOBJECT = 0x1107
|
324
327
|
MEM_OFFSET = 0x1108
|
325
328
|
MEM_USES_SVM_POINTER = 0x1109
|
329
|
+
MEM_PROPERTIES = 0x110A
|
326
330
|
IMAGE_FORMAT = 0x1110
|
327
331
|
IMAGE_ELEMENT_SIZE = 0x1111
|
328
332
|
IMAGE_ROW_PITCH = 0x1112
|
@@ -336,6 +340,7 @@ module OpenCL
|
|
336
340
|
IMAGE_NUM_SAMPLES = 0x111A
|
337
341
|
PIPE_PACKET_SIZE = 0x1120
|
338
342
|
PIPE_MAX_PACKETS = 0x1121
|
343
|
+
PIPE_PROPERTIES = 0x1122
|
339
344
|
ADDRESS_NONE = 0x1130
|
340
345
|
ADDRESS_CLAMP_TO_EDGE = 0x1131
|
341
346
|
ADDRESS_CLAMP = 0x1132
|
@@ -451,6 +456,7 @@ module OpenCL
|
|
451
456
|
COMMAND_SVM_MEMFILL = 0x120B
|
452
457
|
COMMAND_SVM_MAP = 0x120C
|
453
458
|
COMMAND_SVM_UNMAP = 0x120D
|
459
|
+
COMMAND_SVM_MIGRATE_MEM = 0x120E
|
454
460
|
COMPLETE = 0x0
|
455
461
|
RUNNING = 0x1
|
456
462
|
SUBMITTED = 0x2
|
@@ -482,6 +488,13 @@ module OpenCL
|
|
482
488
|
MEM_HOST_WRITETHROUGH_QCOM = 0x40A6
|
483
489
|
MEM_HOST_WRITE_COMBINING_QCOM = 0x40A7
|
484
490
|
MEM_ION_HOST_PTR_QCOM = 0x40A8
|
491
|
+
NAME_VERSION_MAX_NAME_SIZE = 64
|
492
|
+
VERSION_MAJOR_BITS = 10
|
493
|
+
VERSION_MINOR_BITS = 10
|
494
|
+
VERSION_PATCH_BITS = 12
|
495
|
+
VERSION_MAJOR_MASK = (1 << VERSION_MAJOR_BITS) - 1
|
496
|
+
VERSION_MINOR_MASK = (1 << VERSION_MINOR_BITS) - 1
|
497
|
+
VERSION_PATCH_MASK = (1 << VERSION_PATCH_BITS) - 1
|
485
498
|
# Parent class to map OpenCL errors, and is used to raise unknown errors
|
486
499
|
class Error < StandardError
|
487
500
|
attr_reader :code
|
@@ -695,8 +708,7 @@ EOF
|
|
695
708
|
|
696
709
|
# Returns true if flag is bitwise included in the Bitfield
|
697
710
|
def include?(flag)
|
698
|
-
return
|
699
|
-
return false
|
711
|
+
return ( @val & flag ) == flag
|
700
712
|
end
|
701
713
|
|
702
714
|
# Returns a String corresponding to the Bitfield description
|
@@ -744,7 +756,7 @@ EOF
|
|
744
756
|
return @val
|
745
757
|
end
|
746
758
|
|
747
|
-
#
|
759
|
+
# Sets the internal representation of the Bitfield to val
|
748
760
|
def flags=(val)
|
749
761
|
@val = val
|
750
762
|
end
|
@@ -762,7 +774,7 @@ EOF
|
|
762
774
|
# @!parse include $2
|
763
775
|
# @private
|
764
776
|
def self.register_extension(name, mod, cond)
|
765
|
-
self.send(:
|
777
|
+
self.send(:prepend, mod)
|
766
778
|
end
|
767
779
|
|
768
780
|
else
|
@@ -799,6 +811,8 @@ EOF
|
|
799
811
|
VENDOR = 0x0903
|
800
812
|
EXTENSIONS = 0x0904
|
801
813
|
HOST_TIMER_RESOLUTION = 0x0905
|
814
|
+
NUMERIC_VERSION = 0x0906
|
815
|
+
EXTENSIONS_WITH_VERSION = 0x0907
|
802
816
|
|
803
817
|
# Creates a new Platform and retains it if specified and aplicable
|
804
818
|
def initialize(ptr, retain = true)
|
@@ -914,6 +928,20 @@ EOF
|
|
914
928
|
IL_VERSION = 0x105B
|
915
929
|
MAX_NUM_SUB_GROUPS = 0x105C
|
916
930
|
SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS = 0x105D
|
931
|
+
NUMERIC_VERSION = 0x105E
|
932
|
+
EXTENSIONS_WITH_VERSION = 0x1060
|
933
|
+
ILS_WITH_VERSION = 0x1061
|
934
|
+
BUILT_IN_KERNELS_WITH_VERSION = 0x1062
|
935
|
+
ATOMIC_MEMORY_CAPABILITIES = 0x1063
|
936
|
+
ATOMIC_FENCE_CAPABILITIES = 0x1064
|
937
|
+
NON_UNIFORM_WORK_GROUP_SUPPORT = 0x1065
|
938
|
+
OPENCL_C_ALL_VERSIONS = 0x1066
|
939
|
+
PREFERRED_WORK_GROUP_SIZE_MULTIPLE = 0x1067
|
940
|
+
WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT = 0x1068
|
941
|
+
GENERIC_ADDRESS_SPACE_SUPPORT = 0x1069
|
942
|
+
OPENCL_C_FEATURES = 0x106F
|
943
|
+
DEVICE_ENQUEUE_SUPPORT = 0x1070
|
944
|
+
PIPE_SUPPORT = 0x1071
|
917
945
|
PARTITION_EQUALLY = 0x1086
|
918
946
|
PARTITION_BY_COUNTS = 0x1087
|
919
947
|
PARTITION_BY_COUNTS_LIST_END = 0x0
|
@@ -929,6 +957,13 @@ EOF
|
|
929
957
|
SVM_FINE_GRAIN_SYSTEM = (1 << 2)
|
930
958
|
SVM_ATOMICS = (1 << 3)
|
931
959
|
PAGE_SIZE_QCOM = 0x40A1
|
960
|
+
ATOMIC_ORDER_RELAXED = (1 << 0)
|
961
|
+
ATOMIC_ORDER_ACQ_REL = (1 << 1)
|
962
|
+
ATOMIC_ORDER_SEQ_CST = (1 << 2)
|
963
|
+
ATOMIC_SCOPE_WORK_ITEM = (1 << 3)
|
964
|
+
ATOMIC_SCOPE_WORK_GROUP = (1 << 4)
|
965
|
+
ATOMIC_SCOPE_DEVICE = (1 << 5)
|
966
|
+
ATOMIC_SCOPE_ALL_DEVICES = (1 << 6)
|
932
967
|
|
933
968
|
#DEFINED in ext/device_fission.rb
|
934
969
|
# # Creates a new Device and retains it if specified and aplicable
|
@@ -1079,6 +1114,25 @@ EOF
|
|
1079
1114
|
end
|
1080
1115
|
end
|
1081
1116
|
|
1117
|
+
# Bitfield that maps the :cl_device_atomic_capabilities
|
1118
|
+
class AtomicCapabilities < Bitfield
|
1119
|
+
ORDER_RELAXED = (1 << 0)
|
1120
|
+
ORDER_ACQ_REL = (1 << 1)
|
1121
|
+
ORDER_SEQ_CST = (1 << 2)
|
1122
|
+
SCOPE_WORK_ITEM = (1 << 3)
|
1123
|
+
SCOPE_WORK_GROUP = (1 << 4)
|
1124
|
+
SCOPE_DEVICE = (1 << 5)
|
1125
|
+
SCOPE_ALL_DEVICES = (1 << 6)
|
1126
|
+
# Returns an Array of String representing the different flags set
|
1127
|
+
def names
|
1128
|
+
fs = []
|
1129
|
+
%w( ORDER_RELAXED ORDER_ACQ_REL ORDER_SEQ_CST SCOPE_WORK_ITEM SCOPE_WORK_GROUP SCOPE_DEVICE SCOPE_ALL_DEVICES ).each { |f|
|
1130
|
+
fs.push(f) if self.include?( self.class.const_get(f) )
|
1131
|
+
}
|
1132
|
+
return fs
|
1133
|
+
end
|
1134
|
+
end
|
1135
|
+
|
1082
1136
|
end
|
1083
1137
|
class Context < ExtendedStruct
|
1084
1138
|
layout :dummy, :pointer
|
@@ -1132,6 +1186,7 @@ EOF
|
|
1132
1186
|
PROPERTIES = 0x1093
|
1133
1187
|
SIZE = 0x1094
|
1134
1188
|
DEVICE_DEFAULT = 0x1095
|
1189
|
+
PROPERTIES_ARRAY = 0x1098
|
1135
1190
|
# Creates a new CommandQueue and retains it if specified and aplicable
|
1136
1191
|
def initialize(ptr, retain = true)
|
1137
1192
|
super(ptr)
|
@@ -1202,6 +1257,7 @@ EOF
|
|
1202
1257
|
ASSOCIATED_MEMOBJECT = 0x1107
|
1203
1258
|
OFFSET = 0x1108
|
1204
1259
|
USES_SVM_POINTER = 0x1109
|
1260
|
+
PROPERTIES = 0x110A
|
1205
1261
|
HOST_UNCACHED_QCOM = 0x40A4
|
1206
1262
|
HOST_WRITEBACK_QCOM = 0x40A5
|
1207
1263
|
HOST_WRITETHROUGH_QCOM = 0x40A6
|
@@ -1737,6 +1793,7 @@ EOF
|
|
1737
1793
|
SVM_MEMFILL = 0x120B
|
1738
1794
|
SVM_MAP = 0x120C
|
1739
1795
|
SVM_UNMAP = 0x120D
|
1796
|
+
SVM_MIGRATE_MEM = 0x120E
|
1740
1797
|
@codes = {}
|
1741
1798
|
@codes[0x11F0] = 'NDRANGE_KERNEL'
|
1742
1799
|
@codes[0x11F1] = 'TASK'
|
@@ -1768,6 +1825,7 @@ EOF
|
|
1768
1825
|
@codes[0x120B] = 'SVM_MEMFILL'
|
1769
1826
|
@codes[0x120C] = 'SVM_MAP'
|
1770
1827
|
@codes[0x120D] = 'SVM_UNMAP'
|
1828
|
+
@codes[0x120E] = 'SVM_MIGRATE_MEM'
|
1771
1829
|
end
|
1772
1830
|
|
1773
1831
|
# Enum that maps the :cl_gl_object_type type
|
@@ -1839,154 +1897,6 @@ EOF
|
|
1839
1897
|
layout :dummy, :pointer
|
1840
1898
|
PACKET_SIZE = 0x1120
|
1841
1899
|
MAX_PACKETS = 0x1121
|
1842
|
-
|
1843
|
-
attach_function :clGetPlatformIDs, [:cl_uint,:pointer,:pointer], :cl_int
|
1844
|
-
attach_function :clGetPlatformInfo, [Platform,:cl_platform_info,:size_t,:pointer,:pointer], :cl_int
|
1845
|
-
attach_function :clGetDeviceIDs, [Platform,:cl_device_type,:cl_uint,:pointer,:pointer], :cl_int
|
1846
|
-
attach_function :clGetDeviceInfo, [Device,:cl_device_info,:size_t,:pointer,:pointer], :cl_int
|
1847
|
-
callback :clCreateContext_notify, [:string,:pointer,:size_t,:pointer], :void
|
1848
|
-
attach_function :clCreateContext, [:pointer,:cl_uint,:pointer,:clCreateContext_notify,:pointer,:pointer], Context
|
1849
|
-
callback :clCreateContextFromType_notify, [:string,:pointer,:size_t,:pointer], :void
|
1850
|
-
attach_function :clCreateContextFromType, [:pointer,:cl_device_type,:clCreateContextFromType_notify,:pointer,:pointer], Context
|
1851
|
-
attach_function :clRetainContext, [Context], :cl_int
|
1852
|
-
attach_function :clReleaseContext, [Context], :cl_int
|
1853
|
-
attach_function :clGetContextInfo, [Context,:cl_context_info,:size_t,:pointer,:pointer], :cl_int
|
1854
|
-
attach_function :clRetainCommandQueue, [CommandQueue], :cl_int
|
1855
|
-
attach_function :clReleaseCommandQueue, [CommandQueue], :cl_int
|
1856
|
-
attach_function :clGetCommandQueueInfo, [CommandQueue,:cl_command_queue_info,:size_t,:pointer,:pointer], :cl_int
|
1857
|
-
attach_function :clCreateBuffer, [Context,:cl_mem_flags,:size_t,:pointer,:pointer], Mem
|
1858
|
-
attach_function :clRetainMemObject, [Mem], :cl_int
|
1859
|
-
attach_function :clReleaseMemObject, [Mem], :cl_int
|
1860
|
-
attach_function :clGetSupportedImageFormats, [Context,:cl_mem_flags,:cl_mem_object_type,:cl_uint,:pointer,:pointer], :cl_int
|
1861
|
-
attach_function :clGetMemObjectInfo, [Mem,:cl_mem_info,:size_t,:pointer,:pointer], :cl_int
|
1862
|
-
attach_function :clGetImageInfo, [Mem,:cl_image_info,:size_t,:pointer,:pointer], :cl_int
|
1863
|
-
attach_function :clRetainSampler, [Sampler], :cl_int
|
1864
|
-
attach_function :clReleaseSampler, [Sampler], :cl_int
|
1865
|
-
attach_function :clGetSamplerInfo, [Sampler,:cl_sampler_info,:size_t,:pointer,:pointer], :cl_int
|
1866
|
-
attach_function :clCreateProgramWithSource, [Context,:cl_uint,:pointer,:pointer,:pointer], Program
|
1867
|
-
attach_function :clCreateProgramWithBinary, [Context,:cl_uint,:pointer,:pointer,:pointer,:pointer,:pointer], Program
|
1868
|
-
attach_function :clRetainProgram, [Program], :cl_int
|
1869
|
-
attach_function :clReleaseProgram, [Program], :cl_int
|
1870
|
-
callback :clBuildProgram_notify, [Program.by_ref,:pointer], :void
|
1871
|
-
attach_function :clBuildProgram, [Program,:cl_uint,:pointer,:pointer,:clBuildProgram_notify,:pointer], :cl_int
|
1872
|
-
attach_function :clGetProgramInfo, [Program,:cl_program_info,:size_t,:pointer,:pointer], :cl_int
|
1873
|
-
attach_function :clGetProgramBuildInfo, [Program,Device,:cl_program_build_info,:size_t,:pointer,:pointer], :cl_int
|
1874
|
-
attach_function :clCreateKernel, [Program,:pointer,:pointer], Kernel
|
1875
|
-
attach_function :clCreateKernelsInProgram, [Program,:cl_uint,:pointer,:pointer], :cl_int
|
1876
|
-
attach_function :clRetainKernel, [Kernel], :cl_int
|
1877
|
-
attach_function :clReleaseKernel, [Kernel], :cl_int
|
1878
|
-
attach_function :clSetKernelArg, [Kernel,:cl_uint,:size_t,:pointer], :cl_int
|
1879
|
-
attach_function :clGetKernelInfo, [Kernel,:cl_kernel_info,:size_t,:pointer,:pointer], :cl_int
|
1880
|
-
attach_function :clGetKernelWorkGroupInfo, [Kernel,Device,:cl_kernel_work_group_info,:size_t,:pointer,:pointer], :cl_int
|
1881
|
-
attach_function :clWaitForEvents, [:cl_uint,:pointer], :cl_int
|
1882
|
-
attach_function :clGetEventInfo, [Event,:cl_event_info,:size_t,:pointer,:pointer], :cl_int
|
1883
|
-
attach_function :clRetainEvent, [Event], :cl_int
|
1884
|
-
attach_function :clReleaseEvent, [Event], :cl_int
|
1885
|
-
attach_function :clGetEventProfilingInfo, [Event,:cl_profiling_info,:size_t,:pointer,:pointer], :cl_int
|
1886
|
-
attach_function :clFlush, [CommandQueue], :cl_int
|
1887
|
-
attach_function :clFinish, [CommandQueue], :cl_int
|
1888
|
-
attach_function :clEnqueueReadBuffer, [CommandQueue,Mem,:cl_bool,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1889
|
-
attach_function :clEnqueueWriteBuffer, [CommandQueue,Mem,:cl_bool,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1890
|
-
attach_function :clEnqueueCopyBuffer, [CommandQueue,Mem,Mem,:size_t,:size_t,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
1891
|
-
attach_function :clEnqueueReadImage, [CommandQueue,Mem,:cl_bool,:pointer,:pointer,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1892
|
-
attach_function :clEnqueueWriteImage, [CommandQueue,Mem,:cl_bool,:pointer,:pointer,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1893
|
-
attach_function :clEnqueueCopyImage, [CommandQueue,Mem,Mem,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1894
|
-
attach_function :clEnqueueCopyImageToBuffer, [CommandQueue,Mem,Mem,:pointer,:pointer,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
1895
|
-
attach_function :clEnqueueCopyBufferToImage, [CommandQueue,Mem,Mem,:size_t,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1896
|
-
attach_function :clEnqueueMapBuffer, [CommandQueue,Mem,:cl_bool,:cl_map_flags,:size_t,:size_t,:cl_uint,:pointer,:pointer,:pointer], :pointer
|
1897
|
-
attach_function :clEnqueueMapImage, [CommandQueue,Mem,:cl_bool,:cl_map_flags,:pointer,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer,:pointer], :pointer
|
1898
|
-
attach_function :clEnqueueUnmapMemObject, [CommandQueue,Mem,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1899
|
-
attach_function :clEnqueueNDRangeKernel, [CommandQueue,Kernel,:cl_uint,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1900
|
-
callback :clEnqueueNativeKernel_notify, [:pointer], :void
|
1901
|
-
attach_function :clEnqueueNativeKernel, [CommandQueue,:clEnqueueNativeKernel_notify,:pointer,:size_t,:cl_uint,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1902
|
-
attach_function :clCreateImage2D, [Context,:cl_mem_flags,:pointer,:size_t,:size_t,:size_t,:pointer,:pointer], Mem
|
1903
|
-
attach_function :clCreateImage3D, [Context,:cl_mem_flags,:pointer,:size_t,:size_t,:size_t,:size_t,:size_t,:pointer,:pointer], Mem
|
1904
|
-
attach_function :clEnqueueMarker, [CommandQueue,:pointer], :cl_int
|
1905
|
-
attach_function :clEnqueueWaitForEvents, [CommandQueue,:cl_uint,:pointer], :cl_int
|
1906
|
-
attach_function :clEnqueueBarrier, [CommandQueue], :cl_int
|
1907
|
-
attach_function :clUnloadCompiler, [:void], :cl_int
|
1908
|
-
attach_function :clGetExtensionFunctionAddress, [:pointer], :pointer
|
1909
|
-
attach_function :clCreateCommandQueue, [Context,Device,:cl_command_queue_properties,:pointer], CommandQueue
|
1910
|
-
attach_function :clCreateSampler, [Context,:cl_bool,:cl_addressing_mode,:cl_filter_mode,:pointer], Sampler
|
1911
|
-
attach_function :clEnqueueTask, [CommandQueue,Kernel,:cl_uint,:pointer,:pointer], :cl_int
|
1912
|
-
attach_function :clCreateFromGLBuffer, [Context,:cl_mem_flags,:cl_GLuint,:pointer], Mem
|
1913
|
-
attach_function :clCreateFromGLRenderbuffer, [Context,:cl_mem_flags,:cl_GLuint,:pointer], Mem
|
1914
|
-
attach_function :clGetGLObjectInfo, [Mem,:pointer,:pointer], :cl_int
|
1915
|
-
attach_function :clGetGLTextureInfo, [Mem,:cl_gl_texture_info,:size_t,:pointer,:pointer], :cl_int
|
1916
|
-
attach_function :clEnqueueAcquireGLObjects, [CommandQueue,:cl_uint,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1917
|
-
attach_function :clEnqueueReleaseGLObjects, [CommandQueue,:cl_uint,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1918
|
-
attach_function :clCreateFromGLTexture2D, [Context,:cl_mem_flags,:cl_GLenum,:cl_GLint,:cl_GLuint,:pointer], Mem
|
1919
|
-
attach_function :clCreateFromGLTexture3D, [Context,:cl_mem_flags,:cl_GLenum,:cl_GLint,:cl_GLuint,:pointer], Mem
|
1920
|
-
begin # OpenCL 1.1
|
1921
|
-
attach_function :clCreateSubBuffer, [Mem,:cl_mem_flags,:cl_buffer_create_type,:pointer,:pointer], Mem
|
1922
|
-
attach_function :clEnqueueReadBufferRect, [CommandQueue,Mem,:cl_bool,:pointer,:pointer,:pointer,:size_t,:size_t,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1923
|
-
attach_function :clEnqueueWriteBufferRect, [CommandQueue,Mem,:cl_bool,:pointer,:pointer,:pointer,:size_t,:size_t,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1924
|
-
attach_function :clEnqueueCopyBufferRect, [CommandQueue,Mem,Mem,:pointer,:pointer,:pointer,:size_t,:size_t,:size_t,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
1925
|
-
callback :clSetMemObjectDestructorCallback_notify, [:pointer,:pointer], :void
|
1926
|
-
attach_function :clSetMemObjectDestructorCallback, [Mem,:clSetMemObjectDestructorCallback_notify,:pointer], :cl_int
|
1927
|
-
attach_function :clCreateUserEvent, [Context,:pointer], Event
|
1928
|
-
attach_function :clSetUserEventStatus, [Event,:cl_int], :cl_int
|
1929
|
-
callback :clSetEventCallback_notify, [Event.by_ref,:cl_int,:pointer], :void
|
1930
|
-
attach_function :clSetEventCallback, [Event,:cl_int,:clSetEventCallback_notify,:pointer], :cl_int
|
1931
|
-
begin # OpenCL 1.2
|
1932
|
-
attach_function :clCreateSubDevices, [Device,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1933
|
-
attach_function :clRetainDevice, [Device], :cl_int
|
1934
|
-
attach_function :clReleaseDevice, [Device], :cl_int
|
1935
|
-
attach_function :clCreateImage, [Context,:cl_mem_flags,:pointer,:pointer,:pointer,:pointer], Mem
|
1936
|
-
attach_function :clCreateProgramWithBuiltInKernels, [Context,:cl_uint,:pointer,:pointer,:pointer], Program
|
1937
|
-
callback :clCompileProgram_notify, [Program.by_ref,:pointer], :void
|
1938
|
-
attach_function :clCompileProgram, [Program,:cl_uint,:pointer,:pointer,:cl_uint,:pointer,:pointer,:clCompileProgram_notify,:pointer], :cl_int
|
1939
|
-
callback :clLinkProgram_notify, [Program.by_ref,:pointer], :void
|
1940
|
-
attach_function :clLinkProgram, [Context,:cl_uint,:pointer,:pointer,:cl_uint,:pointer,:clLinkProgram_notify,:pointer,:pointer], Program
|
1941
|
-
attach_function :clUnloadPlatformCompiler, [Platform], :cl_int
|
1942
|
-
attach_function :clGetKernelArgInfo, [Kernel,:cl_uint,:cl_kernel_arg_info,:size_t,:pointer,:pointer], :cl_int
|
1943
|
-
attach_function :clEnqueueFillBuffer, [CommandQueue,Mem,:pointer,:size_t,:size_t,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
1944
|
-
attach_function :clEnqueueFillImage, [CommandQueue,Mem,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1945
|
-
attach_function :clEnqueueMigrateMemObjects, [CommandQueue,:cl_uint,:pointer,:cl_mem_migration_flags,:cl_uint,:pointer,:pointer], :cl_int
|
1946
|
-
attach_function :clEnqueueMarkerWithWaitList, [CommandQueue,:cl_uint,:pointer,:pointer], :cl_int
|
1947
|
-
attach_function :clEnqueueBarrierWithWaitList, [CommandQueue,:cl_uint,:pointer,:pointer], :cl_int
|
1948
|
-
attach_function :clGetExtensionFunctionAddressForPlatform, [Platform,:pointer], :pointer
|
1949
|
-
attach_function :clCreateFromGLTexture, [Context,:cl_mem_flags,:cl_GLenum,:cl_GLint,:cl_GLuint,:pointer], Mem
|
1950
|
-
begin # OpenCL 2.0
|
1951
|
-
attach_function :clCreateCommandQueueWithProperties, [Context,Device,:pointer,:pointer], CommandQueue
|
1952
|
-
attach_function :clCreatePipe, [Context,:cl_mem_flags,:cl_uint,:cl_uint,:pointer,:pointer], Mem
|
1953
|
-
attach_function :clGetPipeInfo, [Mem,:cl_pipe_info,:size_t,:pointer,:pointer], :cl_int
|
1954
|
-
attach_function :clSVMAlloc, [Context,:cl_svm_mem_flags,:size_t,:cl_uint], :pointer
|
1955
|
-
attach_function :clSVMFree, [Context,:pointer], :void
|
1956
|
-
attach_function :clCreateSamplerWithProperties, [Context,:pointer,:pointer], Sampler
|
1957
|
-
attach_function :clSetKernelArgSVMPointer, [Kernel,:cl_uint,:pointer], :cl_int
|
1958
|
-
attach_function :clSetKernelExecInfo, [Kernel,:cl_kernel_exec_info,:size_t,:pointer], :cl_int
|
1959
|
-
callback :clEnqueueSVMFree_notify, [CommandQueue.by_ref,:cl_uint,:pointer,:pointer], :void
|
1960
|
-
attach_function :clEnqueueSVMFree, [CommandQueue,:cl_uint,:pointer,:clEnqueueSVMFree_notify,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1961
|
-
attach_function :clEnqueueSVMMemcpy, [CommandQueue,:cl_bool,:pointer,:pointer,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
1962
|
-
attach_function :clEnqueueSVMMemFill, [CommandQueue,:pointer,:pointer,:size_t,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
1963
|
-
attach_function :clEnqueueSVMMap, [CommandQueue,:cl_bool,:cl_map_flags,:pointer,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
1964
|
-
attach_function :clEnqueueSVMUnmap, [CommandQueue,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
1965
|
-
begin # OpenCL 2.1
|
1966
|
-
attach_function :clSetDefaultDeviceCommandQueue, [Context,Device,CommandQueue], :cl_int
|
1967
|
-
attach_function :clGetDeviceAndHostTimer, [Device,:pointer,:pointer], :cl_int
|
1968
|
-
attach_function :clGetHostTimer, [Device,:pointer], :cl_int
|
1969
|
-
attach_function :clCreateProgramWithIL, [Context,:pointer,:size_t,:pointer], Program
|
1970
|
-
attach_function :clCloneKernel, [Kernel,:pointer], Kernel
|
1971
|
-
attach_function :clGetKernelSubGroupInfo, [Kernel,Device,:cl_kernel_sub_group_info,:size_t,:pointer,:size_t,:pointer,:pointer], :cl_int
|
1972
|
-
attach_function :clEnqueueSVMMigrateMem, [CommandQueue,:cl_uint,:pointer,:pointer,:cl_mem_migration_flags,:cl_uint,:pointer,:pointer], :cl_int
|
1973
|
-
begin # OpenCL 2.2
|
1974
|
-
callback :clSetProgramReleaseCallback_notify, [Program.by_ref,:pointer], :void
|
1975
|
-
attach_function :clSetProgramReleaseCallback, [Program,:clSetProgramReleaseCallback_notify,:pointer], :cl_int
|
1976
|
-
attach_function :clSetProgramSpecializationConstant, [Program,:cl_uint,:size_t,:pointer], :cl_int
|
1977
|
-
rescue NotFoundError => e
|
1978
|
-
warn "Warning OpenCL 2.1 loader detected!"
|
1979
|
-
end
|
1980
|
-
rescue NotFoundError => e
|
1981
|
-
warn "Warning OpenCL 2.0 loader detected!"
|
1982
|
-
end
|
1983
|
-
rescue NotFoundError => e
|
1984
|
-
warn "Warning OpenCL 1.2 loader detected!"
|
1985
|
-
end
|
1986
|
-
rescue NotFoundError => e
|
1987
|
-
warn "Warning OpenCL 1.1 loader detected!"
|
1988
|
-
end
|
1989
|
-
rescue NotFoundError => e
|
1990
|
-
warn "Warning OpenCL 1.0 loader detected!"
|
1900
|
+
PROPERTIES = 0x1122
|
1991
1901
|
end
|
1992
1902
|
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
using OpenCLRefinements if RUBY_VERSION.scan(/\d+/).collect(&:to_i).first >= 2
|
2
|
+
module OpenCL
|
3
|
+
begin
|
4
|
+
if ENV["LIBOPENCL_SO"]
|
5
|
+
ffi_lib ENV["LIBOPENCL_SO"]
|
6
|
+
else
|
7
|
+
raise LoadError
|
8
|
+
end
|
9
|
+
rescue LoadError
|
10
|
+
begin
|
11
|
+
ffi_lib "OpenCL"
|
12
|
+
rescue LoadError
|
13
|
+
begin
|
14
|
+
ffi_lib "libOpenCL.so.1"
|
15
|
+
rescue LoadError
|
16
|
+
begin
|
17
|
+
ffi_lib '/System/Library/Frameworks/OpenCL.framework/OpenCL'
|
18
|
+
rescue LoadError
|
19
|
+
raise "OpenCL implementation not found!"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
attach_function :clGetPlatformIDs, [:cl_uint,:pointer,:pointer], :cl_int
|
25
|
+
attach_function :clGetPlatformInfo, [Platform,:cl_platform_info,:size_t,:pointer,:pointer], :cl_int
|
26
|
+
attach_function :clGetDeviceIDs, [Platform,:cl_device_type,:cl_uint,:pointer,:pointer], :cl_int
|
27
|
+
attach_function :clGetDeviceInfo, [Device,:cl_device_info,:size_t,:pointer,:pointer], :cl_int
|
28
|
+
callback :clCreateContext_notify, [:string,:pointer,:size_t,:pointer], :void
|
29
|
+
attach_function :clCreateContext, [:pointer,:cl_uint,:pointer,:clCreateContext_notify,:pointer,:pointer], Context
|
30
|
+
callback :clCreateContextFromType_notify, [:string,:pointer,:size_t,:pointer], :void
|
31
|
+
attach_function :clCreateContextFromType, [:pointer,:cl_device_type,:clCreateContextFromType_notify,:pointer,:pointer], Context
|
32
|
+
attach_function :clRetainContext, [Context], :cl_int
|
33
|
+
attach_function :clReleaseContext, [Context], :cl_int
|
34
|
+
attach_function :clGetContextInfo, [Context,:cl_context_info,:size_t,:pointer,:pointer], :cl_int
|
35
|
+
attach_function :clRetainCommandQueue, [CommandQueue], :cl_int
|
36
|
+
attach_function :clReleaseCommandQueue, [CommandQueue], :cl_int
|
37
|
+
attach_function :clGetCommandQueueInfo, [CommandQueue,:cl_command_queue_info,:size_t,:pointer,:pointer], :cl_int
|
38
|
+
attach_function :clCreateBuffer, [Context,:cl_mem_flags,:size_t,:pointer,:pointer], Mem
|
39
|
+
attach_function :clRetainMemObject, [Mem], :cl_int
|
40
|
+
attach_function :clReleaseMemObject, [Mem], :cl_int
|
41
|
+
attach_function :clGetSupportedImageFormats, [Context,:cl_mem_flags,:cl_mem_object_type,:cl_uint,:pointer,:pointer], :cl_int
|
42
|
+
attach_function :clGetMemObjectInfo, [Mem,:cl_mem_info,:size_t,:pointer,:pointer], :cl_int
|
43
|
+
attach_function :clGetImageInfo, [Mem,:cl_image_info,:size_t,:pointer,:pointer], :cl_int
|
44
|
+
attach_function :clRetainSampler, [Sampler], :cl_int
|
45
|
+
attach_function :clReleaseSampler, [Sampler], :cl_int
|
46
|
+
attach_function :clGetSamplerInfo, [Sampler,:cl_sampler_info,:size_t,:pointer,:pointer], :cl_int
|
47
|
+
attach_function :clCreateProgramWithSource, [Context,:cl_uint,:pointer,:pointer,:pointer], Program
|
48
|
+
attach_function :clCreateProgramWithBinary, [Context,:cl_uint,:pointer,:pointer,:pointer,:pointer,:pointer], Program
|
49
|
+
attach_function :clRetainProgram, [Program], :cl_int
|
50
|
+
attach_function :clReleaseProgram, [Program], :cl_int
|
51
|
+
callback :clBuildProgram_notify, [Program.by_ref,:pointer], :void
|
52
|
+
attach_function :clBuildProgram, [Program,:cl_uint,:pointer,:pointer,:clBuildProgram_notify,:pointer], :cl_int
|
53
|
+
attach_function :clGetProgramInfo, [Program,:cl_program_info,:size_t,:pointer,:pointer], :cl_int
|
54
|
+
attach_function :clGetProgramBuildInfo, [Program,Device,:cl_program_build_info,:size_t,:pointer,:pointer], :cl_int
|
55
|
+
attach_function :clCreateKernel, [Program,:pointer,:pointer], Kernel
|
56
|
+
attach_function :clCreateKernelsInProgram, [Program,:cl_uint,:pointer,:pointer], :cl_int
|
57
|
+
attach_function :clRetainKernel, [Kernel], :cl_int
|
58
|
+
attach_function :clReleaseKernel, [Kernel], :cl_int
|
59
|
+
attach_function :clSetKernelArg, [Kernel,:cl_uint,:size_t,:pointer], :cl_int
|
60
|
+
attach_function :clGetKernelInfo, [Kernel,:cl_kernel_info,:size_t,:pointer,:pointer], :cl_int
|
61
|
+
attach_function :clGetKernelWorkGroupInfo, [Kernel,Device,:cl_kernel_work_group_info,:size_t,:pointer,:pointer], :cl_int
|
62
|
+
attach_function :clWaitForEvents, [:cl_uint,:pointer], :cl_int
|
63
|
+
attach_function :clGetEventInfo, [Event,:cl_event_info,:size_t,:pointer,:pointer], :cl_int
|
64
|
+
attach_function :clRetainEvent, [Event], :cl_int
|
65
|
+
attach_function :clReleaseEvent, [Event], :cl_int
|
66
|
+
attach_function :clGetEventProfilingInfo, [Event,:cl_profiling_info,:size_t,:pointer,:pointer], :cl_int
|
67
|
+
attach_function :clFlush, [CommandQueue], :cl_int
|
68
|
+
attach_function :clFinish, [CommandQueue], :cl_int
|
69
|
+
attach_function :clEnqueueReadBuffer, [CommandQueue,Mem,:cl_bool,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
70
|
+
attach_function :clEnqueueWriteBuffer, [CommandQueue,Mem,:cl_bool,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
71
|
+
attach_function :clEnqueueCopyBuffer, [CommandQueue,Mem,Mem,:size_t,:size_t,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
72
|
+
attach_function :clEnqueueReadImage, [CommandQueue,Mem,:cl_bool,:pointer,:pointer,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
73
|
+
attach_function :clEnqueueWriteImage, [CommandQueue,Mem,:cl_bool,:pointer,:pointer,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
74
|
+
attach_function :clEnqueueCopyImage, [CommandQueue,Mem,Mem,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
75
|
+
attach_function :clEnqueueCopyImageToBuffer, [CommandQueue,Mem,Mem,:pointer,:pointer,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
76
|
+
attach_function :clEnqueueCopyBufferToImage, [CommandQueue,Mem,Mem,:size_t,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
77
|
+
attach_function :clEnqueueMapBuffer, [CommandQueue,Mem,:cl_bool,:cl_map_flags,:size_t,:size_t,:cl_uint,:pointer,:pointer,:pointer], :pointer
|
78
|
+
attach_function :clEnqueueMapImage, [CommandQueue,Mem,:cl_bool,:cl_map_flags,:pointer,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer,:pointer], :pointer
|
79
|
+
attach_function :clEnqueueUnmapMemObject, [CommandQueue,Mem,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
80
|
+
attach_function :clEnqueueNDRangeKernel, [CommandQueue,Kernel,:cl_uint,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
81
|
+
callback :clEnqueueNativeKernel_notify, [:pointer], :void
|
82
|
+
attach_function :clEnqueueNativeKernel, [CommandQueue,:clEnqueueNativeKernel_notify,:pointer,:size_t,:cl_uint,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
83
|
+
attach_function :clCreateImage2D, [Context,:cl_mem_flags,:pointer,:size_t,:size_t,:size_t,:pointer,:pointer], Mem
|
84
|
+
attach_function :clCreateImage3D, [Context,:cl_mem_flags,:pointer,:size_t,:size_t,:size_t,:size_t,:size_t,:pointer,:pointer], Mem
|
85
|
+
attach_function :clEnqueueMarker, [CommandQueue,:pointer], :cl_int
|
86
|
+
attach_function :clEnqueueWaitForEvents, [CommandQueue,:cl_uint,:pointer], :cl_int
|
87
|
+
attach_function :clEnqueueBarrier, [CommandQueue], :cl_int
|
88
|
+
attach_function :clUnloadCompiler, [:void], :cl_int
|
89
|
+
attach_function :clGetExtensionFunctionAddress, [:pointer], :pointer
|
90
|
+
attach_function :clCreateCommandQueue, [Context,Device,:cl_command_queue_properties,:pointer], CommandQueue
|
91
|
+
attach_function :clCreateSampler, [Context,:cl_bool,:cl_addressing_mode,:cl_filter_mode,:pointer], Sampler
|
92
|
+
attach_function :clEnqueueTask, [CommandQueue,Kernel,:cl_uint,:pointer,:pointer], :cl_int
|
93
|
+
attach_function :clCreateFromGLBuffer, [Context,:cl_mem_flags,:cl_GLuint,:pointer], Mem
|
94
|
+
attach_function :clCreateFromGLRenderbuffer, [Context,:cl_mem_flags,:cl_GLuint,:pointer], Mem
|
95
|
+
attach_function :clGetGLObjectInfo, [Mem,:pointer,:pointer], :cl_int
|
96
|
+
attach_function :clGetGLTextureInfo, [Mem,:cl_gl_texture_info,:size_t,:pointer,:pointer], :cl_int
|
97
|
+
attach_function :clEnqueueAcquireGLObjects, [CommandQueue,:cl_uint,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
98
|
+
attach_function :clEnqueueReleaseGLObjects, [CommandQueue,:cl_uint,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
99
|
+
attach_function :clCreateFromGLTexture2D, [Context,:cl_mem_flags,:cl_GLenum,:cl_GLint,:cl_GLuint,:pointer], Mem
|
100
|
+
attach_function :clCreateFromGLTexture3D, [Context,:cl_mem_flags,:cl_GLenum,:cl_GLint,:cl_GLuint,:pointer], Mem
|
101
|
+
begin # OpenCL 1.1
|
102
|
+
attach_function :clCreateSubBuffer, [Mem,:cl_mem_flags,:cl_buffer_create_type,:pointer,:pointer], Mem
|
103
|
+
attach_function :clEnqueueReadBufferRect, [CommandQueue,Mem,:cl_bool,:pointer,:pointer,:pointer,:size_t,:size_t,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
104
|
+
attach_function :clEnqueueWriteBufferRect, [CommandQueue,Mem,:cl_bool,:pointer,:pointer,:pointer,:size_t,:size_t,:size_t,:size_t,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
105
|
+
attach_function :clEnqueueCopyBufferRect, [CommandQueue,Mem,Mem,:pointer,:pointer,:pointer,:size_t,:size_t,:size_t,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
106
|
+
callback :clSetMemObjectDestructorCallback_notify, [:pointer,:pointer], :void
|
107
|
+
attach_function :clSetMemObjectDestructorCallback, [Mem,:clSetMemObjectDestructorCallback_notify,:pointer], :cl_int
|
108
|
+
attach_function :clCreateUserEvent, [Context,:pointer], Event
|
109
|
+
attach_function :clSetUserEventStatus, [Event,:cl_int], :cl_int
|
110
|
+
callback :clSetEventCallback_notify, [Event.by_ref,:cl_int,:pointer], :void
|
111
|
+
attach_function :clSetEventCallback, [Event,:cl_int,:clSetEventCallback_notify,:pointer], :cl_int
|
112
|
+
begin # OpenCL 1.2
|
113
|
+
attach_function :clCreateSubDevices, [Device,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
114
|
+
attach_function :clRetainDevice, [Device], :cl_int
|
115
|
+
attach_function :clReleaseDevice, [Device], :cl_int
|
116
|
+
attach_function :clCreateImage, [Context,:cl_mem_flags,:pointer,:pointer,:pointer,:pointer], Mem
|
117
|
+
attach_function :clCreateProgramWithBuiltInKernels, [Context,:cl_uint,:pointer,:pointer,:pointer], Program
|
118
|
+
callback :clCompileProgram_notify, [Program.by_ref,:pointer], :void
|
119
|
+
attach_function :clCompileProgram, [Program,:cl_uint,:pointer,:pointer,:cl_uint,:pointer,:pointer,:clCompileProgram_notify,:pointer], :cl_int
|
120
|
+
callback :clLinkProgram_notify, [Program.by_ref,:pointer], :void
|
121
|
+
attach_function :clLinkProgram, [Context,:cl_uint,:pointer,:pointer,:cl_uint,:pointer,:clLinkProgram_notify,:pointer,:pointer], Program
|
122
|
+
attach_function :clUnloadPlatformCompiler, [Platform], :cl_int
|
123
|
+
attach_function :clGetKernelArgInfo, [Kernel,:cl_uint,:cl_kernel_arg_info,:size_t,:pointer,:pointer], :cl_int
|
124
|
+
attach_function :clEnqueueFillBuffer, [CommandQueue,Mem,:pointer,:size_t,:size_t,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
125
|
+
attach_function :clEnqueueFillImage, [CommandQueue,Mem,:pointer,:pointer,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
126
|
+
attach_function :clEnqueueMigrateMemObjects, [CommandQueue,:cl_uint,:pointer,:cl_mem_migration_flags,:cl_uint,:pointer,:pointer], :cl_int
|
127
|
+
attach_function :clEnqueueMarkerWithWaitList, [CommandQueue,:cl_uint,:pointer,:pointer], :cl_int
|
128
|
+
attach_function :clEnqueueBarrierWithWaitList, [CommandQueue,:cl_uint,:pointer,:pointer], :cl_int
|
129
|
+
attach_function :clGetExtensionFunctionAddressForPlatform, [Platform,:pointer], :pointer
|
130
|
+
attach_function :clCreateFromGLTexture, [Context,:cl_mem_flags,:cl_GLenum,:cl_GLint,:cl_GLuint,:pointer], Mem
|
131
|
+
begin # OpenCL 2.0
|
132
|
+
attach_function :clCreateCommandQueueWithProperties, [Context,Device,:pointer,:pointer], CommandQueue
|
133
|
+
attach_function :clCreatePipe, [Context,:cl_mem_flags,:cl_uint,:cl_uint,:pointer,:pointer], Mem
|
134
|
+
attach_function :clGetPipeInfo, [Mem,:cl_pipe_info,:size_t,:pointer,:pointer], :cl_int
|
135
|
+
attach_function :clSVMAlloc, [Context,:cl_svm_mem_flags,:size_t,:cl_uint], :pointer
|
136
|
+
attach_function :clSVMFree, [Context,:pointer], :void
|
137
|
+
attach_function :clCreateSamplerWithProperties, [Context,:pointer,:pointer], Sampler
|
138
|
+
attach_function :clSetKernelArgSVMPointer, [Kernel,:cl_uint,:pointer], :cl_int
|
139
|
+
attach_function :clSetKernelExecInfo, [Kernel,:cl_kernel_exec_info,:size_t,:pointer], :cl_int
|
140
|
+
callback :clEnqueueSVMFree_notify, [CommandQueue.by_ref,:cl_uint,:pointer,:pointer], :void
|
141
|
+
attach_function :clEnqueueSVMFree, [CommandQueue,:cl_uint,:pointer,:clEnqueueSVMFree_notify,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
142
|
+
attach_function :clEnqueueSVMMemcpy, [CommandQueue,:cl_bool,:pointer,:pointer,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
143
|
+
attach_function :clEnqueueSVMMemFill, [CommandQueue,:pointer,:pointer,:size_t,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
144
|
+
attach_function :clEnqueueSVMMap, [CommandQueue,:cl_bool,:cl_map_flags,:pointer,:size_t,:cl_uint,:pointer,:pointer], :cl_int
|
145
|
+
attach_function :clEnqueueSVMUnmap, [CommandQueue,:pointer,:cl_uint,:pointer,:pointer], :cl_int
|
146
|
+
begin # OpenCL 2.1
|
147
|
+
attach_function :clSetDefaultDeviceCommandQueue, [Context,Device,CommandQueue], :cl_int
|
148
|
+
attach_function :clGetDeviceAndHostTimer, [Device,:pointer,:pointer], :cl_int
|
149
|
+
attach_function :clGetHostTimer, [Device,:pointer], :cl_int
|
150
|
+
attach_function :clCreateProgramWithIL, [Context,:pointer,:size_t,:pointer], Program
|
151
|
+
attach_function :clCloneKernel, [Kernel,:pointer], Kernel
|
152
|
+
attach_function :clGetKernelSubGroupInfo, [Kernel,Device,:cl_kernel_sub_group_info,:size_t,:pointer,:size_t,:pointer,:pointer], :cl_int
|
153
|
+
attach_function :clEnqueueSVMMigrateMem, [CommandQueue,:cl_uint,:pointer,:pointer,:cl_mem_migration_flags,:cl_uint,:pointer,:pointer], :cl_int
|
154
|
+
begin # OpenCL 2.2
|
155
|
+
callback :clSetProgramReleaseCallback_notify, [Program.by_ref,:pointer], :void
|
156
|
+
attach_function :clSetProgramReleaseCallback, [Program,:clSetProgramReleaseCallback_notify,:pointer], :cl_int
|
157
|
+
attach_function :clSetProgramSpecializationConstant, [Program,:cl_uint,:size_t,:pointer], :cl_int
|
158
|
+
begin # OpenCL 3.0
|
159
|
+
attach_function :clCreateBufferWithProperties, [Context,:pointer,:cl_mem_flags,:size_t,:pointer,:pointer], Mem
|
160
|
+
attach_function :clCreateImageWithProperties, [Context,:pointer,:cl_mem_flags,:pointer,:pointer,:pointer,:pointer], Mem
|
161
|
+
callback :clSetContextDestructorCallback_notify, [Context.by_ref,:pointer], :void
|
162
|
+
attach_function :clSetContextDestructorCallback, [Context,:clSetContextDestructorCallback_notify,:pointer], :cl_int
|
163
|
+
rescue NotFoundError
|
164
|
+
warn "Warning OpenCL 2.2 loader detected!"
|
165
|
+
end
|
166
|
+
rescue NotFoundError
|
167
|
+
warn "Warning OpenCL 2.1 loader detected!"
|
168
|
+
end
|
169
|
+
rescue NotFoundError
|
170
|
+
warn "Warning OpenCL 2.0 loader detected!"
|
171
|
+
end
|
172
|
+
rescue NotFoundError
|
173
|
+
warn "Warning OpenCL 1.2 loader detected!"
|
174
|
+
end
|
175
|
+
rescue NotFoundError
|
176
|
+
warn "Warning OpenCL 1.1 loader detected!"
|
177
|
+
end
|
178
|
+
rescue NotFoundError
|
179
|
+
warn "Warning OpenCL 1.0 loader detected!"
|
180
|
+
end
|
181
|
+
end
|