R로 멀티 스레딩을하고 싶습니다. 저는 C pthread 기능에 익숙합니다. 내가하고 싶은 것입니다 :r pthread-like functions
#initialisation
n=10
A <- numeric(n)
i=c(1:n/2)
# compute some indexes using the one function fun1
# equivalent in C with correct initialisation of t1 and attr:
## pthread_create(&t1, &attr, fun1, i)
A[i] <- fun1(length(i))
# compute other indexes using another function fun2
# equivalent in C with correct initialisation of t2 and attr:
## pthread_create(&t2, &attr, fun2, i)
A[-i] <- fun2(n-length(i))
# wait for the thread to finish
# equivalment in C:
## pthread_join(t1); pthread_join(t2)
# do something with the result
A
두 함수 fun1 및 Fun2에 내가 다음 단계를 수행하기 전에 완료해야하는 모든 스레드를 기다려야 원하는대로 사용 fork()
이 적절하다고 생각하지 않는 완전히 독립적이다. 2 개의 함수 fun1
과 fun2
의 결과와 함께.
가 [크랑 작업보기]에서보세요 (http://cran.r-project.org/web/views/HighPerformanceComputing.html). 그러나 먼저'fun1'과'fun2'의 효율성을 시도하고 최적화해야합니다. 잠재적 인 속도 향상은 엄청난 규모입니다 (Rcpp를 사용할 수도 있습니다). – Roland
내가 생각했던 것만 큼 명확하지 않을 수도 있습니다. 그런 것들을 다시하는 법을 이해하기위한 일반적인 코드를 원한다. 필자의 경우,'fun1'과'fun2'는'apply' 함수를 사용합니다. 이것은 최적화하기가 어렵습니다. 게다가'fun1'과'fun2'에서 할 일이 많아서 더 많은 함수 ('fun1','fun2'와'fun3')로 쉽게 확장 할 수있는 코드를 원합니다. –
최적화에 필요한'apply'를 사용하십시오. 결국,'apply'는 R 루프 일뿐입니다. 벡터 대수 또는 특수 함수 (예 :'colSums')를 사용할 수 없다면 Rcpp로 구현해야합니다. 그러나 R에서 병렬화에 대한 여러 가지 가능성이 있습니다. 몇 가지 조사를 수행하고 구체적인 질문을하십시오. – Roland