You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.2 KiB
32 lines
1.2 KiB
import unittest
|
|
from tinygrad import Tensor, Context, Device
|
|
from tinygrad.engine.realize import get_program
|
|
from tinygrad.renderer import Opt, OptOps
|
|
from tinygrad.uop.ops import KernelInfo
|
|
|
|
class TestLinearizerRewrite(unittest.TestCase):
|
|
def test_reduction(self):
|
|
t = Tensor.ones((64,64), device="NULL").contiguous().realize()
|
|
out = (t*2).sum(axis=1)
|
|
with Context(SPLIT_REDUCEOP=0, DEVECTORIZE=0):
|
|
si = out.schedule()[-1]
|
|
opts_to_apply = []
|
|
opts_to_apply.append(Opt(OptOps.UPCAST, 0, 4))
|
|
opts_to_apply.append(Opt(OptOps.UNROLL, 0, 4))
|
|
ast = si.ast.replace(arg=KernelInfo(opts_to_apply=tuple(opts_to_apply)))
|
|
prg = get_program(ast, Device["CPU"].renderer)
|
|
print(prg.src)
|
|
|
|
def test_arange(self):
|
|
out = Tensor.arange(32, device="NULL")
|
|
with Context(SPLIT_REDUCEOP=0, DEVECTORIZE=0):
|
|
si = out.schedule()[-1]
|
|
opts_to_apply = []
|
|
opts_to_apply.append(Opt(OptOps.UPCAST, 0, 4))
|
|
opts_to_apply.append(Opt(OptOps.UNROLL, 0, 4))
|
|
ast = si.ast.replace(arg=KernelInfo(opts_to_apply=tuple(opts_to_apply)))
|
|
prg = get_program(ast, Device["CPU"].renderer)
|
|
print(prg.src)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
|