carrot/tinygrad_repo/test/external/external_test_uops_graphing.py
FrogAi 659adb6457 openpilot v0.9.7 release
date: 2024-03-17T10:14:38
master commit: 7e9a909e0e57ecb31df4c87c5b9a06b1204fd034
2024-05-24 17:43:27 -07:00

45 lines
1.2 KiB
Python

#!/usr/bin/env python
import unittest
from tinygrad.tensor import Tensor
from tinygrad.codegen.linearizer import Linearizer
from tinygrad.renderer.opencl import OpenCLRenderer
from tinygrad.graph import graph_uops
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 = (a@b).lazydata.schedule()[-1]
lin = Linearizer(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 = a.sum().lazydata.schedule()[-1]
lin = Linearizer(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 = c(x).elu().lazydata.schedule()[-1]
lin = Linearizer(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()