src/tensor/allocation_spec.bend

bendtorch-core@0.1.0.0 · 22 lines · 3 definitions

1import Base
2import bendtorch-core@0.1.0.0/src/storage/main.bend as Storage
3import bendtorch-core@0.1.0.0/src/tensor/core.bend as Core
4import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
5import bendtorch-core@0.1.0.0/src/tensor/lifecycle.bend as Lifecycle
6
7def storage_length(result: Result<&2, &1, Storage.Error, Storage.Storage>) -> Maybe<&2, Nat>:
8  match result:
9    case Fail{error}:
10      None{}
11    case Done{storage}:
12      Some{Lifecycle.logical_length(storage)}
13
14def tensor_length(-shape: Shape.Shape, result: Result<&2, &1, Core.Error, Core.Tensor<shape>>) -> Maybe<&2, Nat>:
15  match result:
16    case Fail{error}:
17      None{}
18    case Done{tensor}:
19      Some{Core.logical_length(shape, tensor)}
20
21type TensorDone<-shape: Shape.Shape, -result: Result<&2, &1, Core.Error, Core.Tensor<shape>>> is Data:
22  TensorDone{-tensor: Core.Tensor<shape>, -same: {Done{tensor} == result : Result<&2, &1, Core.Error, Core.Tensor<shape>>}}