opencl_ruby_ffi 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,16 @@
1
1
  module OpenCL
2
2
 
3
+ # Waits for the command identified by Event objects to complete
4
+ #
5
+ # ==== Attributes
6
+ #
7
+ # * +event_list+ - a single or an Array of Event to wait upon before returning
8
+ def self.wait_for_events(event_list)
9
+ num_events, events = OpenCL.get_event_wait_list( {:event_wait_list => event_list } )
10
+ error = OpenCL.clWaitForEvents(num_events, events)
11
+ OpenCL.error_check(error)
12
+ return nil
13
+ end
3
14
 
4
15
  # Attaches a callback to event that will be called on the given transition
5
16
  #
@@ -58,7 +69,7 @@ module OpenCL
58
69
 
59
70
  # Returns the CommandQueue associated with the Event, if it exists
60
71
  def command_queue
61
- ptr = FFI::MemoryPointer.new( CommandQueue )
72
+ ptr = FFI::MemoryPointer::new( CommandQueue )
62
73
  error = OpenCL.clGetEventInfo(self, Event::COMMAND_QUEUE, CommandQueue.size, ptr, nil)
63
74
  OpenCL.error_check(error)
64
75
  pt = ptr.read_pointer
@@ -71,7 +82,7 @@ module OpenCL
71
82
 
72
83
  # Returns the Context associated with the Event
73
84
  def context
74
- ptr = FFI::MemoryPointer.new( Context )
85
+ ptr = FFI::MemoryPointer::new( Context )
75
86
  error = OpenCL.clGetEventInfo(self, Event::CONTEXT, Context.size, ptr, nil)
76
87
  OpenCL.error_check(error)
77
88
  return OpenCL::Context::new( ptr.read_pointer )
@@ -82,7 +93,7 @@ module OpenCL
82
93
 
83
94
  # Returns a CommandExecutionStatus corresponding to the status of the command associtated with the Event
84
95
  def command_execution_status
85
- ptr = FFI::MemoryPointer.new( :cl_int )
96
+ ptr = FFI::MemoryPointer::new( :cl_int )
86
97
  error = OpenCL.clGetEventInfo(self, OpenCL::Event::COMMAND_EXECUTION_STATUS, ptr.size, ptr, nil )
87
98
  OpenCL.error_check(error)
88
99
  return OpenCL::CommandExecutionStatus::new( ptr.read_cl_int )
@@ -95,7 +106,7 @@ module OpenCL
95
106
 
96
107
  # Returns the date the command corresponding to Event was queued
97
108
  def profiling_command_queued
98
- ptr = FFI::MemoryPointer.new( :cl_ulong )
109
+ ptr = FFI::MemoryPointer::new( :cl_ulong )
99
110
  error = OpenCL.clGetEventProfilingInfo(self, OpenCL::PROFILING_COMMAND_QUEUED, ptr.size, ptr, nil )
100
111
  OpenCL.error_check(error)
101
112
  return ptr.read_cl_ulong
@@ -103,7 +114,7 @@ module OpenCL
103
114
 
104
115
  # Returns the date the command corresponding to Event was submited
105
116
  def profiling_command_submit
106
- ptr = FFI::MemoryPointer.new( :cl_ulong )
117
+ ptr = FFI::MemoryPointer::new( :cl_ulong )
107
118
  error = OpenCL.clGetEventProfilingInfo(self, OpenCL::PROFILING_COMMAND_SUBMIT, ptr.size, ptr, nil )
108
119
  OpenCL.error_check(error)
109
120
  return ptr.read_cl_ulong
@@ -111,7 +122,7 @@ module OpenCL
111
122
 
112
123
  # Returns the date the command corresponding to Event started
113
124
  def profiling_command_start
114
- ptr = FFI::MemoryPointer.new( :cl_ulong )
125
+ ptr = FFI::MemoryPointer::new( :cl_ulong )
115
126
  error = OpenCL.clGetEventProfilingInfo(self, OpenCL::PROFILING_COMMAND_START, ptr.size, ptr, nil )
116
127
  OpenCL.error_check(error)
117
128
  return ptr.read_cl_ulong
@@ -119,7 +130,7 @@ module OpenCL
119
130
 
120
131
  # Returns the date the command corresponding to Event ended
121
132
  def profiling_command_end
122
- ptr = FFI::MemoryPointer.new( :cl_ulong )
133
+ ptr = FFI::MemoryPointer::new( :cl_ulong )
123
134
  error = OpenCL.clGetEventProfilingInfo(self, OpenCL::PROFILING_COMMAND_END, ptr.size, ptr, nil )
124
135
  OpenCL.error_check(error)
125
136
  return ptr.read_cl_ulong
@@ -15,7 +15,7 @@ module OpenCL
15
15
  def self.create_image( context, format, desc, options = {} )
16
16
  flags = OpenCL.get_flags( options )
17
17
  host_ptr = options[:host_ptr]
18
- error = FFI::MemoryPointer.new( :cl_int )
18
+ error = FFI::MemoryPointer::new( :cl_int )
19
19
  img_ptr = OpenCL.clCreateImage( context, flags, format, desc, host_ptr, error )
20
20
  OpenCL.error_check(error.read_cl_int)
21
21
  return Image::new(img_ptr, false)
@@ -64,7 +64,7 @@ module OpenCL
64
64
  end
65
65
  flags = OpenCL.get_flags( options )
66
66
  host_ptr = options[:host_ptr]
67
- error = FFI::MemoryPointer.new( :cl_int )
67
+ error = FFI::MemoryPointer::new( :cl_int )
68
68
  img_ptr = OpenCL.clCreateImage2D( context, flags, format, width, heigh, row_pitch, host_ptr, error )
69
69
  OpenCL.error_check(error.read_cl_int)
70
70
  return Image::new(img_ptr, false)
@@ -95,7 +95,7 @@ module OpenCL
95
95
  end
96
96
  flags = OpenCL.get_flags( options )
97
97
  host_ptr = options[:host_ptr]
98
- error = FFI::MemoryPointer.new( :cl_int )
98
+ error = FFI::MemoryPointer::new( :cl_int )
99
99
  img_ptr = OpenCL.clCreateImage3D( context, fs, format, width, heigh, depth, row_pitch, slice_pitch, d, error )
100
100
  OpenCL.error_check(error.read_cl_int)
101
101
  return Image::new(img_ptr, false)
@@ -114,7 +114,7 @@ module OpenCL
114
114
  # * +:flags+ - a single or an Array of :cl_mem_flags specifying the flags to be used when creating the Image (default OpenCL::Mem::READ_WRITE)
115
115
  def self.create_from_GL_render_buffer( context, renderbuffer, options = {} )
116
116
  flags = OpenCL.get_flags( options )
117
- error = FFI::MemoryPointer.new( :cl_int )
117
+ error = FFI::MemoryPointer::new( :cl_int )
118
118
  img = OpenCL.clCreateFromGLRenderBuffer( context, flags, renderbuffer, error )
119
119
  OpenCL.error_check(error.read_cl_int)
120
120
  return Image::new( img, false )
@@ -140,7 +140,7 @@ module OpenCL
140
140
  flags = OpenCL.get_flags( options )
141
141
  miplevel = 0
142
142
  miplevel = options[:miplevel] if options[:miplevel]
143
- error = FFI::MemoryPointer.new( :cl_int )
143
+ error = FFI::MemoryPointer::new( :cl_int )
144
144
  img = OpenCL.clCreateFromGLTexture( context, flags, texture_target, miplevel, texture, error )
145
145
  OpenCL.error_check(error.read_cl_int)
146
146
  return Image::new( img, false )
@@ -165,7 +165,7 @@ module OpenCL
165
165
  flags = OpenCL.get_flags( options )
166
166
  miplevel = 0
167
167
  miplevel = options[:miplevel] if options[:miplevel]
168
- error = FFI::MemoryPointer.new( :cl_int )
168
+ error = FFI::MemoryPointer::new( :cl_int )
169
169
  img = OpenCL.clCreateFromGLTexture2D( context, flags, texture_target, miplevel, texture, error )
170
170
  OpenCL.error_check(error.read_cl_int)
171
171
  return Image::new( img, false )
@@ -190,7 +190,7 @@ module OpenCL
190
190
  flags = OpenCL.get_flags( options )
191
191
  miplevel = 0
192
192
  miplevel = options[:miplevel] if options[:miplevel]
193
- error = FFI::MemoryPointer.new( :cl_int )
193
+ error = FFI::MemoryPointer::new( :cl_int )
194
194
  img = OpenCL.clCreateFromGLTexture3D( context, flags, texture_target, miplevel, texture, error )
195
195
  OpenCL.error_check(error.read_cl_int)
196
196
  return Image::new( img, false )
@@ -249,7 +249,7 @@ module OpenCL
249
249
 
250
250
  # Returns the ImageFormat corresponding to the image
251
251
  def format
252
- image_format = FFI::MemoryPointer.new( ImageFormat )
252
+ image_format = FFI::MemoryPointer::new( ImageFormat )
253
253
  error = OpenCL.clGetImageInfo( self, OpenCL::Image::FORMAT, image_format.size, image_format, nil)
254
254
  OpenCL.error_check(error)
255
255
  return OpenCL::ImageFormat::from_pointer( image_format )
@@ -257,7 +257,7 @@ module OpenCL
257
257
 
258
258
  # Returns the associated Buffer if any, nil otherwise
259
259
  def buffer
260
- ptr = FFI::MemoryPointer.new( OpenCL::Buffer )
260
+ ptr = FFI::MemoryPointer::new( OpenCL::Buffer )
261
261
  error = OpenCL.clGetImageInfo(self, OpenCL::Image::BUFFER, OpenCL::Buffer.size, ptr, nil)
262
262
  OpenCL.error_check(error)
263
263
  return nil if ptr.null?
@@ -2,21 +2,21 @@ module OpenCL
2
2
 
3
3
  # Creates an Array of Kernel corresponding to the kernels defined inside the Program
4
4
  def self.create_kernels_in_program( program )
5
- num_ptr = FFI::MemoryPointer.new( :cl_uint )
5
+ num_ptr = FFI::MemoryPointer::new( :cl_uint )
6
6
  error = OpenCL. clCreateKernelsInProgram( program, 0, nil, num_ptr )
7
7
  OpenCL.error_check(error)
8
8
  num_kernels = num_ptr.read_cl_uint
9
- kernels_ptr = FFI::MemoryPointer.new( OpenCL::Kernel, num_kernels )
9
+ kernels_ptr = FFI::MemoryPointer::new( OpenCL::Kernel, num_kernels )
10
10
  error = OpenCL. clCreateKernelsInProgram( program, num_kernels, kernels_ptr, 0 )
11
11
  OpenCL.error_check(error)
12
12
  return kernels_ptr.get_array_of_pointer(0, num_kernels).collect { |kernel_ptr|
13
- OpenCL::Kernel.new(kernel_ptr, false)
13
+ OpenCL::Kernel::new(kernel_ptr, false)
14
14
  }
15
15
  end
16
16
 
17
17
  # Returns the Kernel corresponding the the specified name in the given Program
18
18
  def self.create_kernel(program, name)
19
- pointer_err = FFI::MemoryPointer.new( :cl_int )
19
+ pointer_err = FFI::MemoryPointer::new( :cl_int )
20
20
  kernel_ptr = OpenCL.clCreateKernel(program, name, pointer_err)
21
21
  OpenCL.error_check(pointer_err.read_cl_int)
22
22
  return OpenCL::Kernel::new( kernel_ptr, false )
@@ -28,7 +28,7 @@ module OpenCL
28
28
  sz = value.class.size if sz == nil
29
29
  val = value
30
30
  if value.kind_of?(OpenCL::Mem) then
31
- val = FFI::MemoryPointer.new( OpenCL::Mem )
31
+ val = FFI::MemoryPointer::new( OpenCL::Mem )
32
32
  val.write_pointer(value.to_ptr)
33
33
  end
34
34
  error = OpenCL.clSetKernelArg( kernel, index, sz, val )
@@ -54,7 +54,7 @@ module OpenCL
54
54
  # Returns an AddressQualifier corresponding to the Arg
55
55
  def address_qualifier
56
56
  OpenCL.error_check(OpenCL::INVALID_OPERATION) if @kernel.context.platform.version_number < 1.2
57
- ptr = FFI::MemoryPointer.new( :cl_kernel_arg_address_qualifier )
57
+ ptr = FFI::MemoryPointer::new( :cl_kernel_arg_address_qualifier )
58
58
  error = OpenCL.clGetKernelArgInfo(@kernel, @index, OpenCL::Kernel::Arg::ADDRESS_QUALIFIER, ptr.size, ptr, nil)
59
59
  OpenCL.error_check(error)
