import numpy as np import platform from numba import cuda from numba.cuda.testing import unittest, ContextResettingTestCase class TestPinned(ContextResettingTestCase): def _run_copies(self, A): A0 = np.copy(A) stream = cuda.stream() ptr = cuda.to_device(A, copy=False, stream=stream) ptr.copy_to_device(A, stream=stream) ptr.copy_to_host(A, stream=stream) stream.synchronize() self.assertTrue(np.allclose(A, A0)) def test_pinned(self): machine = platform.machine() if machine.startswith('arm') or machine.startswith('aarch64'): count = 262144 # 2MB else: count = 2097152 # 16MB A = np.arange(count) with cuda.pinned(A): self._run_copies(A) def test_unpinned(self): A = np.arange(2 * 1024 * 1024) # 16 MB self._run_copies(A) if __name__ == '__main__': unittest.main()