From cc52058578dfc29a3a51d26976c09d24ed8861fa Mon Sep 17 00:00:00 2001 From: FKHals <5229803-FKHals@users.noreply.gitlab.com> Date: Wed, 31 Aug 2022 16:37:16 +0200 Subject: [PATCH] Set agent unix domain socket address by env var to be more flexible concerning the configuration. --- ompi/communicator/comm_init.c | 7 +++++-- rank-swapper-agent/client.sh | 1 + rank-swapper-agent/hello_c.c | 1 - rank-swapper-agent/locserv.c | 12 ++++++++---- rank-swapper-agent/server.sh | 2 ++ 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/ompi/communicator/comm_init.c b/ompi/communicator/comm_init.c index 195fb8eba0..1fb3295c23 100644 --- a/ompi/communicator/comm_init.c +++ b/ompi/communicator/comm_init.c @@ -53,7 +53,6 @@ #include "ompi/dpm/dpm.h" #include "ompi/memchecker.h" -#define SOCKET_PATH "/home/beach/Dokumente/Uni/Informatik_BA/Bachelorarbeit_MPI/sockets_mpi_test/socket" #define FD_STDIN 0 #define BUFFLEN 64 @@ -106,7 +105,11 @@ static int getProcessAgentRank(uint32_t jobid, uint32_t vpid, size_t size) { } strAddr.sun_family=AF_LOCAL; /* Unix domain */ - strcpy(strAddr.sun_path, SOCKET_PATH); + const char * socket_path = getenv("DPM_AGENT_SOCKET"); // check for success + if (NULL == socket_path) { + errorExit("Could not find DPM_AGENT_SOCKET env"); + } + strcpy(strAddr.sun_path, socket_path); lenAddr=sizeof(strAddr.sun_family)+strlen(strAddr.sun_path); if (connect(fdSock, (struct sockaddr*)&strAddr, lenAddr) !=0 ) { errorExit("connect"); diff --git a/rank-swapper-agent/client.sh b/rank-swapper-agent/client.sh index 50f1a093fc..249f6e8181 100755 --- a/rank-swapper-agent/client.sh +++ b/rank-swapper-agent/client.sh @@ -1,6 +1,7 @@ #!/bin/bash export OMPI=/home/openmpi-install +export DPM_AGENT_SOCKET=$OMPI/dpm_socket_socket export PATH=$PATH:$OMPI/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OMPI/bin diff --git a/rank-swapper-agent/hello_c.c b/rank-swapper-agent/hello_c.c index 4693db3eb7..c010612fa3 100644 --- a/rank-swapper-agent/hello_c.c +++ b/rank-swapper-agent/hello_c.c @@ -15,7 +15,6 @@ #include "mpi.h" -#define SOCKET_PATH "/home/ompi/openmpi-rank-swapper-agent/socket" #define BUFFLEN 64 /* Spawn Modes (dynamic job spawning): diff --git a/rank-swapper-agent/locserv.c b/rank-swapper-agent/locserv.c index 1628c9e213..eae21803b3 100644 --- a/rank-swapper-agent/locserv.c +++ b/rank-swapper-agent/locserv.c @@ -23,7 +23,6 @@ #include <time.h> #include <unistd.h> -#define SOCKET_PATH "/home/ompi/openmpi-rank-swapper-agent/socket" #define MAX_CONNECTIONS 10 #define RANK_STR_LEN 8 #define BUFFLEN 64 @@ -134,10 +133,15 @@ int main(void) { if ((fdSock=socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { errorExit("socket"); } - - unlink (SOCKET_PATH); /* Sicherstellung, daß SOCKET_PATH nicht existiert */ + + // create unix domain socket in the installation directory of OpenMPI + const char * socket_path = getenv("DPM_AGENT_SOCKET"); // check for success + if (NULL == socket_path) { + errorExit("Could not find DPM_AGENT_SOCKET env"); + } + unlink (socket_path); /* Make sure that socket_path does not exist yet */ strAddr.sun_family=AF_LOCAL; /* Unix Domain */ - strcpy(strAddr.sun_path, SOCKET_PATH); + strcpy(strAddr.sun_path, socket_path); lenAddr=sizeof(strAddr.sun_family)+strlen(strAddr.sun_path); if (bind(fdSock, (struct sockaddr*)&strAddr, lenAddr) != 0) { errorExit("bind"); diff --git a/rank-swapper-agent/server.sh b/rank-swapper-agent/server.sh index 2f2bdcdf5c..563310e0b6 100755 --- a/rank-swapper-agent/server.sh +++ b/rank-swapper-agent/server.sh @@ -1,3 +1,5 @@ #!/bin/bash +export OMPI=/home/openmpi-install +export DPM_AGENT_SOCKET=$OMPI/dpm_socket_socket ./locserv -- GitLab