Skip to content

class CPU(T)
inherits Num::Backend::Storage #

Constructors#

.new(shape : Array(Int), order : Num::OrderType, value : T) #

Initialize a CPU storage from an initial capacity and an initial value, which will fill the buffer

Arguments#
Examples#
CPU.new([10, 10], 3.4)
View source

.new(shape : Array(Int), strides : Array(Int), value : T) #

Initialize a CPU storage from an initial capacity and an initial value, which will fill the buffer

Arguments#
Examples#
CPU.new([10, 10], 3.4)
View source

.new(hostptr : Pointer(T), shape : Array(Int), strides : Array(Int)) #

Initialize a CPU storage from a hostptr and initial shape. The shape is not required for this storage type, but is needed by other implementations to ensure copy requirements have the right pointer size.

Arguments#
Examples#
a = Pointer(Int32).malloc(10)
s = CPU.new(a, [5, 2])
View source

.new(shape : Array(Int), order : Num::OrderType) #

Initialize a CPU storage from an initial capacity. The data will be filled with zeros

Arguments#
Examples#
CPU.new([2, 3, 4])
View source

.new(shape : Array(Int), strides : Array(Int)) #

Initialize a CPU storage from an initial capacity. The data will be filled with zeros

Arguments#
Examples#
CPU.new([2, 3, 4])
View source

Class methods#

.base(dtype : U.class) : CPU(U).class forall U #

Return a generic class of a specific generic type, to allow for explicit return types in functions that return a different storage type than the parent Tensor

Examples#
a = CPU(Float32).new([10])

# Cannot do
# a.class.new ...

a.class.base(Float64).new([10])
View source

Methods#

#data : Pointer(T) #

Raw Crystal pointer that holds a CPU(T)s data

View source

#to_hostptr : Pointer(T) #

Converts a CPU storage to a crystal pointer

Examples#
a = CPU(Int32).new([3, 3, 2])
a.to_hostptr
View source

#to_unsafe #

Returns the raw Crystal pointer associated with a CPU(T)

View source