Запустить два скрипта на одном узле - PullRequest
0 голосов
/ 18 мая 2018

У меня есть узел с 20 ядрами, и я хотел бы знать, как заставить два задания брать каждые 10 ядер этого узла.(Оба jobs.sh одинаковы, после запуска job.sh я изменяю параметры main.R, затем снова запускаю job.sh.)

#!/bin/bash
#SBATCH --job-name=main
#SBATCH --mail-use=abc@gmail.com
#SBATCH --mail-type=ALL
#SBATCH --nodes=1                # number of nodes
#SBATCH --ntasks-per-node=10     # number of cores
#SBATCH --time=24:00:00          # walltime
#SBATCH --output=sortie/job.out
#SBATCH --error=sortie/error.err

module load python
module load R
# module load openmpi

R CMD BATCH '--args ../../' main.R sortie/main.Rout

1 Ответ

0 голосов
/ 18 мая 2018

Один из способов сделать это - запросить все 20 ядер:

#SBATCH --ntasks-per-node=20

, а затем вызвать оба сценария R и запустить их в фоновом режиме.Каждое из них не должно использовать более 10 ядер.Поэтому не используйте функцию DetectionCores () или аналогичную для установки количества ядер в R, а установите число ядер равным 10:

R CMD BATCH '--args ../../' main1.R sortie/main1.Rout &
R CMD BATCH '--args ../../' main2.R sortie/main2.Rout &

wait

В то же время неясно, зачем вам нужнозапустить 2 скрипта в одном пакетном скрипте.Более оптимальным способом было бы отправить 2 задания с 10 ядрами, на которых по одному R-скрипту.Вы можете передать параметры в отправляемый вами сценарий оболочки, а затем использовать их для передачи вашему R-сценарию.Например,

Если вы запускаете сценарий R main.R и хотите передать 2 значения, вы можете сделать это в своем сценарии отправки:

module load R
Rscript main.R $1 $2

И затем дважды вызвать этот сценарий:

sbatch myscript.sh 3.14 outfile1.csv
sbatch myscript.sh 1.57 outfile2.csv

Тогда первое задание будет выполняться как:

Rscript main.R 3.14 outfile1.csv

И второе: Rscript main.R 1.57 outfile1.csv

Если вы предпочитаете формат R CMD BATCHлучше, чем Rscript, вы также можете использовать его.Просто используйте $ 1, $ 2 и т. Д. В качестве аргументов для скрипта R.

...