diff --git a/tests/cpp/test_id_model.cpp b/tests/cpp/test_id_model.cpp index a6da415a3c0..a59bdf4aafa 100644 --- a/tests/cpp/test_id_model.cpp +++ b/tests/cpp/test_id_model.cpp @@ -1458,91 +1458,6 @@ TEST_F(IdModelTest, LoopPromotion8) { s3_reference_map); } -// A repro that produces an invalid loop graph due to the compliment -// mapping. This is not currently supported. See -// https://github.com/NVIDIA/Fuser/issues/1759 -TEST_F(IdModelTest, ComplimentMappingCausingLoopSelfMapping) { - Fusion fusion; - FusionGuard fg(&fusion); - - auto tv0 = makeConcreteTensor({7}); - fusion.addInput(tv0); - auto tv1 = makeConcreteTensor({7, 8}); - fusion.addInput(tv1); - auto tv2 = makeConcreteTensor({7, 9}); - fusion.addInput(tv2); - - auto tv3 = broadcast(tv0, {false, true}); - auto tv4 = add(tv1, tv3); - auto tv5 = broadcast(tv4, {false, false, true}); - - auto tv6 = broadcast(tv0, {false, true}); - auto tv7 = add(tv2, tv6); - auto tv8 = broadcast(tv7, {false, true, false}); - - auto tv9 = add(tv5, tv8); - - auto tv10 = set(tv9); - auto tv11 = set(tv10); - fusion.addOutput(tv11); - - // Merge all domains except for tv10 and tv11 - for (auto tv : ir_utils::allTvs(&fusion)) { - if (tv == tv10 || tv == tv11) { - continue; - } - while (tv->nDims() > 1) { - tv->merge(0); - } - } - - // Fully inline all tensors up until tv10 - for (auto tv : ir_utils::allTvs(&fusion)) { - if (tv == tv9 || tv == tv10 || tv == tv11) { - continue; - } - tv->inlineAt(1); - } - - // Fully inline tv10 to tv11 without merging - tv10->inlineAt(-1); - - // Due to the compliment mapping, the leaf domains of tv10 and tv11 - // are loop mapped, which is invalid. - // - // Specifically, here are the tv10 and tv11 tensors: - // - // T10_l[ iS22{7}, iS23{8}, iS24{9} ] ca_pos( 3 ) - // root domain : (iS22{7}, iS23{8}, iS24{9}) - // contiguity: t t t - // leaf domain : (iS22{7}, iS23{8}, iS24{9}) - // T11_g[ iS25{7}, iS26{8}, iS27{9} ] produce_pos( 3 ) - // root domain : (iS25{7}, iS26{8}, iS27{9}) - // contiguity: t t t - // leaf domain : (iS25{7}, iS26{8}, iS27{9}) - // - // Here's the loop graph for tv10 and tv11: - // idg{22 23 24 25 26 27} - - // Due to the invalid mapping, building IdModel should fail for now - EXPECT_THAT( - [&]() { IdModel id_model(&fusion, true, false, false); }, - ::testing::ThrowsMessage(::testing::HasSubstr( - "Detected leaf domains are mapped in the loop graph"))); - - // Enable the below validation once the above problem is resolved. - // - // const ValGraph& loop_graph = id_model.idGraph(IdMappingMode::LOOP); - // - // These assertions should fail at this moment. - // ASSERT_NE( - // loop_graph.toGroup(tv10->axis(0)), loop_graph.toGroup(tv10->axis(1))); - // ASSERT_NE( - // loop_graph.toGroup(tv10->axis(0)), loop_graph.toGroup(tv10->axis(2))); - // ASSERT_NE( - // loop_graph.toGroup(tv10->axis(1)), loop_graph.toGroup(tv10->axis(2))); -} - namespace { bool iterDomainsAreMapped( const IdModel& id_model,