mpiwg-tools / tools-issues

Tickets and Wiki for the MPI-Forum Tools Working Group
13 stars 2 forks source link

MPI_T: Unique identifiers for MPI_T variables and events #12

Closed mahermanns closed 11 months ago

mahermanns commented 7 years ago

Problem

MPI_T defines the interface to query available performance and config variables. However, the user needs to consult the manual to understand the semantics of a specific variable. Tools can query and store a variable description, but will be unable to compare its semantics to previous versions of this variable or variables of the same name.

Proposal

Using IEEE company identifiers (CID) as a 24-bit prefix in a larger integer-based variable, an MPI vendor can assign unique IDs to every variable, that a tool can query at runtime. A unique identifier for a variable guarantees that the semantics of this variable does not change in the future. Tool implementors can use the ID to decide on how to process a variable.

Changes to the Text

The changes will be integrated to the MPI_T section of the Tool Support chapter.

Impact on Implementations

Implementors providing their own variables will have to register a CID at IEEE (many network vendors already have viable CID values, because IEEE OUI values can also be used as CID values) for $685 USD (as of April 2017). Implementors are free to use the remaining bits of the identifiers (following their own CID) as they see fit to identify a variable uniquely. Implementors are allowed to use the unique identifiers outside of their own prefix for a variable, if that variable follows the same semantics as specified by the owner of the ID.

Impact on Users

Tool implementors will be able to identify variables that are portable across multiple MPI implementations. For example, a vendor-provided MPI implementation derived from an open source MPI implementation may chose to provide some of the variables of its origin potentially under a different name. If the implementation chooses to change the semantics in a future version, they can keep the same name, but only have to change the unique ID and a tool can easily detect the semantic change (and issue a warning or proceed otherwise).

References

jsquyres commented 7 years ago

@mahermanns I'm a bit confused by the statement "Implementors do not need to provide a unique identifier for each variable" (emphasis added by me). Why wouldn't we require unique IDs?

mahermanns commented 7 years ago

@jsquyres Yes. As we discussed in the last meeting, the interface would be of more use, if the unique IDs were required for every implementor-provided variable. I changed the text accordingly.

jsquyres commented 5 years ago

Per https://github.com/mpi-forum/mpi-issues/issues/113#issuecomment-442610133, we'll talk about this further. Some data points and links for further reading:

Fun facts:

jsquyres commented 5 years ago

Per discussion on the Tools WG call today, the tentative plan is:

I was charged with finding 3 things:

  1. Can an open source software group (e.g., Open MPI) buy a CID?
    • It looks like I asked exactly this question back in Feb 2017 when we first approached this idea, and I emailed IEEE to ask. After a bunch of back and forths, the answer is yes, and open source organization (e.g., Open MPI) that has no legal entity can purchase a CID.
  2. What are the relevant IEEE standards to cite for OUIs?
    • IEEE 802®-2001
  3. What are the relevant IEEE standards to cite for CIDs?
    • IEEE 1212™-1991
    • IEEE 896.2™-1991
kathrynmohror commented 5 years ago

@jsquyres Are you certain on the citations for CIDs? I don't read IEEE specs ever so I could be missing something but the titles don't give me confidence that they are related to CID: https://standards.ieee.org/standard/1212-1991.html https://standards.ieee.org/standard/896_2-1991.html

The OUI one looks legit: https://standards.ieee.org/standard/802-2001.html

jsquyres commented 5 years ago

Those are the ones cited in https://standards.ieee.org/products-services/regauth/cid/index.html.

The 'company_id' relevant standards as defined in IEEE 1212™-1991 Control and Status Register (CSR) Architecture referenced by IEEE 896.2™-1991 Futurebus+Physical Layers and Profiles include: ...

kathrynmohror commented 5 years ago

Works for me. Thanks for confirming!

mahermanns commented 11 months ago

Closing the ticket in favor of the MPI Forum ticket at https://github.com/mpi-forum/mpi-issues/issues/113

Any further discussion will be held on that ticket.