Skip to content
Snippets Groups Projects

[WIP] Comm tasks are special

Closed Pedro Gonnet requested to merge comm_tasks_are_special into master

Don't handle send/recv tasks in the regular queue. Instead, pick out the MPI_Requests and keep them in a separate list and call either MPI_Testany or MPI_Testsome on it to get completed communication tasks before hitting the regular list of tasks.

Edited by Pedro Gonnet

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Author Developer

    Hi Peter!

    My understanding is that you tried either exactly this or something similar. If so, please disregard :)

    This change has two variants, one using MPI_Testany, and the other using MPI_Testsome and buffering the results. While the former will be faster in cases where requests complete quickly, the latter will be more efficient if we have many communication tasks that pile up.

    I'm guessing this will cause problems in cases where no communication tasks complete and we have to call MPI_Test[any|some] every time we want to get a task from the queue, but this can be mitigated in two ways:

    • Only check the communication tasks with probability num_comm_tasks/(num_comm_tasks + num_other_tasks),
    • Don't let other runners steal from this queue.

    Let me know your thoughts on this!

    Cheers, Pedro

  • Pedro Gonnet marked as a Work In Progress

    marked as a Work In Progress

Please register or sign in to reply
Loading