code: def shift_by_n_processors(self, x, mesh_axis, offset, wrap):
      
      n = self.shape[mesh_axis].size
      source_pcoord = []
      for i in xrange(n):
        c = i - offset
        if c != c % n:
          if wrap:
            c = c % n
          else:
            c = None
        source_pcoord.append(c)
      return self.receive(x, mesh_axis, source_pcoord)
docs: Receive the slice from processor pcoord - offset.
  
      Args:
        x: a LaidOutTensor
        mesh_axis: an integer
        offset: an integer
        wrap: a boolean. If True, then wrap around. Otherwise, pad with zeros.