def fusion_with_transient_fpga(): A = np.random.rand(2, 20) expected = A * A * 2 sdfg = fusion_with_transient.to_sdfg() sdfg.apply_strict_transformations() assert sdfg.apply_transformations_repeated(MapFusion) >= 2 assert sdfg.apply_transformations_repeated(FPGATransformSDFG) == 1 sdfg(A=A) assert np.allclose(A, expected)
def test_fusion_with_transient_fpga(): A = np.random.rand(2, 20) expected = A * A * 2 sdfg = fusion_with_transient.to_sdfg() sdfg.coarsen_dataflow() assert sdfg.apply_transformations_repeated(MapFusion) >= 2 assert sdfg.apply_transformations_repeated(FPGATransformSDFG) == 1 sdfg(A=A) assert np.allclose(A, expected) return sdfg
def test_fusion_with_transient_fpga(): # To achieve II=1 with Xilinx, we need to decouple reads/writes from memory A = np.random.rand(2, 20) expected = A * A * 2 sdfg = fusion_with_transient.to_sdfg() sdfg.simplify() assert sdfg.apply_transformations_repeated(MapFusion) >= 2 assert sdfg.apply_transformations_repeated(FPGATransformSDFG) == 1 sdfg(A=A) assert np.allclose(A, expected) return sdfg
def test_fusion_with_transient_fpga_decoupled(): A = np.random.rand(2, 20) expected = A * A * 2 sdfg = fusion_with_transient.to_sdfg() sdfg.simplify() assert sdfg.apply_transformations_repeated(MapFusion) >= 2 assert sdfg.apply_transformations_repeated(FPGATransformSDFG) == 1 with set_temporary("compiler", "xilinx", "decouple_array_interfaces", value=True): sdfg(A=A) assert np.allclose(A, expected) return sdfg