Packages

  • package root
    Definition Classes
    root
  • package lamp

    Lamp provides utilities to build state of the art machine learning applications

    Lamp provides utilities to build state of the art machine learning applications

    Overview

    Notable types and packages:

    • lamp.STen is a memory managed wrapper around aten.ATen, an off the heap, native n-dimensionl array backed by libtorch.
    • lamp.autograd implements reverse mode automatic differentiation.
    • lamp.nn contains neural network building blocks, see e.g. lamp.nn.Linear.
    • lamp.data.IOLoops implements a training loop and other data related abstractions.
    • lamp.knn implements k-nearest neighbor search on the CPU and GPU
    • lamp.umap.Umap implements the UMAP dimension reduction algorithm
    • lamp.onnx implements serialization of computation graphs into ONNX format
    • lamp.io contains CSV and NPY readers
    How to get data into lamp

    Use one of the file readers in lamp.io or one of the factories in lamp.STen$.

    How to define a custom neural network layer

    See the documentation on lamp.nn.GenericModule

    How to compose neural network layers

    See the documentation on lamp.nn

    How to train models

    See the training loops in lamp.data.IOLoops

    Definition Classes
    root
  • package data
    Definition Classes
    lamp
  • CPU
  • CudaDevice
  • Device
  • DoublePrecision
  • FloatingPointPrecision
  • HalfPrecision
  • Movable
  • STen
  • STenOptions
  • Scope
  • SinglePrecision
  • TensorHelpers

final class Scope extends AnyRef

Faciliates memory management of off-heap data structures.

Tracks allocations of aten.Tensor and aten.TensorOption instances.

aten.Tensor and aten.TensorOption instances are not freed up by the garbage collector. Lamp implements zoned memory management around these object. The managed counterpart of aten.Tensor is lamp.STen, while for aten.TensorOption it is lamp.STenOptions.

One can only create a lamp.STen instance with a lamp.Scope in implicit scope.

Create new scopes with lamp.Scope.root, lamp.Scope.apply or lamp.Scope.leak.

Examples

// Scope.root returns Unit
Scope.root { implicit scope =>
    val sum = Scope { implicit scope =>
    // Intermediate values allocated in this block (`ident` and `ones`) are freed when
    // this block returns
    // The return value (`ident + ones`) of this block is moved to the outer scope
    val ident = STen.eye(3, STenOptions.d)
    val ones = STen.ones(List(3, 3), STenOptions.d)
    ident + ones
    }
    assert(sum.toMat == mat.ones(3, 3) + mat.ident(3))
    // `sum` is freed once this block exits
}
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Scope
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. type ResourceType = Either[Tensor, TensorOptions]

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def apply(resource: TensorOptions): TensorOptions

    Adds a resource to the managed resources, then returns it unchanged.

    Adds a resource to the managed resources, then returns it unchanged.

    The resources will be released when this Scope goes out of scope or otherwise releases.

  5. def apply(resource: Tensor): Tensor

    Adds a resource to the managed resources, then returns it unchanged.

    Adds a resource to the managed resources, then returns it unchanged.

    The resources will be released when this Scope goes out of scope or otherwise releases.

  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  8. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  9. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  11. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  13. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  15. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  17. def register(resource: TensorOptions): Unit

    Adds a resource to the managed resources.

    Adds a resource to the managed resources.

    The resources will be released when this Scope goes out of scope or otherwise releases.

  18. def register(resource: Tensor): Unit

    Adds a resource to the managed resources.

    Adds a resource to the managed resources.

    The resources will be released when this Scope goes out of scope or otherwise releases.

  19. def release(): Unit

    Immediately release the resources managed by this Scope

  20. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  21. def toString(): String
    Definition Classes
    AnyRef → Any
  22. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  23. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  24. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped