mom-ocean / FMS

GFDL's Flexible Modeling System: This is a fork for use with the MOM5 model.
Other
2 stars 1 forks source link

MPI_Type, MPI_Alltoallw, mpp_global_field update #5

Open aidanheerdegen opened 3 years ago

aidanheerdegen commented 3 years ago

This is the work of @marshallward

git cherry-pick d216cfd4506be1f369c8a265cb40e9f9b34321c2

This patch contains three new features for FMS: Support for MPI datatypes, an MPI_Alltoallw interface, and modifications to mpp_global_field to use these changes for select operations.

These changes were primarily made to improve stability of large (>4000 rank) MPI jobs under OpenMPI at NCI.

There are differences in the performance of mpp_global_field, occasionally even very large differences, but there is no consistency across various MPI libraries. One method will be faster in one library, and slower in another, even across MPI versions. Generally, the MPI_Alltoallw method showed improved performance on our system, but this is not a universal result. We therefore introduce a flag to control this feature.

The inclusion of MPI_Type support may also be seen as an opportunity to introduce other new MPI features for other operations, e.g. halo exchange.

Detailed changes are summarised below.

Provisional interfaces to SHMEM and serial ("nocomm") builds have been added, although they are as yet untested and primarily meant as placeholders for now.

This patch also includes the following changes to support this work.

aidanheerdegen commented 3 years ago

Hey @marshallward I am just merging this work you did into our FMS fork. Can you just confirm that this is ok, I assume the code is fine, it is what was accepted into the upstream FMS but I guess we had to branch before it was merged into master.

marshallward commented 3 years ago

Not really in a good position to test it out, but it looks OK to me. If it's not breaking your runs then I suspect it's fine to merge.