여러 코어를 자동으로 사용하는 R 패키지?
많은 계산이 필요한 프로그램 중 하나를 실행하는 동안 R이 하나의 코어 만 사용한다는 것을 알았습니다. 프로그램을 더 빠르게 실행하기 위해 멀티 코어 프로세서를 활용하고 싶습니다. 나는 아직 질문에 대해 깊이 조사하지 않았지만 컴퓨터 과학에 대한 좋은 지식이없고 해당 주제에 대해 쉽게 이해할 수있는 정보를 얻기가 어렵 기 때문에 귀하의 의견을 통해 도움을 주시면 감사하겠습니다.
R이 필요할 때 자동으로 여러 코어를 사용할 수 있도록하는 패키지가 있습니까?
그렇게 간단하지 않은 것 같아요.
R은 애드온 패키지를 통해서만 여러 코어를 사용할 수 있으며 일부 유형의 작업에만 사용할 수 있습니다. 옵션은 CRAN의 고성능 컴퓨팅 작업보기 에서 자세히 설명합니다.
업데이트 : R 버전 2.14.0에서 추가 기능 패키지는 R 과 함께 제공되는 권장 패키지로 병렬 패키지 가 포함되어 있기 때문에 반드시 필요한 것은 아닙니다 . parallel 에는 대부분 변경되지 않은 멀티 코어 및 스노우 패키지 의 기능이 포함되어 있습니다 .
멀티 프로세서를 활용하는 가장 쉬운 방법은 multicore
mclapply () 함수를 포함하는 패키지입니다. mclapply ()는 lapply ()의 멀티 코어 버전입니다. 따라서 lapply ()를 사용할 수있는 모든 프로세스는 mclapply () 프로세스로 쉽게 변환 할 수 있습니다. 그러나 멀티 코어는 Windows에서 작동하지 않습니다. 작년에 도움이 될만한 블로그 게시물을 작성했습니다 . Revolution Analytics 패키지 인 doSMP 는 R의 멀티 스레드 버전이 아닙니다. 사실상 Windows 버전의 멀티 코어입니다.
작업이 부끄러 울 정도로 병렬 적이라면 lapply () 유형의 구조화에 익숙해지는 것이 좋습니다. 그러면 mclapply () 및 동일한 추상화를 사용하는 분산 컴퓨팅으로 쉽게 이동할 수 있습니다.
"난처하게 병렬"되지 않은 작업의 경우 상황이 훨씬 더 어려워집니다.
[편집하다]
참고로 Rstudio는 R의 프런트 엔드로 점점 인기를 얻고 있습니다. 저는 Rstudio를 좋아하고 매일 사용합니다. 그러나 Rstudio는 Multicore에서 잘 작동하지 않는다는 점에 유의해야합니다 (적어도 2011 년 10 월 현재 ... RStudio 팀이이 문제를 해결할 것임을 이해합니다). 이는 Rstudio가 배후에서 몇 가지 분기를 수행하고 이러한 분기가 Multicore의 분기 시도와 충돌하기 때문입니다. 따라서 Multicore가 필요한 경우 Rstuido에서 코드를 작성할 수 있지만 일반 Jane R 세션에서 실행할 수 있습니다.
이 질문에 대해 당신은 항상 매우 짧은 대답을 얻습니다. 나에 따르면 가장 쉬운 해결책은 눈 을 기반으로 한 패키지 강설 입니다. 즉, 다중 코어가있는 Windows 단일 컴퓨터에서. 간단한 예 는 여기 Knaus et al 의 기사를 참조하십시오 . Snowfall은 snow 패키지를 둘러싼 래퍼이며 몇 가지 명령으로 멀티 코어를 설정할 수 있습니다. 대부분의 다른 패키지보다 번거롭지 않습니다 (모두 시도하지는 않았습니다).
참고로, 병렬화 할 수있는 작업은 실제로 거의 없습니다. 멀티 코어 계산이 이해되기 전에 작업을 분할 할 수 있어야한다는 매우 간단한 이유 때문입니다. 이 apply
제품군은 분명히 논리적 선택입니다. 다중 및 독립적 인 계산, 이는 다중 코어 사용에 중요합니다. 다른 것은 항상 쉽게 멀티 코어되는 것은 아닙니다.
sfApply 및 사용자 지정 함수 에 대한이 토론도 읽어보십시오 .
Microsoft R Open에는 R의 성능을 향상시키기위한 다중 스레드 수학 라이브러리가 포함되어 있으며 Windows / Unix / Mac 모든 OS 유형에서 작동합니다. 오픈 소스이며 기존 R (from CRAN) 설치가있는 경우 별도의 디렉토리에 설치할 수 있습니다. 인기있는 IDE Rstudio도 이것과 함께 사용할 수 있습니다. 처음부터 R은 한 번에 하나의 스레드 (프로세서) 만 사용하도록 설계되었습니다. 오늘날에도 R은 다중 스레드 BLAS / LAPACK 라이브러리와 연결되지 않는 한 그렇게 작동합니다.
오늘날의 멀티 코어 머신은 병렬 처리 능력을 제공합니다. 이를 활용하기 위해 Microsoft R Open에는 다중 스레드 수학 라이브러리가 포함되어 있습니다. 이러한 라이브러리를 사용하면 행렬 곱셈 / 역, 행렬 분해 및 일부 상위 수준 행렬 연산과 같은 많은 일반적인 R 연산이 병렬로 계산하고 사용 가능한 모든 처리 능력을 사용하여 연산 시간을 줄일 수 있습니다.
아래 링크를 확인하십시오 :
https://mran.revolutionanalytics.com/rro/#about-rro
http://www.r-bloggers.com/using-microsoft-r-open-with-rstudio/
David Heffernan이 말했듯이 혁명 분석 블로그를 살펴보십시오. 그러나 대부분의 패키지는 Linux 용이라는 것을 알아야합니다. 따라서 창을 사용하면 훨씬 더 어려울 것입니다. 어쨌든 다음 사이트를 살펴보십시오.
혁명 . 여기서 R의 패럴 러라이 제이션에 대한 강의를 찾을 수 있습니다. 강의는 실제로 매우 훌륭하지만 제가 말했듯이 대부분의 팁은 Linux 용입니다.
그리고 여기 Stackoverflow 의이 스레드 는 Windows에서의 일부 구현에 대해 설명합니다.
이 패키지 future
는 R
병렬 및 분산 처리 를 사용 하는 작업을 매우 간단하게 만듭니다 . 여기에 더 많은 정보가 있습니다 . 병렬 요소에 함수를 적용 할 경우, future.apply
패키지 (예 : "적용"가족 기능을 사용하는 빠른 방법을 제공 apply()
, lapply()
및 vapply()
병렬로).
예:
library("future.apply")
library("stats")
x <- 1:10
# Single core
y <- lapply(x, FUN = quantile, probs = 1:3/4)
# Multicore in parallel
plan(multiprocess)
y <- future_lapply(x, FUN = quantile, probs = 1:3/4)
참고 URL : https://stackoverflow.com/questions/4775098/r-package-that-automatically-uses-several-cores
'Program Tip' 카테고리의 다른 글
뮤텍스를 보유한 스레드를 확인할 수 있습니까? (0) | 2020.11.24 |
---|---|
DEFAULT 값없이 null이 아닌 열을 추가 할 수 있습니까? (0) | 2020.11.24 |
SVG에서 속이 빈 원 그리기 (0) | 2020.11.24 |
setInterval 콜백이 한 번만 실행되는 이유는 무엇입니까? (0) | 2020.11.24 |
Google 글꼴이 Google 크롬에서 렌더링되지 않습니다. (0) | 2020.11.24 |