SNOW を介して R に 4 つの CPU のクラスターがあるとします。
どのノードが実行されているかを調べるにはどうすればよいですか?
私はこのようなロジックをしたい:
IF (ノード 1) THEN ロジック 1 IF (ノード 2) THEN ロジック 2 IF (ノード 3) THEN ロジック 3 IF (ノード 4) THEN ロジック 4
IF 条件を実装するにはどうすればよいですか?
ありがとう!
SNOW を介して R に 4 つの CPU のクラスターがあるとします。
どのノードが実行されているかを調べるにはどうすればよいですか?
私はこのようなロジックをしたい:
IF (ノード 1) THEN ロジック 1 IF (ノード 2) THEN ロジック 2 IF (ノード 3) THEN ロジック 3 IF (ノード 4) THEN ロジック 4
IF 条件を実装するにはどうすればよいですか?
ありがとう!
クラスター内の各ワーカーの 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='-')
が、この例では少し厄介です。