DDP will share the parameters as explained in the docs 1.

Construction: The DDP constructor takes a reference to the local module, and broadcasts state_dict() from the process with rank 0 to all other processes in the group to make sure that all model replicas start from the exact same state. Then, each DDP process creates a local Reducer, which later will take care of the gradients synchronization during the backward pass.

I haven’t checked different workflows of loading the state_dict before and after the model wrapping in util. functions such as DDP, as I’m sticking to initialize the model first and then wrap it into these classes.
However, I guess it should work and you could verify it with a small script by checking the parameters on each rank.