Draft: 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
Merge request reports
Activity
assigned to @yussur.oraji
added 2 commits
added 2 commits
added 9 commits
- b3284343 - More ArrAsgn
- 62bc2062 - Use MPI_REQUEST_NULL to obfuscate error from fortran compiler
- 1678935a - Fix broken assignment
- 7b1a8f22 - More uses of logical for fortran (and bool for C)
- 183fe2fc - TemplateFactory bools for flag
- 460e9b38 - Minor fixes
- 5065b02a - Minor fixes (again)
- 253e40c3 - Fix lvl2 rma issues
- fbebf093 - Rework more uses of int flag (>lvl2 only)
Toggle commit listadded 10 commits
- 43ff2485 - Fix issues with modulo operator
- d77731f8 - Forbid datatypes with no fort->c mapping
- 659a5871 - Fix output for basic template
- 02cdaddb - Fix mpi_type_create_struct
- 95113dc9 - HACK: Mark statusES tests as fort incompatible
- df923cf8 - Fix issues with probe flags
- d0ba14b7 - Fix more flag issues
- 81b1400a - Add type_create_hvector stride to bigint
- 18216a0f - Fix fort Precv/Psend
- b42d7210 - Generic for mpi_intercomm_create_from_groups
Toggle commit listadded 2 commits
Please register or sign in to reply