Fortran Support
Testing using level 2
Disqualified Tests:
- Passing
NULL
/MPI_REQUEST_NULL
causes compile errors in Fortran, disqualifyingInvalidParam
tests that do this- Disqualifies 17 tests (lvl1) / 136 (lvl2)
- A lot of tests are currently removed due to datatypes, i.e., MPI C types that do not exist / are not implemented yet for Fortran
- No effect on lvl1, as only MPI_INT and MPI_DOUBLE are used / 501 disqualified (lvl2)
Unfixable, but not disqualified:
-
InvalidParam-Status-mpi_recv-002
:MPI_STATUSES_IGNORE
rejected by compiler, different rank than expected- Error class does not exist for Fortran. Disqualifies 1 test (lvl1) / 16 (lvl2)
MPI Issues:
- https://github.com/open-mpi/ompi/issues/9534 - Causes issues with Precv_Init / Psend_init. Need recent OpenMPI version to avoid this
- https://github.com/open-mpi/ompi/pull/13308 - Bug in OpenMPI-git causes compilation failure as well
Types are translated from C to Fortran where applicable, though currently only for MPI_INT -> MPI_INTEGER, MPI_DOUBLE -> MPI_DOUBLE_PRECISION, MPI_C_BOOL -> MPI_LOGICAL as most Fortran MPI types are optional. Tests are formatted using fprettify (available from pip, added to Pipfile).
Common Issues encountered:
- MPI does not differentiate between bool and int, but does between integer and logical.
- Workaround: Use bool where applicable in C code, then translate to logical
- Different integer size expectations cause compilation failures (no automatic extension)
- Workaround: During parsing of apis.json, save the integer width, and perform explicit widening if needed.
- C usage of address-of-integer as a one-dimensional array does not work in Fortran
- Workaround: Replace uses thereof with proper arrays
- Array Indexing starts at 1
- Workaround: Implement explicit indexing to match C
MPI-BugBench bugs (since remembering to write them down):
- Deadlock in CallOrdering-mpi_improbe-mpi_send-001, wrong parameter used as flag
- Note: Deadlock also happens in InvalidParam-flag-mpi_iprobe-002, but intended? (not_allocated flag is not waited on, but the "normal" one)
Edited by Oraji, Yussur Mustafa