in gossip/distributed.py [0:0]
def _sync_params(self):
""" Synchronize parameters across devices (intra-node) """
if len(self.device_ids) <= 1:
return
# intra-node parameter sync
params = [p.data for p in self.module.parameters()]
result = broadcast_coalesced(params, self.device_ids,
self.broadcast_bucket_size)
for tensors, module in zip(result[1:], self._module_copies[1:]):
for tensor, param in zip(tensors, module.parameters()):
param.data.set_(tensor)
# intra-node buffer sync
buffers = [b.data for b in self.module.buffers()]
if len(buffers) > 0:
result = broadcast_coalesced(buffers, self.device_ids,
self.broadcast_bucket_size)
for tensors, module in zip(result[1:], self._module_copies[1:]):
for tensor, buf in zip(tensors, module.buffers()):
buf.data.set_(tensor)