Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix collective modules initialization and finalization #12429

Merged
merged 1 commit into from May 1, 2024

Commits on Apr 30, 2024

  1. Fix collective initialization and finalization

    Instead of allowing each collective module to present a list of
    functions it provide, let them register the functions they provide and
    save the context of the previous collective if they choose to.
    
    There are two major benefits to this approach:
    - tighter memory management in the collective module themselves. Each
      collective enable and disable is called exactly once per communicator,
      to chain or unchain themselves from the collective function pointers
      struct. The disable is called in the reverse order of the enable,
      allowing for proper chaining of collectives.
    - they only install the functions they want. So instead of checking in
      the coll_select all the functions for all modules, each module can now
      selectively iterate over only the functions it provides.
    
    What is still broken is the ability of a particular collective module to
    unchain itself in the middle of the execution. Instead, a properly
    implemented module will have an enable/disable flag, and it should act
    as a passthrough if it chooses to desactivate.
    
    Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
    bosilca committed Apr 30, 2024
    Configuration menu
    Copy the full SHA
    f2dfbba View commit details
    Browse the repository at this point in the history