60
60
  return OpenCL::Kernel::Arg::AddressQualifier::new( ptr.read_cl_kernel_arg_address_qualifier )
@@ -63,7 +63,7 @@ module OpenCL
63
63
  # Returns an AccessQualifier corresponding to the Arg
64
64
  def access_qualifier
65
65
  OpenCL.error_check(OpenCL::INVALID_OPERATION) if @kernel.context.platform.version_number < 1.2
66
- ptr = FFI::MemoryPointer.new( :cl_kernel_arg_access_qualifier )
66
+ ptr = FFI::MemoryPointer::new( :cl_kernel_arg_access_qualifier )
67
67
  error = OpenCL.clGetKernelArgInfo(@kernel, @index, OpenCL::Kernel::Arg::ACCESS_QUALIFIER, ptr.size, ptr, nil)
68
68
  OpenCL.error_check(error)
69
69
  return OpenCL::Kernel::Arg::AccessQualifier::new( ptr.read_cl_kernel_arg_access_qualifier )
@@ -72,7 +72,7 @@ module OpenCL
72
72
  # Returns a TypeQualifier corresponding to the Arg
73
73
  def type_qualifier
74
74
  OpenCL.error_check(OpenCL::INVALID_OPERATION) if @kernel.context.platform.version_number < 1.2
75
- ptr = FFI::MemoryPointer.new( :cl_kernel_arg_type_qualifier )
75
+ ptr = FFI::MemoryPointer::new( :cl_kernel_arg_type_qualifier )
76
76
  error = OpenCL.clGetKernelArgInfo(@kernel, @index, OpenCL::Kernel::Arg::TYPE_QUALIFIER, ptr.size, ptr, nil)
77
77
  OpenCL.error_check(error)
78
78
  return OpenCL::Kernel::Arg::TypeQualifier::new( ptr.read_cl_kernel_arg_type_qualifier )
@@ -81,10 +81,10 @@ module OpenCL
81
81
  # Returns a String corresponding to the Arg type name
82
82
  def type_name
83
83
  OpenCL.error_check(OpenCL::INVALID_OPERATION) if @kernel.context.platform.version_number < 1.2
84
- ptr1 = FFI::MemoryPointer.new( :size_t, 1)
84
+ ptr1 = FFI::MemoryPointer::new( :size_t, 1)
85
85
  error = OpenCL.clGetKernelArgInfo(@kernel, @index, OpenCL::Kernel::Arg::TYPE_NAME, 0, nil, ptr1)
86
86
  OpenCL.error_check(error)
87
- ptr2 = FFI::MemoryPointer.new( ptr1.read_size_t )
87
+ ptr2 = FFI::MemoryPointer::new( ptr1.read_size_t )
88
88
  error = OpenCL.clGetKernelArgInfo(@kernel, @index, OpenCL::Kernel::Arg::TYPE_NAME, ptr1.read_size_t, ptr2, nil)
89
89
  OpenCL.error_check(error)
90
90
  return ptr2.read_string
@@ -93,10 +93,10 @@ module OpenCL
93
93
  # Returns a String corresponding to the Arg name
94
94
  def name
95
95
  OpenCL.error_check(OpenCL::INVALID_OPERATION) if @kernel.context.platform.version_number < 1.2
96
- ptr1 = FFI::MemoryPointer.new( :size_t, 1)
96
+ ptr1 = FFI::MemoryPointer::new( :size_t, 1)
97
97
  error = OpenCL.clGetKernelArgInfo(@kernel, @index, OpenCL::Kernel::Arg::NAME, 0, nil, ptr1)
98
98
  OpenCL.error_check(error)
99
- ptr2 = FFI::MemoryPointer.new( ptr1.read_size_t )
99
+ ptr2 = FFI::MemoryPointer::new( ptr1.read_size_t )
100
100
  error = OpenCL.clGetKernelArgInfo(@kernel, @index, OpenCL::Kernel::Arg::NAME, ptr1.read_size_t, ptr2, nil)
101
101
  OpenCL.error_check(error)
102
102
  return ptr2.read_string
@@ -143,7 +143,7 @@ module OpenCL
143
143
 
144
144
  # Returns the Context the Kernel is associated with
145
145
  def context
146
- ptr = FFI::MemoryPointer.new( Context )
146
+ ptr = FFI::MemoryPointer::new( Context )
147
147
  error = OpenCL.clGetKernelInfo(self, Kernel::CONTEXT, Context.size, ptr, nil)
