class_docstr: A convolution, batch norm, ReLU block.
  
  A block in a feedforward network that performs a
  convolution followed by batch normalization followed
  by a ReLU activation.
  
  For the convolution operation, a square filter size is used.
  
  The convolution performs as either single-process or model-parallel
  depending on the number of input channels.
  
  Args:
      comm: ChainerMN communicator.
      in_channels (int): The number of input channels.
      out_channels (int): The number of output channels.
      ksize (int): The size of the filter is ksize x ksize.
      pad (int): The padding to use for the convolution.
code: def __init__(self, comm, in_channels, out_channels, ksize, pad=1):
      super(Block, self).__init__()
      with self.init_scope():
          if comm.size <= in_channels:
              self.conv = ParallelConvolution2D(
                  comm,
                  in_channels,
                  out_channels,
                  ksize,
                  pad=pad,
                  nobias=True,
              )
          else:
              self.conv = chainer.links.Convolution2D(
                  in_channels, out_channels, ksize, pad=pad, nobias=True
              )
          self.bn = L.BatchNormalization(out_channels)
  
imports: from __future__ import print_function
  import chainer
  import chainer.functions
  import chainer.links
  import chainermn.functions
  import numpy
label_desc: Use image node_id 1 to create a new Block object from inherited base classes: chainer with example: obj = Block(comm, in_channels, out_channels, ksize, pad)