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

Remove dependency on MPI compilers #350

Merged
merged 13 commits into from
Jun 11, 2020
Merged

Remove dependency on MPI compilers #350

merged 13 commits into from
Jun 11, 2020

Conversation

tskisner
Copy link
Member

This is still a work in progress. By reorganizing the atmosphere simulation code, we can remove our need for MPI compilers (we just need mpi4py). This means that the internal toast compiled code can be built with any serial compiler. There is no need for consistency between the compilers used to build toast and the compilers used to install mpi4py. This greatly simplifies toast installation and will enable us to distribute binary pip packages.

@tskisner
Copy link
Member Author

tskisner commented Jun 5, 2020

Ok, I think this branch is ready for more extensive tests on actual simulation pipelines. Running small local tests seem to indicate consistent results and timing compared to the current master branch.

 - Require only mpi4py (all MPI operations done in python).  This
   allows us to build our compiled extensions with any compiler
   rather than requiring consistency with the compilers used to
   build mpi4py.

 - Port the high-level C++ atmosphere simulation code to python
   and use compiled code only on a single process.  Change the
   on-disk format of cached atmosphere realizations to use hdf5.

 - Update build system to not look for MPI compilers.

 - Add a new log level, "VERBOSE" which is even lower than "DEBUG".
   The intention for this is to contain messages that might come
   from every single process.

 - The MPIShared and MPILock classes are found in the upstream
   pshmem package.  Bundle a tagged release of that package for
   now until it is widely available on PyPI / conda-forge.

 - Clean up the generation of version.cpp so that it only happens
   if the version actually changes.
function is actually called.  TOAST does not use numba since it conflicts
with our existing explicit parallelism.  The set_numba_threading() function
is designed to be used before calling external packages that use numba,
in order to ensure consistency between toast and numba.
@tskisner
Copy link
Member Author

Ok @keskitalo, this branch now agrees with master on the small test case you shared with me offline. If you could reconfirm that consistency it would be great, and then hopefully we can merge this.

@keskitalo
Copy link
Member

The branch is now fully compatible with master.

Copy link
Member

@keskitalo keskitalo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Enthusiastically approved.

@tskisner tskisner merged commit b9bb44d into master Jun 11, 2020
@tskisner tskisner deleted the pympi branch June 11, 2020 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants