Параллельные вычисления в bash с использованием сценария R - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь запустить некоторые модели распространения видов, используя скрипт R в bash. Поскольку у меня есть много растровых файлов в качестве предикторов для моих моделей, и мне нужно запустить один и тот же R-скрипт 20 раз (я использую функцию примера в своем R-скрипте, которая каждый раз генерирует один и тот же результат), я хочу запустить его параллельно ( 16 заданий) с использованием переменных оболочки.

Впервые я использую параллельную версию gnu, и я борюсь с двумя вещами:

1) Как я могу использовать назначенные переменные оболочки в качестве входных данных в моем скрипте?

2) Как мне запустить один и тот же R-скрипт 20 раз и сохранить каждый результат как число (например, первый анализ как $ model.1.tif)?

Ниже приведен скрипт, который я пытался запустить и (из конечно) не работает. Я ценю любую помощь.

Ps .: SMD.R - мой R-скрипт, в котором есть

occurdata <- args[1]
model.type <- args[2]
outputpath <- args[3]
predictors <- args[4:length(args)]

model=bioclim
Rscriptpath="Users/arpm/Scripts"
occurdata="Users/arpm/ocr"
outputpath="Users/arpm/output"
parallel -j 16 "Rscript $Rscriptpath/SDM.R $occurdata/ocr1.txt $model $outputpath/$model.{ }.tif $predictors" ::: {1..20}

1 Ответ

0 голосов
/ 13 апреля 2020

Звучит так, как будто вы хотите посмотреть на функцию parallel::mclapply. Вы можете выполнить распараллеливание внутри скрипта R и сохранить результаты в виде переменной.

results <- mclapply(1:20, some_function, additional_args, mc.cores = 16)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...