precision Brain floating point format ("torch.bfloat16") and then
   divides it by the process group size. It allreduces those
   "bfloat16" gradient tensors. Once compressed gradient tensors are
   allreduced, the chained callback "decompress" casts it back to the
   input data type (such as "float32").
Example::
      >>> ddp_model.register_comm_hook(process_group, bf16_compress_hook)
Return type:
      Future[Tensor]
Additionally, a communication hook wrapper is provided to support
"fp16_compress_hook()" or "bf16_compress_hook()" as a wrapper, which
can be combined with other communication hooks.
torch.distributed.algorithms.ddp_comm_hooks.default_hooks.fp16_compress_wrapper(hook)
This wrapper casts the input gradient tensor of a given DDP
   communication hook to half-precision floating point format
   ("torch.float16"), and casts the resulting tensor of the given hook
   back to the input data type, such as "float32".
Therefore, "fp16_compress_hook" is equivalent to