-module(viva_tensor@native@sparse). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/viva_tensor/native/sparse.gleam"). -export([available/0, from_cuda16/1, shape/1, compression_ratio/1, matmul/5]). -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(false). -file("src/viva_tensor/native/sparse.gleam", 18). ?DOC(false). -spec available() -> boolean(). available() -> viva_tensor_zig:sparse_available(). -file("src/viva_tensor/native/sparse.gleam", 26). ?DOC(false). -spec from_cuda16(viva_tensor@core@ffi:cuda_tensor16_ref()) -> {ok, viva_tensor@core@ffi:sparse_tensor_ref()} | {error, binary()}. from_cuda16(Tensor) -> viva_tensor_zig:sparse_from_ct16(Tensor). -file("src/viva_tensor/native/sparse.gleam", 33). ?DOC(false). -spec shape(viva_tensor@core@ffi:sparse_tensor_ref()) -> {ok, list(integer())} | {error, binary()}. shape(Tensor) -> viva_tensor_zig:sparse_shape(Tensor). -file("src/viva_tensor/native/sparse.gleam", 38). ?DOC(false). -spec compression_ratio(viva_tensor@core@ffi:sparse_tensor_ref()) -> {ok, float()} | {error, binary()}. compression_ratio(Tensor) -> viva_tensor_zig:sparse_compression_ratio(Tensor). -file("src/viva_tensor/native/sparse.gleam", 50). ?DOC(false). -spec matmul( viva_tensor@core@ffi:sparse_tensor_ref(), viva_tensor@core@ffi:cuda_tensor16_ref(), integer(), integer(), integer() ) -> {ok, viva_tensor@core@ffi:cuda_tensor16_ref()} | {error, binary()}. matmul(A_sparse, B_dense, M, N, K) -> viva_tensor_zig:sparse_matmul(A_sparse, B_dense, M, N, K).