Verified Commit 2e1d8910 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

[plugins/slurm] Use `scord_query` to find `io_procs` for Cargo

parent 3a11fe45
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -51,3 +51,8 @@ target_link_libraries(scord_query
install(TARGETS scord_query
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

set_target_properties(
  scord_query PROPERTIES __INSTALLED_PATH
                         ${CMAKE_INSTALL_FULL_BINDIR}/scord_query
)
+8 −0
Original line number Diff line number Diff line
@@ -142,3 +142,11 @@ function(mark_variables_as_advanced)
    mark_as_advanced(${_var})
  endforeach()
endfunction()

# Define a custom target property so that we can store and retrieve the
# installed path of a target.
define_property(
  TARGET PROPERTY __INSTALLED_PATH
  BRIEF_DOCS "Full path to a target's installed location"
  FULL_DOCS "Full path to a target's installed location"
)
+5 −1
Original line number Diff line number Diff line
@@ -27,7 +27,8 @@ find_package(Slurm REQUIRED)

add_library(slurm-plugin SHARED)

get_target_property(SCORD_CTL_BIN scord-ctl SCORD_CTL_BINARY)
get_target_property(SCORDCTL_PROGRAM scord-ctl __INSTALLED_PATH)
get_target_property(SCORD_QUERY_PROGRAM scord_query __INSTALLED_PATH)

configure_file(defaults.h.in defaults.h @ONLY)

@@ -64,6 +65,9 @@ find_program(MPIEXEC_EXECUTABLE
  PATH_SUFFIXES bin sbin
  DOC "MPI launcher executable")

set(SCORD_SERVICE_ADDRESS
  ${SCORD_TRANSPORT_PROTOCOL}://${SCORD_BIND_ADDRESS}:${SCORD_BIND_PORT})

configure_file(scord_common.sh.in scord_common.sh @ONLY)
configure_file(scord_prolog.sh.in scord_prolog.sh @ONLY)
configure_file(scord_epilog.sh.in scord_epilog.sh @ONLY)
+3 −1
Original line number Diff line number Diff line
@@ -178,7 +178,9 @@ function get_addrs {
}

# shellcheck disable=SC2034
export SCORDCTL_PROGRAM="@SCORD_CTL_BIN@"
export SCORD_SERVICE_ADDRESS="@SCORD_SERVICE_ADDRESS@"
export SCORD_QUERY_PROGRAM="@SCORD_QUERY_PROGRAM@"
export SCORDCTL_PROGRAM="@SCORDCTL_PROGRAM@"
export SCORDCTL_PROTO="@SCORD_TRANSPORT_PROTOCOL@"
export SCORDCTL_PORT="@SCORD_CTL_BIND_PORT@"
export CARGO_PORT="@CARGO_PORT@"
+7 −2
Original line number Diff line number Diff line
@@ -174,10 +174,15 @@ fi
# generate a specific configuration file each Cargo service.
CARGO_ID=$(echo "cargo_$SLURM_JOB_ID.$SLURM_JOB_UID" | sha256sum | awk '{ print $1 }')
CARGO_CONFIG_FILE=$CARGO_CONFIG_DIRECTORY/$CARGO_ID.cfg
CARGO_NUM_NODES=1 #TODO: ask scord
CARGO_MASTER_ADDRESS="$SCORDCTL_PROTO://$ADDRESS:$CARGO_PORT"
CARGO_INSTANCE_NAME=$(systemd-escape --template cargo@.service "$CARGO_ID")

if ! CARGO_NUM_NODES=$(@SCORD_QUERY_PROGRAM@ -s @SCORD_SERVICE_ADDRESS@ "$SLURM_JOB_ID" | grep io_procs | awk '{ print $2 }'); then
  echo "Failed to determine the number of I/O processes for job $SLURM_JOB_ID"
else
  CARGO_NUM_NODES=${#hostnames[@]}
fi

cat <<EOT >>"$CARGO_CONFIG_FILE"
CARGO_ID=$CARGO_ID
CARGO_HOSTS=$hostnames_csv
Loading