1

SNOW を介して R に 4 つの CPU のクラスターがあるとします。

どのノードが実行されているかを調べるにはどうすればよいですか?

私はこのようなロジックをしたい:

IF (ノード 1) THEN ロジック 1 IF (ノード 2) THEN ロジック 2 IF (ノード 3) THEN ロジック 3 IF (ノード 4) THEN ロジック 4

IF 条件を実装するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

3

クラスター内の各ワーカーの ID が必要な場合は、「clusterApply」を使用して各ワーカーのグローバル変数を初期化できます。

library(snow)
cl <- makeSOCKcluster(4)
clusterApply(cl, seq_along(cl), function(i) workerID <<- i)

次に、「ノード チェック」ロジックは次のように記述できます。

fun <- function(task) {
  if (workerID == 1)
    sqrt(task)
  else if (workerID == 2)
    log(task)
  else if (workerID == 3)
    log10(task)
  else if (workerID == 4)
    exp(task)
  else
    -1
}
clusterApplyLB(cl, 1:10, fun)

MPI クラスターで Snow を使用している場合は、代わりに "mpi.comm.rank" 関数を使用できますが、ワーカーに から0までの番号を付けn-1ます。

一意のワーカー IDなどの表現をよく使用しますpaste(Sys.info()[['nodename']], Sys.getpid(), sep='-')が、この例では少し厄介です。

于 2014-09-29T21:42:56.400 に答える