1

まず最初に、私は R プログラミングにはかなり精通していますが、*nix 環境と並列コンピューティングの両方についてはまったくの初心者です。R の「parallel」、「foreach」、およびさまざまな「do_」パッケージに精通していますが、ローカル マシンで複数のコアを利用する場合のみです。

多数のノードを備えた (OpenSUSE 上で実行されている) コンピューターのローカル Linux クラスターを使用できます。これらのノードにはすべて R がインストールされています。通常、ノードの 1 つだけで作業しようとしている場合は、PuTTY を使用して、最初にヘッド ノード (ユーザー名 + pwd) に SSH 接続し、次に (内部?) ノードの 1 つに接続します。ただし、ローカルの Windows ワークステーションで R を実行し、コンピューターのクラスターにジョブを送信できるようにしたいと考えています。

このノードのクラスターを Windows マシンの並列バックエンドとして設定することはできますか? もしそうなら、これを行う最も適切な方法は何ですか?

編集:

おそらく、質問を少し絞り込むことができます。ヘッド ノードで R プロセスを開き、次のように実行するのは簡単です。

library( parallel )
nodes <- c("n01", "n02", "n03") ## the nodes
cl <- makePSOCKcluster( nodes )
setDefaultCluster( cl )

さて、ローカル R セッションを、ヘッド ノードで実行されているこの R セッションと簡単な方法で接続することは可能ですか? たとえば、理想的には、次の形式のコードを自分のコンピューターに書きたいと思います (疑似コード):

clusterConnection <- connect("<cluster>")
f <- function() { clusterApply( cl, 1:10, sum( rnorm(1E7) ) ) }
results <- evaluate( f, clusterConnection )

これにより、'evaluate' はマジックを実行して関数 'f' をヘッド ノードに送信し、それを評価して、結果をローカル コンピューターに戻し、'results' に保存します。

この種のインターフェースを処理する R 関数、パッケージ、またはその他の方法はありますか?

4

1 に答える 1

0

私はかなり適切な解決策を見つけました。Rserve を使用してヘッド ノードに R サーバーをセットアップし、ソケット接続を介して接続します。CRAN の Rserve ライブラリは、サーバー上の特定の機能を評価し、ローカル コンピューターで結果を受け取るための一連のユーティリティ関数も提供します。

于 2012-10-20T17:34:53.097 に答える