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>>}}