mirror of
https://github.com/tinygrad/tinygrad.git
synced 2026-04-29 03:00:14 -04:00
* move more tests to test/null, split some existing ones * null work * null work * move more * fixes * move PIL * PIL in CLIP * don't move that
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
import unittest, sys
|
|
import numpy as np
|
|
from tinygrad import Tensor, GlobalCounters, Context, nn
|
|
from tinygrad.helpers import WINO
|
|
|
|
@unittest.skipIf(sys.platform.startswith("win"), "flaky on Windows")
|
|
class TestWinogradClose(unittest.TestCase):
|
|
def test_close(self):
|
|
inp = Tensor.rand(1, 16, 16, 16)
|
|
conv = nn.Conv2d(16, 16, 3)
|
|
conv(inp).realize() # warmup
|
|
GlobalCounters.reset()
|
|
print("non winograd")
|
|
with Context(WINO=0):
|
|
cmp = conv(inp).realize() # warmup
|
|
GlobalCounters.reset()
|
|
print("winograd")
|
|
with Context(WINO=1):
|
|
test = conv(inp).realize()
|
|
np.testing.assert_allclose(cmp.numpy(), test.numpy(), atol=1e-5)
|
|
|
|
@unittest.skipIf(sys.platform.startswith("win"), "flaky on Windows")
|
|
class TestWinograd(unittest.TestCase):
|
|
def setUp(self):
|
|
self.old = WINO.value
|
|
WINO.value = 1
|
|
def tearDown(self):
|
|
WINO.value = self.old
|
|
|
|
def test_padded_conv2d(self):
|
|
# tests padding order in winograd
|
|
x,w = Tensor.rand(1,3,11,28).realize(), Tensor.rand(4,3,3,3).realize()
|
|
with Context(WINO=0): expected = Tensor.conv2d(x,w,padding=1).realize()
|
|
with Context(WINO=1): result = Tensor.conv2d(x,w,padding=1).realize()
|
|
np.testing.assert_allclose(result.numpy(), expected.numpy(), atol=1e-4)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(verbosity=2)
|