MCPcopy Index your code
hub / github.com/apache/tvm / test_tile_layout

Function test_tile_layout

tests/python/tirx/test_layout.py:529–869  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

527
528
529def test_tile_layout():
530 def case1():
531 # (8):(1)x(8):(1) -> (64):(1)
532 inner = TileLayout(S[8:1])
533 outer = inner
534 layout_tile = TileLayout(S[64:1])
535 assert_structural_equal(layout_tile, inner.tile(outer, [8], [8]))
536
537 outer_res = inner.is_tile_inner(layout_tile, [64], [8])
538 assert outer_res is not None
539 assert_structural_equal(outer_res.canonicalize(), outer.canonicalize())
540
541 inner_res = outer.is_tile_outer(layout_tile, [64], [8])
542 assert inner_res is not None
543 assert_structural_equal(inner_res.canonicalize(), inner.canonicalize())
544
545 case1()
546
547 def case2():
548 # (8,8):(8,1)x(8,8):(8,1) -> (8,8,8,8):(512,8,64,1)
549 inner = TileLayout(S[(8, 8) : (8, 1)])
550 outer = inner
551 layout_tile = TileLayout(S[(8, 8, 8, 8) : (512, 8, 64, 1)])
552 assert_structural_equal(layout_tile, inner.tile(outer, [8, 8], [8, 8]))
553
554 outer_res = inner.is_tile_inner(layout_tile, [64, 64], [8, 8])
555 assert outer_res is not None
556 assert_structural_equal(outer_res.canonicalize(), outer.canonicalize())
557
558 inner_res = outer.is_tile_outer(layout_tile, [64, 64], [8, 8])
559 assert inner_res is not None
560 assert_structural_equal(inner_res.canonicalize(), inner.canonicalize())
561
562 case2()
563
564 def case3():
565 # (2,4):(1,2)x(8,8):(8,1) -> (8,2,8,4):(64,1,8,2)
566 inner = TileLayout(S[(2, 4) : (1, 2)])
567 outer = TileLayout(S[(8, 8) : (8, 1)])
568 layout_tile = TileLayout(S[(8, 2, 32) : (64, 1, 2)])
569 assert_structural_equal(layout_tile, inner.tile(outer, [8, 8], [2, 4]))
570
571 outer_res = inner.is_tile_inner(layout_tile, [16, 32], [2, 4])
572 assert outer_res is not None
573 assert_structural_equal(outer_res.canonicalize(), outer.canonicalize())
574
575 inner_res = outer.is_tile_outer(layout_tile, [16, 32], [8, 8])
576 assert inner_res is not None
577 assert_structural_equal(inner_res.canonicalize(), inner.canonicalize())
578
579 assert outer.is_tile_inner(layout_tile, [16, 32], [8, 8]) is None
580 assert inner.is_tile_outer(layout_tile, [16, 32], [2, 4]) is None
581
582 case3()
583
584 def case4():
585 # ((4,2),(2,4)):((16,8),(1,2))x(8,8):(8,1) -> (8,4,2,8,2,4):(512,16,8,64,1,2)
586 inner = TileLayout(S[(4, 2, 2, 4) : (16, 8, 1, 2)])

Callers

nothing calls this directly

Calls 15

case1Function · 0.85
case2Function · 0.85
case3Function · 0.85
case4Function · 0.85
case5_sharded1Function · 0.85
case6_sharded2Function · 0.85
case7_normalized4Function · 0.85
case8_normalized5Function · 0.85
case9_normalized6Function · 0.85
case10_normalized7Function · 0.85
case11_normalized8Function · 0.85
case12_normalized9Function · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…