10

複数ノードの Linux クラスターで R を実行しています。MPI や Snow などの並列計算ソフトウェアを使用せずに、スクリプトまたはバッチ モードを使用して R で分析を実行したいと考えています。

これは、各ノードがデータの異なる部分を実行するように入力データを分割することで実行できることを知っています。

私の質問は、どうすればこれを正確に行うことができますか? スクリプトのコーディング方法がわかりません。例は非常に役に立ちます!

これまで PBS を使用してスクリプトを実行してきましたが、R はシングル スレッド プログラムであるため、1 つのノードでしか実行されないようです。したがって、コードを調整してすべてのノードに労力を分散させる方法を理解する必要があります。

これが私がこれまでやってきたことです:

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)

どんな提案でも大歓迎です!ありがとうございました!

-CC

4

3 に答える 3

2

これはむしろPBSの質問です。私は通常、Rスクリプト(#!の後にRscriptパスを使用)を作成し、commandArgsこの現在のインスタンスが作成する「ジョブの一部」を制御するパラメーターを(関数を使用して)収集するようにします。私multicoreは多くのノードを使用するため、通常は3〜4ノードしか使用する必要がないため、可能な制御引数値のそれぞれを使用してこのRスクリプトを呼び出すジョブをいくつか送信します。
一方、の使用pbsdshはその仕事をする必要があります...次に、の値をPBS_TASKNUM制御パラメーターとして使用できます。

于 2010-06-29T21:48:07.567 に答える