class_docstr: Concat gradients together to optimize transfer.
docstr: Args:
      all_packed: K lists of packed gradients.
docstr_tok: ["Args",":","all_packed",":","K","lists","of","packed","gradients","."]
code: def unpack_all(self, all_packed, devices):
      """
      Args:
          all_packed: K lists of packed gradients.
      """
      all_grads = []  # #GPU x #Var
      for dev, packed_grads_single_device in zip(devices, all_packed):
          with tf.device(dev):
              all_grads.append(self.unpack(packed_grads_single_device))
      return all_grads
  
imports: import operator
  from contextlib import contextmanager
  import tensorflow
  import threading
  from ..compat import tfv1
  from ..tfutils.common import get_tf_version_tuple
  from ..tfutils.scope_utils import cached_name_scope, under_name_scope
  from ..tfutils.varreplace import custom_getter_scope
  from ..utils import logger
  from ..utils.argtools import call_only_once
label_desc: Use image node_id 6 for calling the GradientPacker obj's underlying member method code with example usage: obj.unpack_all(all_packed, devices) and returns: all_grads