(self, master_msg)
return results[0][1]
Main entry for the master device in each forward pass.
        The messages were first collected from each devices (including the master device), and then
        an callback will be invoked to compute the message to be sent back to each devices
        (including the master device).

        Args:
            master_msg: the message that the master want to send to itself. This will be placed as the first
            message when calling `master_callback`. For detailed usage, see `_SynchronizedBatchNorm` for an example.

        Returns: the message to be sent back to the master device.
Main entry for the master device in each forward pass.
        The messages were first collected from each devices (including the master device), and then
        an callback will be invoked to compute the message to be sent back to each devices
        (including the master device).
Main entry for the master device in each forward pass . The messages were first collected from each devices ( including the master device ) and then an callback will be invoked to compute the message to be sent back to each devices ( including the master device ) .
def run_master(self, master_msg):
        """
        Main entry for the master device in each forward pass.
        The messages were first collected from each devices (including the master device), and then
        an callback will be invoked to compute the message to be sent back to each devices
        (including the master device).

        Args:
            master_msg: the message that the master want to send to itself. This will be placed as the first
            message when calling `master_callback`. For detailed usage, see `_SynchronizedBatchNorm` for an example.

        Returns: the message to be sent back to the master device.

        """
        self._activated = True

        intermediates = [(0, master_msg)]
        for i in range(self.nr_slaves):
            intermediates.append(self._queue.get())

        results = self._master_callback(intermediates)
        assert results[0][0] == 0, "The first result should belongs to the master."

        for i, res in results:
            if i == 0:
                continue
            self._registry[i].result.put(res)

        for i in range(self.nr_slaves):
            assert self._queue.get() is True

        return results[0][1]
def run_master ( self , master_msg ) : self . _activated = True intermediates = [ ( 0 , master_msg ) ] for i in range ( self . nr_slaves ) : intermediates . append ( self . _queue . get ( ) ) results = self . _master_callback ( intermediates ) assert results [ 0 ] [ 0 ] == 0 , "The first result should belongs to the master." for i , res in results : if i == 0 : continue self . _registry [ i ] . result . put ( res ) for i in range ( self . nr_slaves ) : assert self . _queue . get ( ) is True return results [ 0 ] [ 1 ]