R программирующий - отправляющие задания на нескольких узел кластер Linux использование PBS

Я выполняю R на нескольких узел кластер Linux. Я хотел бы выполнить свой анализ R использование сценариев или пакетного режима, не используя программное обеспечение параллельных вычислений, таких как MPI или снег.

Я знаю, что это может быть сделано путем деления входных данных, таким образом, что каждый узел выполняет различные части данных.

Мой вопрос состоит в том, как я иду об этом точно? Я не уверен, как я должен кодировать свои сценарии. Пример был бы очень полезен!

Я запускал свои скрипты до сих пор с помощью PBS, но это только, кажется, работает на одном узле, поскольку R является единственной программой потока. Следовательно, я должен выяснить, как скорректировать мой код, таким образом, он распределяет работу всем узлам.

Вот то, что я делал до сих пор:

1) командная строка:

> qsub myjobs.pbs

2) myjobs.pbs:

> #!/bin/sh
> #PBS -l nodes=6:ppn=2
> #PBS -l walltime=00:05:00
> #PBS -l arch=x86_64
> 
> pbsdsh -v $PBS_O_WORKDIR/myscript.sh

3) myscript.sh:

#!/bin/sh
cd $PBS_O_WORKDIR
R CMD BATCH --no-save my_script.R

4) my_script. R:

> library(survival)
> ...
> write.table(test,"TESTER.csv",
> sep=",", row.names=F, quote=F)

Любые предложения будут цениться!Спасибо!

Копия:

10
задан JD Long 30 June 2010 в 12:59
поделиться

1 ответ

Это скорее вопрос PBS; Обычно я создаю сценарий R (с путем Rscript после #!) И заставляю его собирать параметр (с помощью функции commandArgs ), который определяет, какую «часть задания» должен выполнять этот текущий экземпляр. Поскольку я часто использую многоядерный , мне обычно приходится использовать только 3-4 узла, поэтому я просто отправляю несколько заданий, вызывая этот сценарий R с каждым из возможных значений управляющего аргумента.
С другой стороны, использование pbsdsh должно сделать свою работу ... Тогда значение PBS_TASKNUM можно использовать в качестве управляющего параметра.

2
ответ дан 4 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: