Performance tuning for inter-node communication (#66)

This PR addresses two issues:
 - reduce the number of contexts supported by the host-interface by
   default to 1, we are not using those at the moment, and hence
   we now create fewer MPI_Win at the startup
 - introduces a micro-sleep in RO progress engine in case there are no
   pending requests. This leads significant performance improvements
   observed for inter-node communication with THor2 NICs.
This commit is contained in:
Edgar Gabriel
2025-03-26 21:09:26 -05:00
committed by GitHub
parent 607c6bd044
commit 12561783de
4 changed files with 13 additions and 1 deletions
+5
View File
@@ -25,6 +25,7 @@
#include <functional>
#include <utility>
#include <vector>
#include <unistd.h>
#include "../host/host.hpp"
#include "backend_ro.hpp"
@@ -591,6 +592,10 @@ void MPITransport::progress() {
const int tag{1000};
int flag{0};
MPI_Status status{};
// Slowing the progress engine down a bit avoid hammering the memory subsystem.
// This leads to significant performance benefits
usleep (rocshmem_env_config.ro_progress_delay);
NET_CHECK(MPI_Iprobe(MPI_ANY_SOURCE, tag, ro_net_comm_world, &flag, &status));
} else {
DPRINTF("Testing all outstanding requests (%zu)\n", requests.size());