docstr: Regression test of Open MPI's issue #3972
docstr_tok: ["Regression","test","of","Open","MPI","'s","issue","#","3972"]
code: def test_bcast_gpu_large_buffer_deadlock(self):
      """Regression test of Open MPI's issue #3972"""
      self.setup(True)
      buf_size = 10000
      mpi_comm = self.communicator.mpi_comm
  
      if self.communicator.rank == 0:
          array = np.arange(buf_size, dtype=np.float32)
      else:
          array = np.empty(buf_size, dtype=np.float32)
  
      array = chainer.cuda.to_gpu(array, device=self.device)
  
      ptr = _memory_utility.array_to_buffer_object(array)
  
      # This Bcast() cause deadlock if the underlying MPI has the bug.
      th = _TimeoutThread(self.queue, self.communicator.rank)
      th.start()
      mpi_comm.Bcast(ptr, root=0)
      mpi_comm.barrier()
      self.queue.put(True)
      assert True
  
imports: import os
  import re
  import signal
  from subprocess import CalledProcessError
  from subprocess import PIPE
  from subprocess import Popen
  import sys
  import threading
  import unittest
  import numpy
  import pytest
  import chainer.testing
  import chainer.testing.attr
  import chainermn
  from chainermn.communicators import _memory_utility
label_desc: Use image node_id 3 for calling the TestBcastDeadlock obj's underlying member method code with example usage: obj.test_bcast_gpu_large_buffer_deadlock() without return types