code: def multiprocess_caller(args):
      """Runs multiparty benchmarks and prints/saves from source 0"""
      rank = comm.get().get_rank()
      if args.multi_gpu:
          assert (
              args.world_size >= torch.cuda.device_count()
          ), f"Got {args.world_size} parties, but only {torch.cuda.device_count()} GPUs found"
          device = torch.device(f"cuda:{rank}")
      else:
          device = torch.device(args.device)
  
      benchmarks = [
          FuncBenchmarks(device=device),
          ModelBenchmarks(
              device=device, advanced_models=args.advanced_models
          ),
      ]
  
      if args.only_functions:
          benchmarks = [FuncBenchmarks(device=device)]
  
      for benchmark in benchmarks:
          benchmark.run()
          rank = comm.get().get_rank()
          if rank == 0:
              pd.set_option("display.precision", 3)
              print(benchmark)
              if args.path:
                  benchmark.save(args.path)
  
imports: import argparse
  import functools
  import os
  import timeit
  from collections import namedtuple
  import crypten
  import crypten.communicator
  import numpy
  import pandas
  import torch
  from examples import multiprocess_launcher
label_desc: Use image node_id 3 for calling a global function with example usage: multiprocess_caller(args) without return types