code: def combine_slices(self, slices, tensor_shape, device=None):
      
      if tensor_shape.ndims == 0:
        return slices[0]
  
      ret = slices[:]
      tensor_layout = self.tensor_layout(tensor_shape)
      for mesh_dim, tensor_axis in zip(
          self.shape, tensor_layout.mesh_axis_to_tensor_axis(self.ndims)):
        slice_size = len(ret) // mesh_dim.size
        if tensor_axis is None:
          ret = ret[:slice_size]
        else:
          if device:
            devices = [device] * slice_size
          else:
            devices = [ret[i].device for i in xrange(slice_size)]
          concat_inputs = []
          for i in xrange(slice_size):
            concat_inputs.append(
                [ret[i + slice_size * j] for j in xrange(mesh_dim.size)])
          ret = parallel(
              devices, tf.concat, concat_inputs,
              axis=[tensor_axis] * len(devices))
      assert len(ret) == 1
      return ret[0]
docs: Turns a set of slices into a single tensor.
  
      Args:
        slices: list of tf.Tensor with length self.size.
        tensor_shape: Shape.
        device: optional str. If absent, we use the devices of the slices.
  
      Returns:
        tf.Tensor.