Packages
Tensor library for Gleam/BEAM with a pure Gleam API, zero-copy views, and optional native acceleration
Current section
Files
Jump to
Current section
Files
src/viva_tensor@layout.erl
-module(viva_tensor@layout).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/viva_tensor/layout.gleam").
-export_type([tensor_storage/0, tensor_device/0, tensor_dtype/0, tensor_memory_layout/0, tensor_layout/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Tensor layout metadata.\n"
"\n"
" A tensor is not just its values. To interpret tensor storage correctly, every\n"
" backend needs the same small contract: shape, strides, offset, dtype, device,\n"
" and storage representation.\n"
).
-type tensor_storage() :: dense_storage | strided_storage | native_storage.
-type tensor_device() :: beam_cpu | native_cpu | {cuda_device, integer()}.
-type tensor_dtype() :: float64 |
float32 |
float16 |
b_float16 |
float8_e4_m3 |
int8 |
int4 |
sparse_float16.
-type tensor_memory_layout() :: row_major |
column_major |
strided_layout |
packed_fp8_layout |
packed_sparse24_layout.
-type tensor_layout() :: {tensor_layout,
tensor_storage(),
tensor_device(),
tensor_dtype(),
list(integer()),
list(integer()),
integer(),
integer(),
integer(),
boolean()}.