Один из способов сделать это - запросить все 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.