148
148
  OpenCL.error_check(error)
149
149
  return OpenCL::Context::new( ptr.read_pointer )
@@ -151,7 +151,7 @@ module OpenCL
151
151
 
152
152
  # Returns the Program the Kernel was created from
153
153
  def program
154
- ptr = FFI::MemoryPointer.new( Program )
154
+ ptr = FFI::MemoryPointer::new( Program )
155
155
  error = OpenCL.clGetKernelInfo(self, Kernel::PROGRAM, Program.size, ptr, nil)
156
156
  OpenCL.error_check(error)
157
157
  return OpenCL::Program::new(ptr.read_pointer)
@@ -23,7 +23,7 @@ module OpenCL
23
23
 
24
24
  # Returns the Context associated to the Mem
25
25
  def context
26
- ptr = FFI::MemoryPointer.new( Context )
26
+ ptr = FFI::MemoryPointer::new( Context )
27
27
  error = OpenCL.clGetMemObjectInfo(self, Mem::CONTEXT, Context.size, ptr, nil)
28
28
  OpenCL.error_check(error)
29
29
  return OpenCL::Context::new( ptr.read_pointer )
@@ -36,7 +36,7 @@ module OpenCL
36
36
 
37
37
  # Returns the Buffer this Buffer was created from using create_sub_buffer
38
38
  def associated_memobject
39
- ptr = FFI::MemoryPointer.new( Mem )
39
+ ptr = FFI::MemoryPointer::new( Mem )
40
40
  error = OpenCL.clGetMemObjectInfo(self, Mem::ASSOCIATED_MEMOBJECT, Mem.size, ptr, nil)
41
41
  OpenCL.error_check(error)
42
42
  return nil if ptr.read_pointer.null?
@@ -96,7 +96,7 @@ module OpenCL
96
96
 
97
97
  # Returns the texture_target argument specified in create_from_GL_texture for Mem
98
98
  def GL_texture_target
99
- param_value = MemoryPointer.new( :cl_GLenum )
99
+ param_value = MemoryPointer::new( :cl_GLenum )
100
100
  error = OpenCL.clGetGLTextureInfo( self, OpenCL::GL_TEXTURE_TARGET, param_value.size, param_value, nil )
101
101
  OpenCL.error_check(error)
102
102
  return param_value.read_cl_GLenum
@@ -104,7 +104,7 @@ module OpenCL
104
104
 
105
105
  # Returns the miplevel argument specified in create_from_GL_texture for Mem
106
106
  def GL_mimap_level
107
- param_value = MemoryPointer.new( :cl_GLint )
107
+ param_value = MemoryPointer::new( :cl_GLint )
108
108
  error = OpenCL.clGetGLTextureInfo( self, OpenCL::GL_MIPMAP_LEVEL, param_value.size, param_value, nil )
109
109
  OpenCL.error_check(error)
110
110
  return param_value.read_cl_GLint
@@ -112,15 +112,15 @@ module OpenCL
112
112
 
113
113
  # Returns the type of the GL object associated with Mem
114
114
  def GL_object_type
115
- param_value = MemoryPointer.new( :cl_gl_object_type )
115
+ param_value = MemoryPointer::new( :cl_gl_object_type )
116
116
  error = OpenCL.clGetGLObjectInfo( self, param_value, nil )
117
117
  OpenCL.error_check(error)
118
- return OpenCL::GLObjectType(param_value.read_cl_gl_object_type)
118
+ return OpenCL::GLObjectType::new(param_value.read_cl_gl_object_type)
119
119
  end
120
120
 
121
121
  # Returns the name of the GL object associated with Mem
122
122
  def GL_object_name
123
- param_value = MemoryPointer.new( :cl_GLuint )
123
+ param_value = MemoryPointer::new( :cl_GLuint )
124
124
  error = OpenCL.clGetGLObjectInfo( self, nil, param_value )
125
125
  OpenCL.error_check(error)
126
126
  return param_value.read_cl_GLuint
@@ -1,5 +1,24 @@
1
1
  module OpenCL
2
2
 
