class_docstr: A multi-GPU version of the Projected Gradient Descent Attack
  (Madry et al. 2017).
  Paper link: https://arxiv.org/pdf/1706.06083.pdf
  
  This attack is designed to run on multiple GPUs for generating adversarial
  examples.
  Comparing to data parallelism, using this parallelization we can get
  very close to optimal n times speed up using n GPUs. The current
  implementation gets close to 6x speed up on 8 GPUs.
code: def get_or_guess_labels(self, x, kwargs):
      device_name = "/gpu:0"
      self.model.set_device(device_name)
      with tf.device(device_name):
          with tf.variable_scope("model_pred"):
              ret = super(MadryEtAlMultiGPU, self).get_or_guess_labels(
                  x, kwargs
              )
      return ret
  
file_path: cleverhans/cleverhans_v3.1.0/examples/multigpu_advtrain/attacks_multigpu.py
imports: from collections import OrderedDict
  import tensorflow
  from cleverhans.attacks import MadryEtAl
  from cleverhans.utils_tf import clip_eta
  from model import clone_variable
label_desc: Use image node_id 2 for calling the MadryEtAlMultiGPU obj's underlying member method code with example usage: obj.get_or_guess_labels(x, kwargs) and returns: ret