class_docstr: Hold data for distributed view.
  Aggregate all data for distributed in ProfileData object.
class_docstr_tok: ["Hold","data","for","distributed","view",".","Aggregate","all","data","for","distributed","in","ProfileData","object","."]
code: def get_distributed_info(self):
      data = []
      for profile_data in self.profile_datas:
          device_infos = profile_data.device_infos
          if not device_infos:
              return data
          if not profile_data.has_gpu:
              continue
          gpu_id = int(next(iter(profile_data.gpu_ids)))
          data.append(
              {
                  "worker_name": profile_data.worker_name,
                  "process_id": "pid: {}".format(
                      profile_data.process_id
                  ),
                  "device_id": "GPU{}".format(gpu_id),
                  "name": device_infos[gpu_id]["name"],
                  "memory": "{} GB".format(
                      format_memory(
                          device_infos[gpu_id]["totalGlobalMem"], "GB"
                      )
                  ),
                  "computeCapability": "{}.{}".format(
                      device_infos[gpu_id]["computeMajor"],
                      device_infos[gpu_id]["computeMinor"],
                  ),
                  "utilization": "{}%".format(
                      format_ratio(profile_data.gpu_ulitization)
                  ),
              }
          )
      return data
  
imports: from collections import defaultdict
  from collections import OrderedDict
  from .parser.distributed_parser import DistributedParser
  from .parser.kernel_parser import KernelParser
  from .parser.memory_parser import MemoryParser
  from .parser.operator_parser import OperatorParser
  from .parser.overview_parser import CPUType
  from .parser.overview_parser import GPUType
  from .parser.overview_parser import OverviewParser
  from .parser.trace_parser import TraceParser
  from .parser.utils import format_float
  from .parser.utils import format_memory
  from .parser.utils import format_ratio
  from .parser.utils import format_time
  from .parser.utils import traverse_tree
label_desc: Use image node_id 2 for calling the DistributedProfilerData obj's underlying member method code with example usage: obj.get_distributed_info() and returns: data, data