@@ -459,6 +459,47 @@ def test_dtensor_opinfo(self, op: OpInfo, executor):
459459 assert tested_sample_count > 0 , f"test_dtensor_opinfo:No samples tested for { op .name } with { executor } executor"
460460
461461
462+ @common_utils .parametrize ("executor" , tuple (executors_map .keys ()))
463+ def test_use_dtensor_execute_flag_with_dtensor (self , executor ):
464+ """Test that use_dtensor_execute flag is set to True for DTensor inputs."""
465+ import thunder .examine as examine
466+
467+ num_devices = self .world_size
468+ mesh = DeviceMesh ("cuda" , list (range (num_devices )))
469+ dim_size = 16
470+
471+ in_dtensor = distribute_tensor (torch .randn (dim_size , dim_size , requires_grad = True ), mesh , [Shard (0 )])
472+ w_dtensor = distribute_tensor (torch .randn (dim_size , dim_size , requires_grad = True ), mesh , [Shard (0 )])
473+
474+ def fn (x , w ):
475+ return torch .mul (x , w )
476+
477+ tmodel = thunder .jit (fn , executors = executors_map [executor ].executors_list ())
478+ result = tmodel (in_dtensor , w_dtensor )
479+
480+ traces = thunder .last_traces (tmodel )
481+ extrace = traces [- 1 ]
482+ fusions = examine .get_fusion_symbols (extrace )
483+
484+ # Verify there is at least one fusion
485+ assert len (fusions ) > 0
486+
487+ # Check that use_dtensor_execute is True for DTensor inputs
488+ for fusion_bsym in fusions :
489+ _ , call_ctx , _ = fusion_bsym .gather_ctxs ()
490+ fusion_name = fusion_bsym .sym .name
491+ fdw = call_ctx .get (fusion_name )
492+ assert fdw is not None , f"FusionDefinitionWrapper not found for { fusion_name } "
493+ assert hasattr (
494+ fdw , "use_dtensor_execute"
495+ ), "FusionDefinitionWrapper should have use_dtensor_execute attribute"
496+ assert fdw .use_dtensor_execute is True , "use_dtensor_execute should be True for DTensor inputs"
497+
498+ # Verify the result is correct
499+ expected = torch .mul (in_dtensor , w_dtensor )
500+ torch .testing .assert_close (result , expected )
501+
502+
462503common_utils .instantiate_parametrized_tests (DTensorTest )
463504
464505if __name__ == "__main__" :
0 commit comments