더북(TheBook)

07 | 병렬 처리

doMC[9]와 doParallel[10] 패키지는 멀티코어를 활용해 프로그램을 병렬적으로 수행할 수 있게 해준다. 멀티코어를 활용한다는 뜻은 여러 프로세스를 실행하고 각 프로세스가 개별 CPU 코어에서 돌아가게 한다는 의미다. 이 두 패키지는 ‘5.3 분할, 적용, 재조합을 통한 데이터 분석’ 절의 plyr 또는 ‘5.6 더 나은 반복문’ 절의 foreach와 결합해 편리하게 사용할 수 있다.

doMC와 doParallel의 저자에는 스티브 웨스턴Steve Weston이 올라 있다. 즉, 이 두 패키지는 한 개발자가 작성한 코드다. 그러나 doMC는 내부적으로 multicore와 foreach 패키지를 조합한 코드인 반면, doParallel은 multicore, foreach, snow의 세 패키지를 조합한 코드가 들어 있다는 차이가 있다. 특히 snow는 다수의 머신에 클러스터를 구현하는 기능을 제공하므로 doParallel이 더 많은 병렬화 선택지를 제공한다고 볼 수 있다.

또 다른 차이는 doMC가 사용하는 multicore는 내부적으로 fork를 사용해 프로세스를 실행시키므로 fork를 지원하지 않는 윈도우에서는 동작하지 않는다는 점이다. 따라서 윈도우의 경우 doParallel 패키지를 사용해야 한다.

이런 이유로 이 장에서는 doParallel 패키지를 기준으로 병렬화 방법을 설명하도록 한다. 다음은 doParallel을 설치 후 로드하는 명령이다.

> install.packages("doParallel")
> library(doParallel)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.