2015-03-11 12 views
40

Sự khác biệt giữa doParalleldoMC trong R có liên quan đến chức năng foreach? doParallel hỗ trợ các cửa sổ, giống như Unix, trong khi doMC chỉ hỗ trợ kiểu tự động. Nói cách khác, tại sao doParallel không thể thay thế trực tiếp doMC? Cảm ơn bạn.sự khác biệt giữa doMC và doParallel trong R

Cập nhật: doParallel được xây dựng trên parallel, trong đó chủ yếu là sáp nhập multicoresnow và tự động sử dụng công cụ thích hợp cho hệ thống của bạn. Do đó, chúng tôi có thể sử dụng doParallel để hỗ trợ nhiều hệ thống. Nói cách khác, chúng tôi có thể sử dụng doParallel để thay thế doMC.

ref: http://michaeljkoontz.weebly.com/uploads/1/9/9/4/19940979/parallel.pdf

BTW, sự khác biệt là gì giữa registerDoParallel(ncores=3)

cl <- makeCluster(3) 
registerDoParallel(cl) 

Dường registerDoParallel(ncores=3) có thể ngăn chặn cụm tự động, trong khi thứ hai không dừng tự động và cần stopCluster(cl).

ref: http://cran.r-project.org/web/packages/doParallel/vignettes/gettingstartedParallel.pdf

+0

chỉ để hai người được liên kết http://stackoverflow.com/questions/28829300/doparallel-cluster-vs-cores?noredirect=1&lq=1 – Tony

+0

Bản sao có thể có của [doParallel, cluster vs cores] (https:// stackoverflow.com/questions/28829300/doparallel-cluster-vs-core) –

Trả lời

23

Gói doParallel là một sáp nhập doSNOWdoMC, nhiều càng parallel là một sáp nhập snowmulticore. Nhưng mặc dù doParallel có tất cả các tính năng của doMC, tôi đã được Rich Calaway of Revolution Analytics kể rằng họ muốn giữ nguyên hiệu quả hơn trong một số trường hợp, mặc dù doMC hiện sử dụng parallel giống như doParallel. Cá nhân tôi chưa chạy bất kỳ điểm chuẩn nào để xác định xem liệu có khi nào có sự khác biệt đáng kể hay không.

tôi có xu hướng sử dụng doMC trên Linux hoặc Mac OS X máy tính, doParallel trên một máy tính Windows, và doMPI trên một cụm Linux, nhưng doParallel làm việc trên tất cả các nền tảng.


Đối với các phương pháp đăng ký khác nhau, nếu bạn thực hiện:

registerDoParallel(cores=3) 

trên một máy Windows, nó sẽ tạo ra một đối tượng cụm ngầm để sử dụng sau với clusterApplyLB, trong khi trên Linux và Mac OS X , không có đối tượng cụm nào được tạo hoặc sử dụng. Số lượng lõi đơn giản được ghi nhớ và sử dụng làm giá trị của đối số mc.cores sau đó khi gọi mclapply.

Nếu bạn thực hiện:

cl <- makeCluster(3) 
registerDoParallel(cl) 

sau đó các đối tượng cụm đăng ký sẽ được sử dụng với clusterApplyLB bất kể nền tảng này. Bạn đúng là trong trường hợp này, bạn có trách nhiệm tắt đối tượng cụm từ khi bạn tạo nó, trong khi đối tượng cụm ẩn sẽ tự động tắt.

+1

Có những từ hoặc tài liệu nào về "hoàn cảnh nhất định" cho 'doMC' từ Rich Calaway of Revolution Analytics không? Ngoài ra, có bất kỳ sự khác biệt nào khi xem xét hiệu suất trong trường hợp 'ncores' và' makeCluster' không? Tôi đã phát triển một gói R [cogena] (https://github.com/zhilongjia/cogena), nơi mà song song đã được sao chép với 'doMC' ban đầu. Tôi vừa thay đổi nó thành 'doParallel' để hỗ trợ Windows vài giờ trước. Đó là một phức tạp liên quan đến "NAMESPACE' và' import' khi được thực hiện thông qua kết hợp 'doMC' và' doParallel'. Cảm ơn bạn. –

+0

@Zhilong Trong một gói R, tôi nghĩ bạn nên để người dùng cuối đăng ký bất kỳ phần phụ trợ nào hoạt động tốt nhất trên phần cứng của họ. Điều đó làm cho mã của bạn đơn giản và linh hoạt hơn. Đó là mục đích ban đầu của việc tách ra các phụ trợ và là cách mà caret và plyr làm điều đó, ví dụ. –

+0

Tôi đã nhận được ý tưởng của bạn. Cảm ơn bạn. Nếu có sự khác biệt hiệu suất trong máy chung, tôi sẽ làm như bạn đề nghị. Nếu không, tôi thích gói của tôi là dễ sử dụng cho đến nay. Tôi đã gửi email cho người duy trì 'doParallel' và sẽ cập nhật cho bạn. –

Các vấn đề liên quan