Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/psij/launchers/scripts/aprun_launch.sh
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
#!/bin/bash

source $(dirname "$0")/launcher_lib.sh
source "${0%/*}/launcher_lib.sh"

_PSI_J_PROCESS_COUNT="$1"
shift

pre_launch

set +e
aprun -n $_PSI_J_PROCESS_COUNT "$@" 1>$_PSI_J_STDOUT 2>$_PSI_J_STDERR <$_PSI_J_STDIN
aprun -n "$_PSI_J_PROCESS_COUNT" "$@" 1>"$_PSI_J_STDOUT" 2>"$_PSI_J_STDERR" <"$_PSI_J_STDIN"
_PSI_J_EC=$?
set -e

log "Command done: $_PSI_J_EC"

post_launch

exit $_PSI_J_EC
exit "$_PSI_J_EC"
6 changes: 3 additions & 3 deletions src/psij/launchers/scripts/jsrun_launch.sh
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
#!/bin/bash

source $(dirname "$0")/launcher_lib.sh
source "${0%/*}/launcher_lib.sh"

_PSI_J_PROCESS_COUNT="$1"
shift

pre_launch

set +e
jsrun -p $_PSI_J_PROCESS_COUNT --np 1 "$@" 1>$_PSI_J_STDOUT 2>$_PSI_J_STDERR <$_PSI_J_STDIN
jsrun -p "$_PSI_J_PROCESS_COUNT" --np 1 "$@" 1>"$_PSI_J_STDOUT" 2>"$_PSI_J_STDERR" <"$_PSI_J_STDIN"
_PSI_J_EC=$?
set -e

log "Command done: $_PSI_J_EC"

post_launch

exit $_PSI_J_EC
exit "$_PSI_J_EC"
49 changes: 37 additions & 12 deletions src/psij/launchers/scripts/launcher_lib.sh
Original file line number Diff line number Diff line change
@@ -1,25 +1,50 @@
set -e

# abspath Source - https://stackoverflow.com/a/23002317
# Posted by Alexander Klimetschek, modified by community. See post 'Timeline' for change history
# Retrieved 2026-03-26, License - CC BY-SA 3.0

function _psi_j_abspath() {
if [[ $1 = /* ]]; then
echo "$1"
elif [[ $1 == */* ]]; then
echo "$(cd "${1%/*}"; pwd)/${1##*/}"
elif [ -n "$1" ]; then
echo "$(pwd)/$1"
fi
}

_PSI_J_JOB_ID="$1"
_PSI_J_LOG_FILE="$2"
_PSI_J_PRE_LAUNCH="$3"
_PSI_J_POST_LAUNCH="$4"
_PSI_J_STDIN="$5"
_PSI_J_STDOUT="$6"
_PSI_J_STDERR="$7"
_PSI_J_LOG_FILE=$(_psi_j_abspath "$2")
_PSI_J_PRE_LAUNCH=$(_psi_j_abspath "$3")
_PSI_J_POST_LAUNCH=$(_psi_j_abspath "$4")
_PSI_J_STDIN=$(_psi_j_abspath "$5")
_PSI_J_STDOUT=$(_psi_j_abspath "$6")
_PSI_J_STDERR=$(_psi_j_abspath "$7")

shift 7

if [ "$_PSI_J_LOG_FILE" == "" ]; then
_PSI_J_LOG_FILE="/dev/null"
fi

ts() {
while read LINE; do
TZ=UTC TS=`date '+%Y-%m-%d %H:%M:%S'`
echo "$TS $_PSI_J_JOB_ID $LINE"
done
}
if [ "${BASH_VERSINFO[0]}" -gt 4 ] || { [ "${BASH_VERSINFO[0]}" -eq 4 ] && [ "${BASH_VERSINFO[1]}" -ge 2 ]; }; then
ts() {
local TZ=UTC
while read LINE; do
printf -v TS '%(%Y-%m-%d %H:%M:%S)T' -1
echo "$TS $_PSI_J_JOB_ID $LINE"
done
}
else
ts() {
local TZ=UTC
while read LINE; do
TS=$(date '+%Y-%m-%d %H:%M:%S')
echo "$TS $_PSI_J_JOB_ID $LINE"
done
}
fi

