Warning:
 The context manager requires that all "process_group" attributes
 in the "JoinHook" objects are the same. If there are multiple
 "JoinHook" objects, then the "device" of the first is used. The
 process group and device information is used for checking for
 non- joined processes and for notifying processes to throw an
 exception if "throw_on_early_termination" is enabled, both of
 which using an all- reduce.

Parameters:
      * joinables (List[Joinable]) -- a list of the
        participating "Joinable" s; their hooks are iterated over in
        the given order.
  * **enable** (*bool*) -- a flag enabling uneven input detection;
    setting to "False" disables the context manager's
    functionality and should only be set when the user knows the
    inputs will not be uneven (default: "True").

  * **throw_on_early_termination** (*bool*) -- a flag controlling
    whether to throw an exception upon detecting uneven inputs
