class_docstr: Linear layer with row parallelism
  
  Args:
      in_features (int): size of each input sample.
      out_features (int): size of each output sample.
      bias (bool, optional): If set to ``False``, the layer will not learn an additive bias, defaults to ``True``.
      dtype (`torch.dtype`): The dtype of parameters, defaults to None.
      parallel_input (bool): If set to ``True``, it's assumed that the input is split, defaults to False.
      process_group (`torch.distributed.ProcessGroup`): The process group to be used for weight sharding and communication, defaults to None.
      seq_parallel (`bool`): If set to ``True``, it will use sequence parallel, defaults to False.
      skip_bias_add (bool): If set to ``True``, it will skip bias add for linear layer,
          which is preserved for kernel fusion, defaults to False
      weight_initializer (:class:`typing.Callable`, optional):
          The initializer of weight, defaults to kaiming uniform initializer.
      bias_initializer (:class:`typing.Callable`, optional):
          The initializer of bias, defaults to xavier uniform initializer.
  
  More details about ``initializer`` please refer to
  `init <https://github.com/hpcaitech/ColossalAI/blob/main/colossalai/nn/init.py>`_.
class_docstr_tok: ["Linear","layer","with","row","parallelism","Args",":","in_features","(","int",")",":","size","of","each","input","sample",".","out_features","(","int",")",":","size","of","each","output","sample",".","bias","(","bool",",","optional",")",":","If","set","to","``","False","``",",","the","layer","will","not","learn","an","additive","bias",",","defaults","to","``","True","``",".","dtype","(","`","torch.dtype","`",")",":","The","dtype","of","parameters",",","defaults","to","None",".","parallel_input","(","bool",")",":","If","set","to","``","True","``",",","it","'s","assumed","that","the","input","is","split",",","defaults","to","False",".","process_group","(","`","torch.distributed.ProcessGroup","`",")",":","The","process","group","to","be","used","for","weight","sharding","and","communication",",","defaults","to","None",".","seq_parallel","(","`","bool","`",")",":","If","set","to","``","True","``",",","it","will","use","sequence","parallel",",","defaults","to","False",".","skip_bias_add","(","bool",")",":","If","set","to","``","True","``",",","it","will","skip","bias","add","for","linear","layer",",","which","is","preserved","for","kernel","fusion",",","defaults","to","False","weight_initializer","(",":","class",":","`","typing.Callable","`",",","optional",")",":","The","initializer","of","weight",",","defaults","to","kaiming","uniform","initializer",".","bias_initializer","(",":","class",":","`","typing.Callable","`",",","optional",")",":","The","initializer","of","bias",",","defaults","to","xavier","uniform","initializer",".","More","details","about","``","initializer","``","please","refer","to","`","init","<","https",":","\/\/github.com\/hpcaitech\/ColossalAI\/blob\/main\/colossalai\/nn\/init.py",">","`","_","."]
code: def reset_parameters(
      self, weight_initializer, bias_initializer
  ) -> None:
      fan_in, fan_out = self.in_features, self.out_features
      weight_initializer(self.weight, fan_in=fan_in, fan_out=fan_out)
  
      if self.bias is not None:
          bias_initializer(self.bias, fan_in=fan_in)
          if self.process_group is None:
              src_rank = 0
          else:
              src_rank = dist.distributed_c10d._get_global_rank(
                  self.process_group, 0
              )
  
          origin_device = self.bias.device
          bias = self.bias.cuda()
          dist.broadcast(bias, src=src_rank, group=self.process_group)
          bias = bias.to(origin_device)
          self.bias.copy_(bias)
  
imports: import math
  from typing import Callable, List, Optional, Tuple, Union
  import torch
  import torch.distributed
  import torch.nn
  import torch.nn.functional
  from torch import Tensor
  from torch.distributed import ProcessGroup
  from torch.nn.parameter import Parameter
  from colossalai.lazy import LazyInitContext
  from colossalai.nn import init
  from colossalai.nn.layer.utils import divide
  from colossalai.tensor.d_tensor.api import is_distributed_tensor, shard_colwise, shard_rowwise, sharded_tensor_to_existing_param
  from ._operation import gather_forward_split_backward, linear_gather_forward_reducescatter_backward, linear_reducescatter_forward_gather_backward, linear_with_async_comm, reduce_forward, split_forward_gather_backward
  from .parallel_module import ParallelModule
  from .utils import create_randomizer_with_offset
label_desc: Use image node_id 4 for calling the Linear1D_Row obj's underlying member method code with example usage: obj.reset_parameters(weight_initializer, bias_initializer) without return types