log() {
echo "$@" >&3
Expand Down
14 changes: 7 additions & 7 deletions src/psij/launchers/scripts/mpi_launch.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

source $(dirname "$0")/launcher_lib.sh
source "${0%/*}/launcher_lib.sh"

_PSI_J_PROCESS_COUNT="$1"
shift
Expand All @@ -27,13 +27,13 @@ filter_out_5() {

set +e
if [ "$IS_OPENMPI_5" == "1" ]; then
mpirun --oversubscribe --output TAG -n $_PSI_J_PROCESS_COUNT "$@" \
1> >(filter_out_5 > $_PSI_J_STDOUT) 2> >(filter_out_5 > $_PSI_J_STDERR) <$_PSI_J_STDIN
mpirun --oversubscribe --output TAG -n "$_PSI_J_PROCESS_COUNT" "$@" \
1> >(filter_out_5 > "$_PSI_J_STDOUT") 2> >(filter_out_5 > "$_PSI_J_STDERR") <"$_PSI_J_STDIN"
elif [ "$IS_OPENMPI" == "1" ]; then
mpirun --oversubscribe --tag-output -q -n $_PSI_J_PROCESS_COUNT "$@" \
1> >(filter_out > "$_PSI_J_STDOUT") 2> >(filter_out > $_PSI_J_STDERR) <$_PSI_J_STDIN
mpirun --oversubscribe --tag-output -q -n "$_PSI_J_PROCESS_COUNT" "$@" \
1> >(filter_out > "$_PSI_J_STDOUT") 2> >(filter_out > "$_PSI_J_STDERR") <"$_PSI_J_STDIN"
else
mpirun -n $_PSI_J_PROCESS_COUNT "$@" 1>$_PSI_J_STDOUT 2>$_PSI_J_STDERR <$_PSI_J_STDIN
mpirun -n "$_PSI_J_PROCESS_COUNT" "$@" 1>"$_PSI_J_STDOUT" 2>"$_PSI_J_STDERR" <"$_PSI_J_STDIN"
fi
_PSI_J_EC=$?
set -e
Expand All @@ -42,4 +42,4 @@ log "Command done: $_PSI_J_EC"

post_launch

exit $_PSI_J_EC
exit "$_PSI_J_EC"
6 changes: 3 additions & 3 deletions src/psij/launchers/scripts/multi_launch.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

source $(dirname "$0")/launcher_lib.sh
source "${0%/*}/launcher_lib.sh"

pre_launch

Expand All @@ -9,8 +9,8 @@ _PSI_J_PROCESS_COUNT="$1"
shift
export _PSI_J_PROCESS_COUNT

for INDEX in $(seq 1 1 $_PSI_J_PROCESS_COUNT); do
_PSI_J_PROCESS_INDEX_=$INDEX "$@" 1>>$_PSI_J_STDOUT 2>>$_PSI_J_STDERR <$_PSI_J_STDIN &
for INDEX in $(seq 1 1 "$_PSI_J_PROCESS_COUNT"); do
_PSI_J_PROCESS_INDEX_=$INDEX "$@" 1>>"$_PSI_J_STDOUT" 2>>"$_PSI_J_STDERR" <"$_PSI_J_STDIN" &
PIDS="$PIDS $!"
done

Expand Down
4 changes: 2 additions & 2 deletions src/psij/launchers/scripts/single_launch.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#!/bin/bash

source $(dirname "$0")/launcher_lib.sh
source "${0%/*}/launcher_lib.sh"

pre_launch

set +e
"$@" 1>$_PSI_J_STDOUT 2>$_PSI_J_STDERR <$_PSI_J_STDIN
"$@" 1>"$_PSI_J_STDOUT" 2>"$_PSI_J_STDERR" <"$_PSI_J_STDIN"
_PSI_J_EC=$?
set -e
log "Command done: $_PSI_J_EC"
Expand Down
4 changes: 2 additions & 2 deletions src/psij/launchers/scripts/srun_launch.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#!/bin/bash

source $(dirname "$0")/launcher_lib.sh
source "${0%/*}/launcher_lib.sh"

_PSI_J_PROCESS_COUNT="$1"
shift

pre_launch

set +e
srun "$@" 1>$_PSI_J_STDOUT 2>$_PSI_J_STDERR <$_PSI_J_STDIN
srun "$@" 1>"$_PSI_J_STDOUT" 2>"$_PSI_J_STDERR" <"$_PSI_J_STDIN"
_PSI_J_EC=$?
set -e

Expand Down
14 changes: 7 additions & 7 deletions tests/plugins1/_batch_test/test/launcher.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

source $(dirname "$0")/launcher_lib.sh
source "${0%/*}/launcher_lib.sh"

pre_launch

Expand All @@ -18,20 +18,20 @@ export _PSI_J_PPN
EXECUTABLE="$1"
shift
if [ "$EXECUTABLE" == "/bin/hostname" ]; then
EXECUTABLE=$(dirname "$0")/hostname
EXECUTABLE="${0%/*}/hostname"
fi

log "Running stuff"
log "STDOUT: $_PSI_J_STDOUT"
log "STDERR: $_PSI_J_STDERR"
log "STDOUT: \"$_PSI_J_STDOUT\""
log "STDERR: \"$_PSI_J_STDERR\""

for NODE in $(seq 1 1 $_PSI_J_NODE_COUNT); do
for NODE in $(seq 1 1 "$_PSI_J_NODE_COUNT"); do
log "Node: $NODE"
for NODE_PROC in $(seq 1 1 $_PSI_J_PPN); do
for NODE_PROC in $(seq 1 1 "$_PSI_J_PPN"); do
log "Node proc: $NODE_PROC"
INDEX=$(($NODE * $_PSI_J_PPN + $NODE_PROC))
log "Index: $INDEX"
_PSI_J_NODE_INDEX_=$NODE _PSI_J_PROCESS_INDEX_=$INDEX "$EXECUTABLE" "$@" 1>>$_PSI_J_STDOUT 2>>$_PSI_J_STDERR <$_PSI_J_STDIN &
_PSI_J_NODE_INDEX_=$NODE _PSI_J_PROCESS_INDEX_=$INDEX "$EXECUTABLE" "$@" 1>>"$_PSI_J_STDOUT" 2>>"$_PSI_J_STDERR" <"$_PSI_J_STDIN" &
PIDS="$PIDS $!"
done
done
Expand Down
2 changes: 1 addition & 1 deletion tests/test_nodefile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ if [ "$EXPECTED_N_NODES" == "" ]; then
exit 3
fi

ACTUAL_N_NODES=`cat "$PSIJ_NODEFILE" | wc -l`
ACTUAL_N_NODES=$(wc -l < "$PSIJ_NODEFILE" | tr -d ' ')

if [ "$EXPECTED_N_NODES" != "$ACTUAL_N_NODES" ]; then
echo "Invalid node file. Expected $EXPECTED_N_NODES nodes, but got $ACTUAL_N_NODES."
Expand Down
Loading