IQ.Pilot Release Commit @ b6534c0
This commit is contained in:
42
artifacts/package_sources/tinygrad/test/device/test_ocl.py
Normal file
42
artifacts/package_sources/tinygrad/test/device/test_ocl.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
from tinygrad import Device
|
||||
from tinygrad.device import Buffer, TinyELF
|
||||
from tinygrad.dtype import dtypes
|
||||
from tinygrad.helpers import Target
|
||||
from tinygrad.runtime.ops_cl import CLDevice, CLAllocator, CLCompiler
|
||||
|
||||
@unittest.skipUnless(Device.DEFAULT == "CL", "Runs only on OpenCL")
|
||||
class TestCLCompileCache(unittest.TestCase):
|
||||
def test_compile_cached(self):
|
||||
device = Device[Device.DEFAULT]
|
||||
src = "__kernel void cached_test(__global int* a) { a[0] = 1; }"
|
||||
obj = TinyELF(src.encode(), "cached_test", Target("CL"), ())
|
||||
device.runtime(obj)
|
||||
with patch.object(CLCompiler, 'compile', side_effect=RuntimeError("compile should not be called on cache hit")):
|
||||
device.runtime(obj)
|
||||
|
||||
@unittest.skipUnless(Device.DEFAULT == "CL", "Runs only on OpenCL")
|
||||
class TestCLError(unittest.TestCase):
|
||||
@unittest.skip("allocates tons of memory")
|
||||
def test_oom(self):
|
||||
with self.assertRaises(RuntimeError) as err:
|
||||
allocator = CLAllocator(CLDevice())
|
||||
for i in range(1_000_000):
|
||||
allocator.alloc(1_000_000_000)
|
||||
assert str(err.exception) == "OpenCL Error -6: CL_OUT_OF_HOST_MEMORY"
|
||||
|
||||
def test_invalid_kernel_name(self):
|
||||
device = Device[Device.DEFAULT]
|
||||
with self.assertRaises(RuntimeError) as err:
|
||||
device.runtime(TinyELF(b"__kernel void test(__global int* a) { a[0] = 1; }", "", Target("CL"), ()))
|
||||
assert str(err.exception) == "OpenCL Error -46: CL_INVALID_KERNEL_NAME"
|
||||
|
||||
def test_unaligned_copy(self):
|
||||
data = list(range(65))
|
||||
unaligned = memoryview(bytearray(data))[1:]
|
||||
buffer = Buffer("CL", 64, dtypes.uint8).allocate()
|
||||
buffer.copy_from(Buffer("PYTHON", 64, dtypes.uint8, opaque=unaligned))
|
||||
result = memoryview(bytearray(len(data) - 1))
|
||||
result[:] = buffer.as_memoryview()
|
||||
assert unaligned == result, "Unaligned data copied in must be equal to data copied out."
|
||||
Reference in New Issue
Block a user