the past: 1) Reentrant backwards. 2) Activation checkpointing
        multiple times. 3) Activation checkpointing when model has
        unused parameters. 4) There are model parameters that are
        outside of forward function. 5) Potentially improve
        performance when there are unused parameters, as DDP will not
        search graph in each iteration to detect unused parameters
        when static_graph is set to be "True". To check whether you
        can set static_graph to be "True", one way is to check ddp
        logging data at the end of your previous model training, if
        "ddp_logging_data.get("can_set_static_graph") == True", mostly
        you can set "static_graph = True" as well.
    Example::
       >>> model_DDP = torch.nn.parallel.DistributedDataParallel(model)
       >>> # Training loop
       >>> ...
       >>> ddp_logging_data = model_DDP._get_ddp_logging_data()
       >>> static_graph = ddp_logging_data.get("can_set_static_graph")
