Class: TensorStream::OpenCLBuffer

Inherits:
Buffer
  • Object
show all
Includes:
ArrayOpsHelper
Defined in:
lib/tensor_stream/evaluator/opencl_buffer.rb

Instance Attribute Summary collapse

Attributes inherited from Buffer

#dirty, #name

Instance Method Summary collapse

Methods included from ArrayOpsHelper

#broadcast, #broadcast_dimensions, #get_rank, #process_function_op, #reduced_shape, #shape_diff, #slice_tensor, #tile_arr, #truncate, #vector_op

Constructor Details

#initialize(data_type:, shape:, buffer:, cl_buffer:, op: nil, name: nil) ⇒ OpenCLBuffer

Returns a new instance of OpenCLBuffer.



7
8
9
10
11
12
13
14
# File 'lib/tensor_stream/evaluator/opencl_buffer.rb', line 7

def initialize(data_type: , shape:, buffer:, cl_buffer:, op: nil, name: nil)
  @data_type = data_type
  @shape = shape
  @buffer = buffer
  @cl_buffer = cl_buffer
  @name = name
  @op = op
end

Instance Attribute Details

#bufferObject

Returns the value of attribute buffer.



5
6
7
# File 'lib/tensor_stream/evaluator/opencl_buffer.rb', line 5

def buffer
  @buffer
end

#cl_bufferObject

Returns the value of attribute cl_buffer.



5
6
7
# File 'lib/tensor_stream/evaluator/opencl_buffer.rb', line 5

def cl_buffer
  @cl_buffer
end

#data_typeObject

Returns the value of attribute data_type.



5
6
7
# File 'lib/tensor_stream/evaluator/opencl_buffer.rb', line 5

def data_type
  @data_type
end

#opObject

Returns the value of attribute op.



5
6
7
# File 'lib/tensor_stream/evaluator/opencl_buffer.rb', line 5

def op
  @op
end

#shapeObject

Returns the value of attribute shape.



5
6
7
# File 'lib/tensor_stream/evaluator/opencl_buffer.rb', line 5

def shape
  @shape
end

Instance Method Details

#to_rubyObject



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/tensor_stream/evaluator/opencl_buffer.rb', line 16

def to_ruby
  return [] if buffer.empty?
  if shape.empty?
    return buffer[0] != 0 if data_type == :boolean
    return buffer[0]
  end

  result = buffer.reshape(*shape.reverse).to_a
  if data_type == :boolean
    result = process_function_op(result, ->(a, _b) { a != 0 })
  end
  result
end