1 of 10

Pythonization and Embiggening

Status

2020-01-29

2 of 10

Pythonization - open issues

  • NEARLY DONE!
    • Most reviews are in
  • One quibble has come up:
    • Minor improvements to LIS: “integer” → “non-negative integer” (and similar)
      • Summary of issue: sentinel values are permitted to be implemented as negative numbers
    • It’s a can of worms
    • This is unresolvable in the time that we have left for MPI-4
  • Resolution:
    • Make the Pythonization be as much of a no-op in the rendered PDF as possible as compared to the MPI-4.x branch HEAD before Pythonization
    • Other improvements to these LIS issues can be separate issues (and/or errata) for MPI-4.0 or MPI-4.1

3 of 10

4 of 10

The Embiggening™ - open issues

  1. “Problematic” functions
  2. Datatypes chapter

5 of 10

“Problematic” functions

  • Problem when embiggening OUT or INOUT parameter
    • When that parameter can be compared to sentinel values
  • Example: MPI_GET_COUNT(IN status, IN datatype, OUT count)
    • “count” can be set to MPI_UNDEFINED if the value is un-representable in count. Examples:
      • The value is too large for the type
      • The length of the datatype is zero and the number of bytes received is non-zero
    • MPI_UNDEFINED is defined (in Annex A) to be a C int and a Fortran INTEGER
      • We must define that MPI_UNDEFINED can be upcast to be comparable to an MPI_Count

6 of 10

Datatype chapter

  • Haven’t properly Embiggened it yet
    • Will be doing that this week
    • Stay tuned!

7 of 10

“Problematic” functions

  • Another example: MPI_REGISTER_DATAREP has two callback function types:
    • MPI_Datarep_conversion_function
    • MPI_Datarep_extent_function
  • These callback functions have embiggened parameters
    • ...still need to add some text to embiggen these (i.e., create embiggened callback function types)
    • Will be done by next week

8 of 10

Full list of “Problematic” functions

  1. MPI_Buffer_detach
  2. MPI_REGISTER_DATAREP
  3. MPI_Datarep_conversion_function
  4. MPI_Datarep_extent_function
  5. MPI_File_get_type_extent
  6. MPI_Get_count
  7. MPI_Pack
  8. MPI_Pack_size
  9. MPI_T_cvar_handle_alloc
  10. MPI_T_pvar_handle_alloc
  11. MPI_Unpack
  12. MPI_Win_shared_query

9 of 10

The EmbiggeningTM

10 of 10

Pythonization + Embiggening

  • One Github PR, or two?
    • Right now, the commits are inter-mingled on a single git branch
  • There is a top-level Python switch:
    • Render in “small” mode
    • Render in polymorphic / Embiggened mode
  • Do we need to separate these into two PRs?
    • Will take quite a bit of gittery magic to do this
    • We can do it, but only if it’s worthwhile