Вы можете использовать GNU параллельно в ваших интересах в таком случае:
#SBATCH stuf....
parallel --joblog ./jobs.log -P 3 "srun -n1 --exclusive ./myprog {} >& task{}.log " ::: {1..3}
Это будет выполнено srun ./mprog
три раза с аргументами соответственно 1, 2 и 3 и перенаправит вывод на три файла с именами task1.log
, task2.log
и task3.log
, как это делает ваш for
-loop.
С помощью опции --joblog
он, кроме того, создаст файл jobs.log
, который будет содержать некоторую информацию о каждом запуске, в том числе код завершения, в столбце 7. Затем вы можете извлечь максимум с помощью
awk 'NR>1 {print $7}' jobs.log | sort -n | tail -1