2013-07-09 17 views
7

私はバックエンドにいくつかのノードで動作するWindows HPCサーバーを持っています。私はバックエンドから複数のノードを使ってParallel Rを実行したいと思います。 Parallel RはWindows上でSNOWを使用している可能性がありますが、それについてはあまり確かではないと思います。私の質問は、私はバックエンドノードにもRをインストールする必要がありますか?今Windowsクラスタ上の並列R

cl <- makeCluster(c(rep("COMP01",32),rep("COMP02",32)),type="SOCK") 

、それだけでハング: は、私は2つのノード、ノードあたり32個のコアを使用してみたいと思います。

その他に何が必要ですか?バックエンドノードは、互いに通信できるように何らかのsshdを実行する必要がありますか?

+1

はい、各ノードにRをインストールする必要があります。 –

+1

@HongOoiと私はRの場所を指定する必要がありますか、それはデフォルトのものを取るだけですか? – Manolete

答えて

7

Windowsクラスタにsnowを設定することはかなり困難です。それぞれのマシンにRとsnowがインストールされている必要がありますが、それは簡単な部分です。 SOCKクラスタを起動するには、各ワーカーマシンでsshdデーモンが動作している必要がありますが、それでも問題に陥る可能性があるので、デバッグやWindowsシステム管理がうまくいかなければ、お勧めしません。

私はWindowsクラスタ上のあなたの最善の選択肢はMPIを使用することだと思います。私はWindows上でMPIを経験したことはありませんが、Windows用のMPICHおよびDeinoMPI MPIディストリビューションで成功した人について聞いたことがあります。 MPIをクラスタにインストールしたら、それぞれのワーカーマシンにソースからRmpiパッケージをインストールする必要があります。その後、makeMPIcluster関数を使用してクラスタオブジェクトを作成します。これは大変な作業ですが、Windows上のssh/sshdの問題のためにSOCKクラスタを使用しようとするよりも最終的に機能する可能性が高いと思います。

Windowsクラスタで並列ジョブを1〜2回実行する必要がある場合は、手動モードを試してみてください。それはあなたがSSHなしSOCKクラスタを作成することができます:

workers <- c(rep("COMP01",32), rep("COMP02",32)) 
cl <- makeSOCKluster(workers, manual=TRUE) 

makeSOCKcluster機能は、それぞれに使用するコマンドを表示し、労働者のそれぞれを起動するように求められます。指定したマシンでコマンドウィンドウを手動で開き、指定されたコマンドを実行する必要があります。特に多くの労働者にとっては非常に退屈なことがありますが、少なくともそれは複雑でも面倒でもありません。 outfile=''オプションと組み合わせてデバッグする場合にも非常に便利です。

+0

@_Steve Weston:助けてくれてありがとうSteve。あなたが "手動モード"と言って並列ジョブを実行すると、どういう意味ですか? – Manolete

+0

@Manoleteあなたの質問に答えるためにマニュアルモードに関する詳細を追加しました。 –

+0

+1最初の2つの段落は非常に便利です。これを説明するガイド/ドキュメントがない理由は何ですか? – TMS

関連する問題