Skip to content
Snippets Groups Projects

Draft: Fortran Support

Open Oraji, Yussur Mustafa requested to merge fortran into main

Testing using level 2

Disqualified Tests:

  • Passing NULL/MPI_REQUEST_NULL causes compile errors in Fortran, disqualifying InvalidParam 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:

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

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
Please register or sign in to reply
Loading