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

Support large single requests made by a process #131

Merged
merged 9 commits into from
Mar 14, 2024
Merged

Support large single requests made by a process #131

merged 9 commits into from
Mar 14, 2024

Conversation

wkliao
Copy link
Member

@wkliao wkliao commented Mar 13, 2024

Starting from MPI standard 3.0, MPI_Count and 4.0 MPI_xxx_c APIs have been
added to support large (> 2^31-1) datatypes. This PR checks the availability of
those large count MPI APIs and if they are implemented in the underlying MPI
library, then they will be used to create large datatype for fileview and user
buffer datatypes. This way, we can support large single requests by calling
the same MPI_File_read/write APIs whose count argument is still of type int.

This PR thus deprecates the configure option --enable-large-single-req

PnetCDF uses the following MPI datatype construction functions for large
requests.
    MPI_Type_create_subarray_c
    MPI_Type_contiguous_c
    MPI_Type_create_hvector_c
    MPI_Type_create_struct_c
    MPI_Type_create_hindexed_c
    MPI_Type_vector_c
    MPI_Pack_c
    MPI_Unpack_c
    MPI_Type_get_true_extent_x
    MPI_Type_size_x
If all are available, then define HAVE_MPI_LARGE_COUNT and proceed with
constructing large datatypes for fileview and user buffer. Checking
MPI_VERSION against 3 is not sufficient, as some MPI (e.g. OpenMPI
5.0.2) does not support MPI_XXX_c functions.
@wkliao wkliao merged commit 1f03432 into master Mar 14, 2024
4 checks passed
@wkliao wkliao deleted the large_req branch March 15, 2024 18:17
wkliao added a commit that referenced this pull request Mar 19, 2024
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.

1 participant