2016-08-12 5 views
0

HPCでRコードを実行しようとしていますが、複数のノードを活用する方法がわかりません。私が使用している特定のHPCには、ノードあたり100ノードと36コアがあります。のマルチノード処理R

コードの例を次に示します。

n = 3600 ### This would be my ideal. Set to 3 on my laptop 
cl = makeCluster(n, "SOCK") 
foreach(i in 1:length(files), packages=c("raster","dismo")) %dopar% 
    Myfunction(files=files[i],template=comm.path, out = outdir) 

このコードはノートパソコンとHPCのログイン時に動作しますが、1つのノードしか使用していません。私はできるだけすべてのコアを利用していることを確認したい。

どのように具体的には複数のノードを活用するのですか、それとも「舞台裏で」行われていますか?

答えて

0

HPCクラスタで重大な問題がある場合は、SOCKではなくMPIクラスタを使用してください。 MPIは非共有メモリコンピューティングの標準であり、ほとんどのクラスタはMPI用に最適化されています。

HPCの場合は、Rを開始するためのジョブスクリプトも必要です。mpirunを使用するか、Rから直接ワーカーを呼び出すことができます。スケジューラはMPI環境を設定し、Rはどのノードを使用するかを決定します。あなたが最適なレベルに達するまで、4人の労働者と小規模に始め、数を増やしてください。ほとんどのタスクは3600 CPUを効率的に使用できません。

最後に、MPIで数十のCPUを使用している場合は、Rmpiパッケージの代わりにRhpcを使用することを強くお勧めします。より効率的なMPI通信を使用し、かなりの速度向上をもたらします。私は線に沿って何かを使用していますトルク制御システムで

は:

Rhpc_initialize() 
nodefile <- Sys.getenv("PBS_NODEFILE") 
nodes <- readLines(nodefile) 
commSize <- length(nodes) 
cl <- Rhpc_getHandle(commSize) 

Rhpc_Export(cl, c("data")) 
... 
result <- Rhpc_lapply(cl, 1:1000, runMySimulation) 
... 
Rhpc_finalize() 

TORQUE固有の部分は、このように私はどのように多くの労働者を作成するために知っている、nodefileの一部です。ジョブスクリプトでは、RをRscript >>output.txt myScript.Rとして開始します。

注:myfun(files, ...)は正しいですか?おそらくmyfun(files[i], ...)を意味するでしょうか?

どうすればいいですか?

関連する問題