-
Notifications
You must be signed in to change notification settings - Fork 900
ompi/attributes: revamp attribute handling. #3891
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
ompi/attributes: revamp attribute handling. #3891
Conversation
from #2940
i set the milestone to |
@ggouaillardet, your commit message leaves a lot to be desired in the "why?" category. What was broken, what's fixed, what's still broken? What's your opinion on the ABI changes and why? We can't take an ABI change for 3.0.1 and would prefer not take it for the fall release, but it's unclear where we even are on ABI changes. |
we now have 12 cases to deal (4 writers and 3 readers) : 1. C `void*` is written into the attribute value, and the value is read into a C `void*` (unity) 2. C `void*` is written, Fortran `INTEGER` is read 3. C `void*` is written, Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is read 4. Fortran `INTEGER` is written, C `void*` is read 5. Fortran `INTEGER` is written, Fortran `INTEGER` is read (unity) 6. Fortran `INTEGER` is written, Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is read 7. Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is written, C `void*` is read 8. Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is written, Fortran `INTEGER` is read 9. Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is written, Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is read (unity) 10. Intrinsic is written, C `void*` is read 11. Intrinsic is written, Fortran `INTEGER` is read 12. Intrinsic is written, Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)` is read We previously handled 9 cases ( 3 x 3 types) : a) C `void *` b) Fortran MPI-1 c) Fortran MPI-2 though a) is unchanged and c) is equivalent to Fortran `INTEGER(KIND=MPI_ADDRESS_KIND)`, b) was not correctly handled since a Fortran `INTEGER` is not always equivalent to a C `int`. though it might have happened to work on little endian systems, the change is critical for big endian systems. MPI-2 Fortran "integer representation" has type `INTEGER(KIND=MPI_ADDRESS_KIND)` as clarified at mpiwg-rma/rma-issues#1 Signed-off-by: Gilles Gouaillardet <[email protected]> (cherry picked from commit open-mpi/ompi@72cfbb6)
197a3f6
to
3b2df6d
Compare
@bwbarrett i rewrote the commit message to explain what this commit is fixing @bosilca i checked again about the ABI changes, and unless i got it wrong (again), there are no ABI changes :-) the type of the callbacks for |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see any ABI issues, from my review. I think this is good to go. Thanks!
@bwbarrett good to go |
we now have 12 cases to deal (4 writers and 3 readers) :
void*
is written into the attribute value, and the value is read into a Cvoid*
(unity)void*
is written, FortranINTEGER
is readvoid*
is written, FortranINTEGER(KIND=MPI_ADDRESS_KIND)
is readINTEGER
is written, Cvoid*
is readINTEGER
is written, FortranINTEGER
is read (unity)INTEGER
is written, FortranINTEGER(KIND=MPI_ADDRESS_KIND)
is readINTEGER(KIND=MPI_ADDRESS_KIND)
is written, Cvoid*
is readINTEGER(KIND=MPI_ADDRESS_KIND)
is written, FortranINTEGER
is readINTEGER(KIND=MPI_ADDRESS_KIND)
is written, FortranINTEGER(KIND=MPI_ADDRESS_KIND)
is read (unity)void*
is readINTEGER
is readINTEGER(KIND=MPI_ADDRESS_KIND)
is readMPI-2 Fortran "integer representation" has type
INTEGER(KIND=MPI_ADDRESS_KIND)
as clarifiedat mpiwg-rma/rma-issues#1
Signed-off-by: Gilles Gouaillardet [email protected]
(cherry picked from commit 72cfbb6)