code: def test_nccl_broadcast(self, n, m, root):
      assume(root < n)
      xs = [np.random.randn(m).astype(np.float32) for i in range(n)]
      inputs = [str("x_{}".format(i)) for i in range(n)]
      op = core.CreateOperator(
          "NCCLBroadcast", inputs, inputs, root=root
      )
      input_device_options = {
          n: gpu_device(i) for i, n in enumerate(inputs)
      }
  
      def broadcast(*args):
          assert len(args) == n
          return [args[root] for _ in range(n)]
  
      self.assertReferenceChecks(
          hu.gpu_do,
          op,
          [xs[i] for i, _ in enumerate(inputs)],
          broadcast,
          input_device_options,
      )
  
file_path: pytorch/caffe2/contrib/nccl/nccl_ops_test.py
imports: import unittest
  import hypothesis.strategies
  from hypothesis import given, assume
  import numpy
  import time
  import os
  from caffe2.proto import caffe2_pb2
  from caffe2.python import core, workspace, muji, dyndep
  import caffe2.python.hypothesis_test_util
label_desc: Use image node_id 2 for calling the NCCLOpsTest obj's underlying member method code with example usage: obj.test_nccl_broadcast(n, m, root) and returns: unknown