Skip to content

problems possible errata

Jeff Squyres edited this page Mar 18, 2020 · 16 revisions

General errata

  • MPI_Status_set_cancelled

    • flag parameter, lis:in, c:in, f08:out
    • Still need to decide what to do here
  • MPI_Neighbor_alltoallw_init displ[] is using wrong KIND, it is always MPI_Aint

  • Deprecate all the MPI_3.x "_X" functions

    • Not really an errata, but something we want to do

Datatype errata

In general, datatypes have three uses:

  1. MPI_Aint used as number of bytes. You're using MPI_Aint simply as a large number.
  2. MPI_Aint used as an absolute address. Then MPI_Aint is a bit string that represents a location in memory.
  3. With MPI_Files, so you're potentially addressing something bigger than memory.

Bottom line: MPI doesn't necessarily know at construction/commit time whether you're in case 1 or case 2 because it depends on whether you use MPI_BOTTOM with the constructed datatype or not.

We have high confidence that we embiggened MPI datatype constructors properly to handle files (i.e., "_l" function with MPI_Count params). We agonized over this at the time, and got George's input, etc.

--> Tony points out that we should definitely get some more eyes on the IO chapter for embiggening issues.

However, we should go examine each of the LIS parameter descriptions for datatype constructors and make sure that they are sufficient. For example:

  • MPI_TYPE_CREATE_INDEXED_BLOCK
    • "array_of_displacements" LIS description is "array of displacements (array of integers)"
    • What exactly is the unit of this?
    • Assumedly, it should be the same thing as the LIS description for "array_of_displacements" in MPI_TYPE_CREATE_INDEXED: "displacement for each block, in multiples of oldtype (array of integers)"
    • So should we update the LIS description for _CREATE_INDEXED_BLOCK?
      • Probably yes!
  • Probably have the same issue with MPI_TYPE_CREATE_HINDEXED_BLOCK.

Need to go look for other instances like this with other datatype constructors.


  • In MPI_Pack, outsize should have been an MPI_Aint, but is an int. position, should have been an MPI_Aint, but is an int.

  • MPI_Pack_external, MPI_Unpack_external, same question as above, why make the position parameter a MPI_Count from MPI_Aint? The LOCATION kind is already an MPI_Aint.

  • Errata, MPI_Get_type_size, size should have been MPI_Aint, but is int.

  • Errata, MPI_Unpack, insize should have been an MPI_Aint, but is int. position should have been MPI_Aint, but it is int.

    • @Dan Holmes Why did you want to convert (int, MPI_Aint) -> MPI_Count for embiggening?
    • Because files can be bigger than memory
  • Errata, MPI_Pack_size, size should have been MPI_Aint, but is int. Embiggened to an MPI_Count.

Clone this wiki locally