opencl_ruby_ffi 0.96 → 0.97
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.
@@ -898,11 +898,17 @@ module OpenCL
|
|
898
898
|
#
|
899
899
|
# the Event associated with the command
|
900
900
|
def self.enqueue_task( command_queue, kernel, options = {} )
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
901
|
+
if queue.context.platform.version_number < 2.0 then
|
902
|
+
num_events, events = OpenCL.get_event_wait_list( options )
|
903
|
+
event = FFI::MemoryPointer::new( OpenCL::Event )
|
904
|
+
error = OpenCL.clEnqueueTask( command_queue, kernel, num_events, events, event )
|
905
|
+
OpenCL.error_check(error)
|
906
|
+
return OpenCL::Event::new(event.read_pointer, false)
|
907
|
+
else
|
908
|
+
opts = options.dup
|
909
|
+
opts[:local_work_size] = [1]
|
910
|
+
return OpenCL.enqueue_NDrange_kernel( command_queue, kernel, [1], opts )
|
911
|
+
end
|
906
912
|
end
|
907
913
|
|
908
914
|
# Enqueues a kernel as a NDrange
|
@@ -377,6 +377,29 @@ module OpenCL
|
|
377
377
|
return OpenCL.create_pipe( self, pipe_packet_size, pipe_max_packets, opts )
|
378
378
|
end
|
379
379
|
|
380
|
+
# Creates an SVMPointer pointing to an SVM area of memory in the Context
|
381
|
+
#
|
382
|
+
# ==== Attributes
|
383
|
+
#
|
384
|
+
# * +size+ - the size of the mmemory area to allocate
|
385
|
+
# * +options+ - a hash containing named options
|
386
|
+
#
|
387
|
+
# ==== Options
|
388
|
+
#
|
389
|
+
# * +:alignment+ - imposes the minimum alignment in byte
|
390
|
+
def svm_alloc(size, options = {})
|
391
|
+
return OpenCL.svm_alloc( self, size, options)
|
392
|
+
end
|
393
|
+
|
394
|
+
# Frees an SVMPointer
|
395
|
+
#
|
396
|
+
# ==== Attributes
|
397
|
+
#
|
398
|
+
# * +svm_pointer+ - the SVMPointer to deallocate
|
399
|
+
def self.svm_free(svm_pointer)
|
400
|
+
return OpenCL.svm_free(self, svm_pointer)
|
401
|
+
end
|
402
|
+
|
380
403
|
end
|
381
404
|
|
382
405
|
end
|
data/lib/opencl_ruby_ffi/Pipe.rb
CHANGED
@@ -43,7 +43,7 @@ module OpenCL
|
|
43
43
|
# * +return_type+ - the type of data returned by the function
|
44
44
|
# * +param_types+ - an Array of types, corresponding to the parameters type
|
45
45
|
# * +options+ - if given, a hash of named options that will be given to FFI::Function::new. See FFI doc for details.
|
46
|
-
def get_extension_function_for_platform( platform, name, return_type, param_types, options = {} )
|
46
|
+
def self.get_extension_function_for_platform( platform, name, return_type, param_types, options = {} )
|
47
47
|
OpenCL.error_check(OpenCL::INVALID_OPERATION) if self.version_number < 1.2
|
48
48
|
name_p = FFI::MemoryPointer.from_string(name)
|
49
49
|
ptr = OpenCL.clGetExtensionFunctionAddressForPlatform( platform, name_p )
|
data/lib/opencl_ruby_ffi/SVM.rb
CHANGED
@@ -3,21 +3,36 @@ module OpenCL
|
|
3
3
|
# maps the SVM pointer type
|
4
4
|
class SVMPointer < FFI::Pointer
|
5
5
|
|
6
|
+
# create a new SVMPointer from its address and the context it pertains to
|
6
7
|
def initialize( address, context )
|
7
8
|
super( address )
|
8
9
|
@context = context
|
9
10
|
end
|
10
11
|
|
12
|
+
# creates a new SVMPointer relative to an existing one from an offset
|
11
13
|
def +( offset )
|
12
14
|
return OpenCL::SVMPointer::new( self.address + offset, @context )
|
13
15
|
end
|
14
16
|
|
17
|
+
# frees the SVMPointer (must not be called on an SVMPointer obtained from an offset)
|
15
18
|
def free
|
16
19
|
return OpenCL::svm_free( @context, self )
|
17
20
|
end
|
18
21
|
|
19
22
|
end
|
20
23
|
|
24
|
+
|
25
|
+
# Creates an SVMPointer pointing to an SVM area of memory
|
26
|
+
#
|
27
|
+
# ==== Attributes
|
28
|
+
#
|
29
|
+
# * +context+ - the Context in which to allocate the memory
|
30
|
+
# * +size+ - the size of the mmemory area to allocate
|
31
|
+
# * +options+ - a hash containing named options
|
32
|
+
#
|
33
|
+
# ==== Options
|
34
|
+
#
|
35
|
+
# * +:alignment+ - imposes the minimum alignment in byte
|
21
36
|
def self.svm_alloc(context, size, options = {})
|
22
37
|
OpenCL.error_check(OpenCL::INVALID_OPERATION) if context.platform.version_number < 2.0
|
23
38
|
flags = OpenCL::get_flags(options)
|
@@ -28,6 +43,12 @@ module OpenCL
|
|
28
43
|
return OpenCL::SVMPointer::new( ptr, context )
|
29
44
|
end
|
30
45
|
|
46
|
+
# Frees an SVMPointer
|
47
|
+
#
|
48
|
+
# ==== Attributes
|
49
|
+
#
|
50
|
+
# * +context+ - the Context in which to deallocate the memory
|
51
|
+
# * +svm_pointer+ - the SVMPointer to deallocate
|
31
52
|
def self.svm_free(context, svm_pointer)
|
32
53
|
OpenCL.error_check(OpenCL::INVALID_OPERATION) if context.platform.version_number < 2.0
|
33
54
|
return OpenCL.clSVMFree( context, svm_pointer )
|
@@ -38,6 +59,7 @@ module OpenCL
|
|
38
59
|
OpenCL.error_check(OpenCL::INVALID_OPERATION) if kernel.context.platform.version_number < 2.0
|
39
60
|
error = OpenCL.clSetKernelArgSVMPointer( kernel, index, val )
|
40
61
|
OpenCL.error_check(error)
|
62
|
+
return kernel
|
41
63
|
end
|
42
64
|
|
43
65
|
# Enqueues a command that frees SVMPointers (or Pointers using a callback)
|
data/opencl_ruby_ffi.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opencl_ruby_ffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.97'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-06-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: narray
|