Unhandled MPI_Requests generated by mpi_process_group constructor.

Open
#20 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp

Research direction

Start with the distributed mpi_process_group constructor and the global_trigger_launcher implementation mentioned in the issue. Reproduce the empty-scope case with MPI request profiling such as LLNL's mpileaks, then trace the non-blocking requests created by the default Irecv configuration. Done means destroying an mpi_process_group leaves no outstanding MPI requests.

Written by the indexing model from the issue text.

Description

The boost::graph::distributed::mpi_process_group class spawns some non-blocking communication in its constructor, but the resulting requests are never handled. I have tracked this down to the global_trigger_launcher, which has the following comment:

 // TBD: do not forget to cancel any outstanding Irecv when deleted,
 // if we decide to use Irecv

It looks like this was never done, but the default build configuration uses Irecv. To replicate this bug, simply create an mpi_process_group with any constructor, do nothing with it, and let it go out of scope. You will need some way to interact with the MPI profiling interface to detect leaked requests, such as LLNL's mpileaks:

https://github.com/LLNL/mpileaks

Dominant language
C++
Stars
33
Forks
41
Avg merge
1d 11h
Merged PRs (30d)
1

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from boostorg/graph_parallel

All issues in boostorg/graph_parallel

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.