@mrshenli thank you for your reply.
I am using the nccl backend actually.
Following line from the code above.
_init_process(rank=local_rank, world_size=world_size, backend="nccl")

Yes, I have measured the time taken over the entire iteration for both Distributed and DataParallel.
The forward pass takes similar time in both or is a bit faster in DistributedDataParallel (0.75 secs vs 0.8secs in DataParallel).
The overall iteration time in DataParallel is 1.75 secs vs 2.4 secs DistributedDataParallel, where similar time is spend in Dataloading (~0.09 secs).
p.s just saw a typo in the first line of my post. My scenario is Single-node multiple GPUs (not machines).