test_shm_tensor.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import unittest
  2. import multiprocessing.shared_memory as shared_memory
  3. from tinygrad.helpers import CI
  4. from tinygrad.tensor import Tensor, Device
  5. import numpy as np
  6. class TestRawShmBuffer(unittest.TestCase):
  7. def test_e2e(self):
  8. t = Tensor.randn(2, 2, 2).realize()
  9. # copy to shm
  10. shm_name = (s := shared_memory.SharedMemory(create=True, size=t.nbytes())).name
  11. s.close()
  12. t_shm = t.to(f"disk:shm:{shm_name}").realize()
  13. # copy from shm
  14. t2 = t_shm.to(Device.DEFAULT).realize()
  15. assert np.allclose(t.numpy(), t2.numpy())
  16. s.unlink()
  17. @unittest.skipIf(CI, "CI doesn't like big shared memory")
  18. def test_e2e_big(self):
  19. t = Tensor.randn(2048, 2048, 8).realize()
  20. # copy to shm
  21. shm_name = (s := shared_memory.SharedMemory(create=True, size=t.nbytes())).name
  22. s.close()
  23. t_shm = t.to(f"disk:shm:{shm_name}").realize()
  24. # copy from shm
  25. t2 = t_shm.to(Device.DEFAULT).realize()
  26. assert np.allclose(t.numpy(), t2.numpy())
  27. s.unlink()
  28. if __name__ == "__main__":
  29. unittest.main()