3
+ # Unloads a Platform compiler
4
+ #
5
+ # ==== Attributes
6
+ #
7
+ # * +platform+ - the Platform to have it's compiler unloaded
8
+ def self.unload_platform_compiler(platform)
9
+ OpenCL.error_check(OpenCL::INVALID_OPERATION) if self.version_number < 1.2
10
+ error = OpenCL.clUnloadPlatformCompiler( platform )
11
+ OpenCL.error_check(error)
12
+ return platform
13
+ end
14
+
15
+ # Unloads the compiler
16
+ def self.unload_compiler
17
+ error = OpenCL.clUnloadCompiler()
18
+ OpenCL.error_check(error)
19
+ return nil
20
+ end
21
+
3
22
  # Returns an FFI::Function corresponding to an extension function
4
23
  #
5
24
  # ==== Attributes
@@ -15,20 +34,6 @@ module OpenCL
15
34
  return FFI::Function::new(return_type, param_types, ptr, options)
16
35
  end
17
36
 
18
- # Returns an Array of Platforms containing the available OpenCL platforms
19
- def self.get_platforms
20
- ptr1 = FFI::MemoryPointer.new(:cl_uint , 1)
21
-
22
- error = OpenCL::clGetPlatformIDs(0, nil, ptr1)
23
- OpenCL.error_check(error)
24
- ptr2 = FFI::MemoryPointer.new(:pointer, ptr1.read_uint)
25
- error = OpenCL::clGetPlatformIDs(ptr1.read_uint(), ptr2, nil)
26
- OpenCL.error_check(error)
27
- return ptr2.get_array_of_pointer(0,ptr1.read_uint()).collect { |platform_ptr|
28
- OpenCL::Platform.new(platform_ptr)
29
- }
30
- end
31
-
32
37
  # Returns an FFI::Function corresponding to an extension function for the Platform
33
38
  #
34
39
  # ==== Attributes
@@ -46,6 +51,20 @@ module OpenCL
46
51
  return FFI::Function::new(return_type, param_types, ptr, options)
47
52
  end
48
53
 
54
+ # Returns an Array of Platforms containing the available OpenCL platforms
55
+ def self.get_platforms
56
+ ptr1 = FFI::MemoryPointer::new(:cl_uint , 1)
57
+
58
+ error = OpenCL::clGetPlatformIDs(0, nil, ptr1)
59
+ OpenCL.error_check(error)
60
+ ptr2 = FFI::MemoryPointer::new(:pointer, ptr1.read_uint)
61
+ error = OpenCL::clGetPlatformIDs(ptr1.read_uint(), ptr2, nil)
62
+ OpenCL.error_check(error)
63
+ return ptr2.get_array_of_pointer(0,ptr1.read_uint()).collect { |platform_ptr|
64
+ OpenCL::Platform::new(platform_ptr, false)
65
+ }
66
+ end
67
+
49
68
 
50
69
  # Maps the cl_platform_id object of OpenCL
51
70
  class Platform
@@ -56,14 +75,14 @@ module OpenCL
56
75
  # Returns an Array of Device corresponding to the available devices on the Platform
57
76
  # The type of the desired devices can be specified
58
77
  def devices(type = OpenCL::Device::Type::ALL)
59
- ptr1 = FFI::MemoryPointer.new(:cl_uint , 1)
78
+ ptr1 = FFI::MemoryPointer::new(:cl_uint , 1)
60
79
  error = OpenCL::clGetDeviceIDs(self, type, 0, nil, ptr1)
61
80
  OpenCL.error_check(error)
62
- ptr2 = FFI::MemoryPointer.new(:pointer, ptr1.read_uint)
81
+ ptr2 = FFI::MemoryPointer::new(:pointer, ptr1.read_uint)
63
82
  error = OpenCL::clGetDeviceIDs(self, type, ptr1.read_uint(), ptr2, nil)
64
83
  OpenCL.error_check(error)
65
84
  return ptr2.get_array_of_pointer(0, ptr1.read_uint()).collect { |device_ptr|
66
- OpenCL::Device.new(device_ptr)
85
+ OpenCL::Device::new(device_ptr, false)
67
86
  }
68
87
  end
69
88
 
@@ -74,6 +93,11 @@ module OpenCL
74
93
  return n.first.first.to_f
75
94
  end
76
95
 
96
+ # Unloads the Platform compiler
97
+ def unload_compiler
98
+ return OpenCL.unload_platform_compiler(self)
99
+ end
100
+
77
101
  # Returns an FFI::Function corresponding to an extension function for a Platform
78
102
  #
79
103
  # ==== Attributes