code: def test_multi_gpu_video(device):
      if not is_mulit_gpu():
          raise SkipTest()
  
      batch_size = 1
  
      def input_gen(batch_size):
          filenames = glob.glob(
              f"{get_dali_extra_path()}/db/video/[cv]fr/*.mp4"
          )
          # test overflow of frame_buffer_
          filenames.append(
              f"{get_dali_extra_path()}/db/video/cfr_test.mp4"
          )
          filenames = filter(
              lambda filename: "mpeg4" not in filename, filenames
          )
          filenames = filter(
              lambda filename: "hevc" not in filename, filenames
          )
          filenames = cycle(filenames)
          while True:
              batch = []
              for _ in range(batch_size):
                  batch.append(
                      np.fromfile(next(filenames), dtype=np.uint8)
                  )
              yield batch
  
      @pipeline_def
      def test_pipeline():
          vid = fn.external_source(
              device="cpu", source=input_gen(batch_size)
          )
          seq = fn.experimental.decoders.video(vid, device=device)
          return seq
  
      video_pipeline_0 = test_pipeline(
          batch_size=1, num_threads=1, device_id=0
      )
      video_pipeline_1 = test_pipeline(
          batch_size=1, num_threads=1, device_id=1
      )
  
      video_pipeline_0.build()
      video_pipeline_1.build()
  
      iters = 5
      for _ in range(iters):
          video_pipeline_0.run()
          video_pipeline_1.run()
  
imports: import nvidia.dali.fn
  from nvidia.dali import pipeline_def
  import numpy
  import cv2
  import nvidia.dali.types
  import glob
  from itertools import cycle
  from test_utils import get_dali_extra_path, is_mulit_gpu
  from nvidia.dali.backend import TensorListGPU
  from nose2.tools import params
  from nose import SkipTest
  from nose.plugins.attrib import attr
label_desc: Use image node_id 10 for calling a global function with example usage: test_multi_gpu_video(device) and returns: seq