ExBurn.BurnBridge (ex_burn v0.1.0)

Copy Markdown View Source

High-level bridge for Burn operations.

This module provides a direct API to Burn tensor operations, bypassing the Nx abstraction layer for cases where you need more control or want to avoid the overhead of Nx ↔ Burn conversions.

Usage

# Create tensors directly
t1 = ExBurn.BurnBridge.zeros([3, 3], :f32)
t2 = ExBurn.BurnBridge.ones([3, 3], :f32)

# Perform operations
t3 = ExBurn.BurnBridge.add(t1, t2)

# Convert to Nx when needed
{:ok, nx_tensor} = ExBurn.BurnBridge.to_nx(t3)

Summary

Functions

abs(tensor)

@spec abs(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

add(tensor1, tensor2)

buffer(data, shape, type \\ :f32)

@spec buffer(list(), [non_neg_integer()], atom()) :: ExCubecl.buffer_ref()

Creates a GPU buffer via ExCubecl from a list of values.

buffer!(data, shape, type \\ :f32)

Creates a GPU buffer via ExCubecl, raising on error.

buffer_shape(buf)

@spec buffer_shape(ExCubecl.buffer_ref()) :: [non_neg_integer()]

Returns the shape of an ExCubecl buffer.

buffer_size(buf)

@spec buffer_size(ExCubecl.buffer_ref()) :: non_neg_integer()

Returns the byte size of an ExCubecl buffer.

cross_entropy(tensor1, tensor2)

@spec cross_entropy(ExBurn.Tensor.t(), ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

div(tensor1, tensor2)

dropout(tensor, prob \\ 0.5, training \\ true)

@spec dropout(ExBurn.Tensor.t(), float(), boolean()) :: ExBurn.Tensor.t()

exp(tensor)

@spec exp(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

free(tensor)

@spec free(ExBurn.Tensor.t()) :: :ok

from_nx(tensor)

@spec from_nx(Nx.Tensor.t()) :: ExBurn.Tensor.t()

Creates a tensor from an Nx tensor.

layer_norm(tensor, dim \\ -1, eps \\ 1.0e-5)

@spec layer_norm(ExBurn.Tensor.t(), non_neg_integer(), float()) :: ExBurn.Tensor.t()

log(tensor)

@spec log(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

matmul(tensor1, tensor2)

mean(tensor, axes \\ nil)

@spec mean(ExBurn.Tensor.t(), [non_neg_integer()] | nil) :: ExBurn.Tensor.t()

mse(tensor1, tensor2)

mul(tensor1, tensor2)

neg(tensor)

@spec neg(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

ones(shape, type \\ :f32)

@spec ones([non_neg_integer()], ExBurn.Tensor.type()) :: ExBurn.Tensor.t()

Creates a tensor filled with ones.

rand(shape, type \\ :f32, low \\ 0.0, high \\ 1.0)

@spec rand([non_neg_integer()], ExBurn.Tensor.type(), float(), float()) ::
  ExBurn.Tensor.t()

Creates a random tensor with uniform distribution.

read_buffer(buf)

@spec read_buffer(ExCubecl.buffer_ref()) :: binary()

Reads data from an ExCubecl buffer.

relu(tensor)

@spec relu(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

reshape(tensor, shape)

@spec reshape(ExBurn.Tensor.t(), [non_neg_integer()]) :: ExBurn.Tensor.t()

sigmoid(tensor)

@spec sigmoid(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

softmax(tensor, dim \\ -1)

sqrt(tensor)

@spec sqrt(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

sub(tensor1, tensor2)

sum(tensor, axes \\ nil)

@spec sum(ExBurn.Tensor.t(), [non_neg_integer()] | nil) :: ExBurn.Tensor.t()

to_cpu(tensor)

@spec to_cpu(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

to_gpu(bt)

@spec to_gpu(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()

to_nx(bt)

@spec to_nx(ExBurn.Tensor.t()) :: Nx.Tensor.t()

Converts a Burn tensor to Nx.

transpose(tensor, dim0 \\ 0, dim1 \\ 1)

zeros(shape, type \\ :f32)

@spec zeros([non_neg_integer()], ExBurn.Tensor.type()) :: ExBurn.Tensor.t()

Creates a tensor filled with zeros.