| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/env python
- import unittest
- from tinygrad.tensor import Tensor
- from tinygrad.codegen.kernel import Kernel
- from tinygrad.renderer.cstyle import OpenCLRenderer
- from tinygrad.engine.graph import graph_uops
- from tinygrad.engine.schedule import create_schedule
- from tinygrad.nn import Conv2d
- class TestUopsGraph(unittest.TestCase):
- def test_matmul(self):
- N = 1024
- a = Tensor.rand(N,N)
- b = Tensor.rand(N,N)
- si = create_schedule([(a@b).lazydata])[-1]
- lin = Kernel(si.ast)
- lin.hand_coded_optimizations()
- print(lin.colored_shape())
- uops = lin.linearize().uops
- graph_uops(uops)
- for u in uops: print(u)
- print(OpenCLRenderer("matmul", uops)[0])
- def test_reduce(self):
- a = Tensor.rand(1024*1024)
- si = create_schedule([a.sum().lazydata])[-1]
- lin = Kernel(si.ast)
- lin.hand_coded_optimizations()
- uops = lin.linearize().uops
- graph_uops(uops)
- #print(OpenCLRenderer("reduce", uops)[0])
- def test_conv(self):
- x = Tensor.rand(1,3,16,16)
- c = Conv2d(3, 16, (3,3))
- si = create_schedule([c(x).elu().lazydata])[-1]
- lin = Kernel(si.ast)
- lin.hand_coded_optimizations()
- uops = lin.linearize().uops
- graph_uops(uops)
- print(lin.colored_shape())
- print(OpenCLRenderer("conv", uops)[0])
- if __name__ == '__main__':
- unittest.main()
|