@@ -663,6 +663,14 @@ deployment_groups:
663663 chmod 0755 "${SLURM_ROOT}/scripts/sudo-oslogin"
664664 ln -s "${SLURM_ROOT}/scripts/sudo-oslogin" "${SLURM_ROOT}/prolog_slurmd.d/sudo-oslogin.prolog_slurmd"
665665 ln -s "${SLURM_ROOT}/scripts/sudo-oslogin" "${SLURM_ROOT}/epilog_slurmd.d/sudo-oslogin.epilog_slurmd"
666+ curl -s -o "${SLURM_ROOT}/scripts/imex_prolog" \
667+ https://raw.githubusercontent.com/GoogleCloudPlatform/slurm-gcp/master/tools/prologs-epilogs/imex_prolog
668+ chmod 0755 "${SLURM_ROOT}/scripts/imex_prolog"
669+ ln -s "${SLURM_ROOT}/scripts/imex_prolog" "${SLURM_ROOT}/prolog_slurmd.d/imex_prolog.prolog_slurmd"
670+ curl -s -o "${SLURM_ROOT}/scripts/imex_epilog" \
671+ https://raw.githubusercontent.com/GoogleCloudPlatform/slurm-gcp/master/tools/prologs-epilogs/imex_epilog
672+ chmod 0755 "${SLURM_ROOT}/scripts/imex_epilog"
673+ ln -s "${SLURM_ROOT}/scripts/imex_epilog" "${SLURM_ROOT}/epilog_slurmd.d/imex_epilog.epilog_slurmd"
666674 - type : data
667675 destination : /opt/apps/system_benchmarks/run-nccl-tests-via-ramble.sh
668676 source : $(vars.benchmark_dir)/run-nccl-tests-via-ramble.sh
@@ -689,74 +697,3 @@ deployment_groups:
689697 switch_type : switch/nvidia_imex
690698 controller_state_disk : null
691699 controller_startup_script : $(controller_startup.startup_script)
692- prolog_scripts :
693- - filename : imex_prolog.sh
694- content : |
695- #!/usr/bin/env bash
696- if ! systemctl list-unit-files --all | grep -Fq "nvidia-imex.service"; then
697- exit 0
698- fi
699-
700- activate_imex() {
701- set -ex
702-
703- # Clean the config file in case the service gets started by accident
704- > /etc/nvidia-imex/nodes_config.cfg
705-
706- NVIDIA_IMEX_START_TIMEOUT=80
707- IMEX_CONN_WAIT_TIMEOUT=70
708- IMEX_SHUTDOWN_WAIT=60
709- NVIDIA_IMEX_STOP_TIMEOUT=15
710- DOMAIN_READY_TIMEOUT=15
711- IMEX_SERVER_PORT=1101
712- IMEX_CMD_PORT=1102
713- # clean up prev connection
714- set +e
715- timeout $NVIDIA_IMEX_STOP_TIMEOUT systemctl stop nvidia-imex
716- pkill -9 nvidia-imex
717- set -e
718-
719- # update peer list
720- scontrol -a show node "${SLURM_NODELIST}" -o | sed 's/^.* NodeAddr=\([^ ]*\).*/\1/' > /etc/nvidia-imex/nodes_config.cfg
721-
722- # rotate server port to prevent race condition
723- sed -i "s/SERVER_PORT.*/SERVER_PORT=${IMEX_SERVER_PORT}/" /etc/nvidia-imex/config.cfg
724-
725- # enable imex-ctl on all nodes so you can query imex status with: nvidia-imex-ctl -a -q
726- sed -i "s/IMEX_CMD_PORT.*/IMEX_CMD_PORT=${IMEX_CMD_PORT}/" /etc/nvidia-imex/config.cfg
727- sed -i "s/IMEX_CMD_ENABLED.*/IMEX_CMD_ENABLED=1/" /etc/nvidia-imex/config.cfg
728-
729- # set timeouts for start
730- sed -i "s/IMEX_CONN_WAIT_TIMEOUT.*/IMEX_CONN_WAIT_TIMEOUT=${IMEX_CONN_WAIT_TIMEOUT}/" /etc/nvidia-imex/config.cfg
731-
732- sleep ${IMEX_SHUTDOWN_WAIT}
733- netstat -na | grep tcp | grep ":${IMEX_SERVER_PORT}" || true
734- netstat -na | grep tcp | grep ":${IMEX_CMD_PORT}" || true
735-
736- timeout $NVIDIA_IMEX_START_TIMEOUT systemctl start nvidia-imex
737-
738- sleep ${DOMAIN_READY_TIMEOUT}
739- }
740- activate_imex >> "/var/log/slurm/imex_prolog_${SLURM_JOB_ID}.log" 2>&1
741- epilog_scripts :
742- - filename : imex_epilog.sh
743- content : |
744- #!/usr/bin/env bash
745- set -ex
746-
747- if ! systemctl list-unit-files --all | grep -Fq "nvidia-imex.service"; then
748- exit 0
749- fi
750-
751- # Clean the config file in case the service gets started by accident
752- > /etc/nvidia-imex/nodes_config.cfg
753-
754- NVIDIA_IMEX_STOP_TIMEOUT=30
755-
756- # clean up connection
757- set +e
758-
759- timeout $NVIDIA_IMEX_STOP_TIMEOUT systemctl stop nvidia-imex
760-
761- pkill -9 nvidia-imex
762- set -e
0 commit comments