задание на выполнение грязного скрипта, распараллеливание скрипта на разных папках - PullRequest
1 голос
/ 27 сентября 2019

Сценарий detect.py выполняет некоторый анализ:

#!/usr/bin/python
[...]
for i in range(X, Y):
[...]

Идея состоит в том, чтобы запустить этот скрипт Python внутри некоторых папок.Эта переменная X и Y изменяется в зависимости от папки, в которой мы находимся.

Это выполнение контролируется следующим prepare.sh сценарием:

#!/usr/bin/bash
# Each folder has this name:
# 0.001-0.501
# 0.002-0.502
# 0.003-0.503
# ... and so on, up to:
# 8.500-9.000
# So we create the folders array:

lower_limit_f=($(seq 0.001 0.001 8.5))
upper_limit_f=($(seq 0.501 0.001 9))

FOLDERS=( )
for i in ${!lower_limit_f[*]}  ; do
    FOLDERS+=("${lower_limit_f[$i]}-${upper_limit_f[$i]}")
done

# Now we create two more arrays:
# lower_limit, which contains all possible values of `X`
# and upper_limit, which contains all possible values of `Y`

lower_limit=($(seq 1 1 8500))
upper_limit=($(seq 501 1 9000))

# Now I loop over all `FOLDERS`:
for i in ${!FOLDERS[*]}  ; do

    # I copy the python script to each folder
    cp detect.py ./${FOLDERS[$i]}

    cd ./${FOLDERS[$i]}

    # I make the substitution of `X` and `Y`, accordingly:                                                                                                       
    sed -i "s/0, len(traj)/${lower_limit[$i]}  , ${upper_limit[$i]}/g" detect.py

     # we execute:
    python detect.py
    cd -

done

Проблема с этимчто существует 8500 папок, и это выполняется последовательно.

Я хотел бы отправить эти задания в slurm следующим образом:

  • Выделение 1 узла (40 ядер)
  • 40 detect.py для индивидуальной работы на 40 папках.
  • Если detect.py завершено в данной папке, он оставляет 1 ядро ​​доступным для использования в следующей папке.

Это будет следующий run.sh сценарий sbatch длябыть отправлено в очередь slurm как sbatch run.sh:

#!/bin/sh

#SBATCH --job-name=detect                
#SBATCH -N 1
#SBATCH --partition=xeon40
#SBATCH -n 40
#SBATCH --time=10:00:00

...

Как это можно отправить в этом run.sh сценарии?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...