Livt packages

Livt.ML

Version 1.6.1

Fixed-size quantized inference, tensor storage, attention, and transformer building blocks for Livt.

Published files (132)

tests/storage/IntegerTensorRamTest.lvt

namespace Livt.ML.Tests.Storage

using Livt.ML.Storage

/**
 * Exercises IntegerTensorRam with a shared fixture instance. Each scenario establishes the
 * inputs and state it needs.
 */
@Test
component IntegerTensorRamTest
{
	// Shared fixture instances, signals, and observation state.
	activations: Int16TensorRam2048
	accumulators: Int32TensorRam2048

	/**
	 * Creates the shared fixture instances (Int16TensorRam2048, Int32TensorRam2048). Tests
	 * initialize the state required by their scenario.
	 */
	new()
	{
		activations = new Int16TensorRam2048(512)
		accumulators = new Int32TensorRam2048(2048)
	}

	/**
	 * Checks that the component preserves signed values and logical bounds.
	 */
	@Test
	fn PreservesSignedValuesAndLogicalBounds()
	{
		activations.Write(0, -32768)
		activations.Write(1, -984)
		activations.Write(511, 32767)
		activations.Write(512, 123)
		assert activations.Read(0) == -32768
		assert activations.Read(1) == -984
		assert activations.Read(511) == 32767
		assert activations.Read(512) == 0

		accumulators.Write(0, -2147483647)
		accumulators.Write(1310, 381238)
		accumulators.Write(2047, 2147483647)
		assert accumulators.Read(0) == -2147483647
		assert accumulators.Read(1310) == 381238
		assert accumulators.Read(2047) == 2147483647
		assert accumulators.Read(-1) == 0
	}

	/**
	 * Checks that the component supports overwrite without tensor copies.
	 */
	@Test
	fn SupportsOverwriteWithoutTensorCopies()
	{
		activations.Write(64, 3914)
		assert activations.Read(64) == 3914
		activations.Write(64, -2423)
		assert activations.Read(64) == -2423

		accumulators.Write(256, 342466)
		assert accumulators.Read(256) == 342466
		accumulators.Write(256, 381238)
		assert accumulators.Read(256) == 381238
	}
}