code: def bench_fsdp_vit(self, bench_config: BenchConfig):
      world_size = torch.cuda.device_count()
      # TODO - add config with_mixed_precision
      # TODO - add different configs
      config = self._create_dino_pretraining_config(
          with_fsdp=True,
          with_mixed_precision=False,
          gpu_count=world_size,
      )
      with in_temporary_directory():
          with with_temp_files(count=1) as sync_file:
              args = (sync_file, config, world_size, bench_config)
              mp.spawn(self._run_fsdp_worker, args, nprocs=world_size)
  
file_path: vissl/tests/bench_vit_fsdp.py
imports: import argparse
  import contextlib
  from dataclasses import dataclass
  import torch
  import torch.multiprocessing
  import torch.nn
  from vissl.models import build_model
  from vissl.utils.fsdp_utils import fsdp_wrapper
  from vissl.utils.hydra_config import compose_hydra_configuration, convert_to_attrdict
  from vissl.utils.layer_memory_tracking import LayerwiseMemoryTracker
  from vissl.utils.profiler import create_runtime_profiler
  from vissl.utils.test_utils import in_temporary_directory, init_distributed_on_file, with_temp_files, with_timing
label_desc: Use image node_id 4 for calling the BenchVitFSDP obj's underlying member method code with example usage: obj.bench_fsdp_vit(bench_config) without return types