viva_tensor/pool
TensorPool - Distributed Tensor Computing via OTP
CONCEITO INOVADOR: GenServer + GPU
Em C/C++: você tem threads + mutex + condition vars (PESADELO) Em Gleam/OTP: GenServer gerencia estado, NIFs fazem GPU compute
Arquitetura:
[Request] -> [GenServer Pool] -> [Worker 1] -> [NIF GPU] -> cuBLAS/cuDNN -> [Worker 2] -> [NIF GPU] -> cuBLAS/cuDNN -> [Worker N] -> [NIF GPU] -> cuBLAS/cuDNN
Cada Worker é um processo BEAM leve (~2KB) que pode chamar NIFs de GPU. O GenServer faz load balancing automático. Se um Worker crashar, OTP reinicia (fault tolerance grátis!)
Types
Resultado de similarity search
pub type SearchResult {
SearchResult(index: Int, similarity: Float)
}
Constructors
-
SearchResult(index: Int, similarity: Float)
Values
pub fn benchmark_pool() -> Nil
pub fn parallel_map(
tensors: List(tensor.Tensor),
op: TensorOp,
) -> List(tensor.Tensor)
Processa uma lista de tensores em paralelo
Cada tensor é processado em um processo BEAM separado. Em C/C++ isso precisaria de pthread_create + mutex para cada tensor. Em Gleam: uma linha de código e zero data races!
pub fn parallel_sum(tensors: List(tensor.Tensor)) -> Float
Soma paralela de todos os tensores
pub fn similarity_search(
query: tensor.Tensor,
documents: List(tensor.Tensor),
chunk_size: Int,
) -> List(SearchResult)
Busca de similaridade em batch - O KILLER FEATURE!
Compara uma query contra milhares de documentos em paralelo. Retorna os resultados ordenados por similaridade (desc).
pub fn top_k_similar(
query: tensor.Tensor,
documents: List(tensor.Tensor),
k: Int,
) -> List(SearchResult)
Top-K similarity - retorna os K mais similares