parallel 패키지 - parApply

효율적인 R 코드 작성

Colin Gillespie

Jumping Rivers & Newcastle University

parallel 패키지

  • 2011년부터 R에 포함
    library("parallel")
    
    • 크로스 플랫폼: Windows, Linux, Mac에서 동작
    • 표준 함수의 병렬 버전 제공
효율적인 R 코드 작성

apply() 함수

  • apply()는 for 루프와 유사

    • 행렬의 각 행/열에 함수를 _적용_
  • 열 10개, 행 10,000개의 행렬:

m <- matrix(rnorm(100000), ncol = 10)
  • apply는 for 루프보다 간결
res <- apply(m, 1, median)
효율적인 R 코드 작성

병렬로 변환하기

  • 패키지 로드
    • 코어 수 지정
    • 클러스터 객체 생성
    • parApply()로 교체
    • 중지!
library("parallel")
copies_of_r <- 7
cl <- makeCluster(copies_of_r)
parApply(cl, m, 1, median)
stopCluster(cl)
효율적인 R 코드 작성

주의할 점

Lewis Carroll의 말처럼

서두를수록 더 뒤처진다.

  • 스레드 통신 오버헤드로 병렬 실행이 더 느릴 수 있음
# Serial version
apply(m, 1, median)
# Parallel version
parApply(cl, m, 1, median)
  • 두 방법 모두 벤치마크 비교
효율적인 R 코드 작성

연습해 봅시다!

효율적인 R 코드 작성

Preparing Video For Download...