beam-boot / tests /test_tensor_memory.py
StarAtNyte1's picture
Publish Beam Boot / Super Beam source
324ecd2 verified
Raw History Blame Contribute Delete
1.23 kB
import random
import unittest
import torch
from beamboot.tensor_memory import TensorMemory
class TensorMemoryTests(unittest.TestCase):
def test_updates_match_reference(self):
rng = random.Random(812)
mem = TensorMemory(max_writes=256)
reference = [0] * 16
for _ in range(256):
a, v = rng.randrange(16), rng.randrange(256)
mem.write(a, v)
reference[a] = v
self.assertEqual(mem.read_byte(a), v)
for a in range(16):
self.assertEqual(mem.read_byte(a), reference[a])
def test_window_loses_old_memory(self):
mem = TensorMemory(window=2)
mem.write(1, 42)
mem.write(2, 20)
mem.write(3, 30)
self.assertNotEqual(mem.read_byte(1), 42)
def test_write_limit_and_validation(self):
mem = TensorMemory(max_writes=1)
with self.assertRaises(ValueError): mem.write(16, 1)
mem.write(0, 255)
with self.assertRaises(ValueError): mem.write(0, 2)
def test_bfloat16_is_measured_not_assumed(self):
mem = TensorMemory(max_writes=4, dtype=torch.bfloat16)
mem.write(1, 11)
mem.write(1, 22)
self.assertEqual(mem.read_byte(1), 22)