Files
tinygrad/test/unit/test_winograd.py
George Hotz d59e6e7a37 move more tests to test/null, split some existing ones (#14512)
* 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
2026-02-03 20:20:20 +08:00

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)