2014-09-29 5 views
1

R에서 SNOW까지 4 개의 CPU 클러스터가 있다고합시다.Snow R : 현재 실행중인 노드 정보

어떤 노드가 실행되고 있는지 어떻게 알 수 있습니까?

나는이 같은 논리로 수행하려는 :

THEN (노드 1) logic1 IF (노드 2) 경우 logic2 IF (노드 3) THEN LOGIC (3) IF (노드 4) THEN logic4

어떻게 IF 조건을 구현할 수 있습니까?

감사합니다.

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

그런 다음 "노드 확인": 당신이 당신의 클러스터에있는 노동자들 각각에 대한 ID를 원하는 경우

답변

3

, 당신은 노동자의 각각에 전역 변수를 초기화하는 "clusterApply"를 사용할 수 있습니다

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 클러스터 눈을 사용하는 경우, 당신은 대신 "mpi.comm.rank"기능을 사용할 수 있지만 숫자 노동자 0에서에 n-1 : 논리는 다음과 같이 기록 될 수있다.

사람들은 종종 고유 한 작업자 ID로 paste(Sys.info()[['nodename']], Sys.getpid(), sep='-')과 같은 표현식을 사용하지만,이 예제에서는 다소 어색합니다.

+0

감사! 완전한! – EBW