in gala/gpu_gossip_buffer.py [0:0]
def __init__(self, topology, model, buffer_locks, read_events,
write_events, sync_list, sync_freq=0):
""" GossipBuffer """
self.topology = topology
self.num_learners = len(topology)
self.sync_list = sync_list
self.sync_freq = sync_freq
# Initialize message buffer (4-item object):
# [0] -> Msg-Tensor
# [1] -> Events recording peers that have read the message
# [2] -> Events recording peer that has written the message
# [3] -> Lock for safe access of Msg-Tensor
self.msg_buffer = []
for rank in range(self.num_learners):
msg = copy.deepcopy(model)
msg.share_memory()
r_events = read_events[rank]
w_events = write_events[rank]
lock = buffer_locks[rank]
self.msg_buffer.append([msg, r_events, w_events, lock])
# Initialize each Read-Buffer as 'read'
for msg_buffer in self.msg_buffer:
read_event_list = msg_buffer[1]
for event in read_event_list:
event.set()