Tôi đang cố xử lý một loạt tệp csv và trả lại khung dữ liệu trong R, song song bằng cách sử dụng mclapply()
. Tôi có một máy 64 lõi, và tôi dường như không thể nhận được thêm rằng 1 lõi được sử dụng tại thời điểm này bằng cách sử dụng mclapply()
. Thực tế, nhanh hơn một chút để chạy lapply()
thay vì mclapply()
vào lúc này. Dưới đây là ví dụ cho thấy rằng mclapply() không sử dụng nhiều lõi hơn có sẵn:mclapply không sử dụng nhiều lõi
library(parallel)
test <- lapply(1:100,function(x) rnorm(10000))
system.time(x <- lapply(test,function(x) loess.smooth(x,x)))
system.time(x <- mclapply(test,function(x) loess.smooth(x,x), mc.cores=32))
user system elapsed
0.000 0.000 7.234
user system elapsed
0.000 0.000 8.612
Có một số mẹo để làm việc này không? Tôi đã phải biên dịch R từ nguồn trên máy tính này (v3.0.1), có một số cờ biên dịch mà tôi bỏ lỡ để cho phép forking? detectCores()
nói với tôi rằng tôi thực sự có 64 lõi để chơi với ... Bất kỳ mẹo nào được đánh giá cao!
Bạn đang sử dụng hệ điều hành nào? Nó không có vẻ liên quan đến trường hợp của bạn, nhưng đáng chú ý là 'mclapply' trên Windows chỉ là một trình bao bọc cho' lapply'. – Frank
Linux. Redhat để được chính xác. – reptilicus
Nếu bất kỳ ai cũng có thể xác minh rằng ví dụ trên thực sự tăng tốc với mclapply() cũng sẽ hữu ích. – reptilicus