AMPI: MPI_Waitall over an MPI_Ialltoall request hangs; alltoall messages unordered; four more request-completion items

Aperta
#4,097 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
cpp

Direzione di ricerca

Start with the AMPI request completion and collective matching code, especially ATAReq, RednReq::receive, ScanReq, freeOp, and putOutOfOrder; compare the related fixes in #4084, #4085, and #4093. Reproduce the MPI_Ialltoall plus MPI_Waitall hang and inspect existing tests that use separate MPI_Wait calls. Done means resolving the five listed completion, ordering, operation lifetime, and sequence-wrap issues with regression coverage.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Split out of #4072 (found 2026-10-23/24 while fixing items 7 and the scan family; all pre-existing on recharm, none fixed yet).

  1. MPI_Waitall over an MPI_Ialltoall request hangs, even alone (direct reproducer 2026-10-24, code unchanged from origin/recharm). ATAReq sets its own blocked flag, but its sub-requests never decrement numBlockedReqs, so the waiting rank is never woken. Tests use separate MPI_Wait calls meanwhile. This is the most user-visible item here: Ialltoall followed by Waitall is a common pattern.
  2. Alltoall-family messages carry sequence number 0 (unordered), so two outstanding Ialltoalls on one communicator have the ordering exposure the scans had before #4085 gave scan messages per-sender sequence numbers.
  3. Two outstanding Ibcasts with the same root are matched on (MPI_BCAST_TAG, root) in posting order. Since #4093 array broadcasts are delivered in order on reconverse, so this is a robustness item; a sequence number per broadcast, as #4084 did for reductions, would close it.
  4. MPI_Op_free while a non-blocking reduction is outstanding: RednReq::receive resolves the op index per round and freeOp pops the entry, so a later round asserts or calls a reused slot. MPI-3.1 says pending operations complete normally. #4085 captures the function in ScanReq; RednReq (non-commutative Ireduce/Iallreduce) still looks it up.
  5. putOutOfOrder's "received late out-of-order message" check does not handle 16-bit sequence wraparound, so an error-checking build can abort after 65536 messages from one sender.

Related: #4084 (collective matching), #4085 (scan family), #4093 (broadcast ordering and storage).

Lingua principale
C++
Stelle
241
Fork
62
Merge medio
1g 1h
PR unite (30g)
121

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di charmplusplus/charm

Tutte le issue di charmplusplus/charm

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.