Sha256: c6097e833bdee7e4bbfea250207a6bd9c0098ef67eef0657641cb07c4dd53aee
Contents?: true
Size: 1.04 KB
Versions: 2
Compression:
Stored size: 1.04 KB
Contents
module TensorStream # Buffer used by the OpenCL evaluator class OpenCLBuffer < Buffer include ArrayOpsHelper attr_accessor :shape, :buffer, :cl_buffer, :op 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 def total_elements shape.reduce(:*) || 1 end def empty_value? @shape == [0] end def to_ruby return [] if buffer.empty? if dirty op.command_queue.enqueue_read_buffer(cl_buffer, buffer, event_wait_list: [op].compact) op.command_queue.finish self.dirty = false end if shape.empty? return buffer.to_s if data_type == :string return buffer[0] != 0 if data_type == :boolean return buffer[0] end result = buffer.reshape(*shape.map(&:to_i).reverse).to_a data_type == :boolean ? process_function_op(result, ->(a, _b) { a != 0 }) : result end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
tensor_stream-opencl-0.2.1 | lib/tensor_stream/opencl/opencl_buffer.rb |
tensor_stream-opencl-0.2.0 | lib/tensor_stream/opencl/opencl_buffer.rb |