Bất kỳ đề xuất để làm cho mã R sử dụng nhiều bộ xử lý?


28

Tôi có các tập lệnh R để đọc một lượng lớn dữ liệu csv từ các tệp khác nhau và sau đó thực hiện các tác vụ học máy như svm để phân loại.
Có thư viện nào để sử dụng nhiều lõi trên máy chủ cho R.
hoặc
cách nào phù hợp nhất để đạt được điều đó không?


Tôi chỉ không thấy thực tế là việc nhập dữ liệu và chạy SVM có liên quan đến câu hỏi như thế nào. Đó là lý do tại sao tôi nghĩ đó là một câu hỏi SO. Nhưng tôi có thể thấy Xrefs là một giải pháp lâu dài tốt vì nó là R ...
Shane

3
Tôi không có vấn đề với loại hỏi đáp này ở đây. R không phải là một ngôn ngữ chính thống (như Python hay Java) mà một đại lượng sẽ tự nhiên nói, "Ồ đây là một câu hỏi lập trình chung vì vậy tôi nên đến StackOverflow hoặc tương tự và hỏi điều này hoặc tìm giải pháp đó". Trên thực tế, đây là một câu hỏi cho danh sách gửi thư R hoặc trang web nhóm. Để phục vụ những nhà phân tích vừa chớm nở muốn học R, chúng ta cũng nên vui mừng khi có câu trả lời ở đây.
Paul

2
Bỏ phiếu để tiếp tục mở; rất phù hợp với các nhà thống kê bởi vì những cách mà các vấn đề của chúng ta có thể hoặc không thể chia thành các luồng song song có liên quan đến câu hỏi đang được hỏi.
russellpierce

@chl: Cảm ơn vì đã đẩy nó lên. Trên thực tế, tôi đã kiểm tra tất cả các tài liệu tham khảo phi thương mại từ chủ đề này ngay sau khi nó xuất hiện nhưng không thể tìm thấy bất cứ điều gì hoạt động trên Win 7 x64.
whuber

1
whuber, giải pháp tôi trình bày hoạt động với win 7 và không mang tính thương mại (đọc bài tôi liên kết để biết chi tiết). Nó được đóng gói với một môi trường thương mại nhưng nó có thể được tách ra khỏi nó (như bài viết của tôi cho thấy làm thế nào). Và bản thân mã là GPL ...
Tal Galili

Câu trả lời:


16

Nếu đó là trên Linux, thì đơn giản nhất là đa lõi . Ngoài ra, tôi khuyên bạn nên xem MPI (đặc biệt là với gói tuyết ).

Tổng quát hơn, hãy xem:

  1. Giao diện tính toán hiệu năng cao trên CRAN.
  2. "Trạng thái của nghệ thuật trong tính toán song song với R"

Cuối cùng, tôi khuyên bạn nên sử dụng gói foreach để trừu tượng hóa phần phụ trợ song song trong mã của bạn. Điều đó sẽ làm cho nó hữu ích hơn về lâu dài.


Tôi chủ yếu sử dụng đa lõi, tôi vẫn thích tuyết rơi hơn tuyết và Rmpi ​​vì khả năng chịu lỗi và giao diện sạch.

@mbq +1 cho tuyết rơi - tóm tắt tuyết hơn nữa và làm cho tính toán song song với R khá đơn giản.
Sharpie

6

Nếu bạn đang sử dụng GNU / Linux, các câu trả lời trước của Shane và Dirk là tuyệt vời.

Nếu bạn cần một giải pháp cho windows, có một bài trong bài này:

Xử lý đa song song với R (trên Windows)

Mặc dù gói chưa có trên CRAN. nó có thể được tải xuống từ liên kết đó.


5

Shane đúng. Cả đa lõiRmpi đều là người chiến thắng.

Phạm vi bao quát rộng hơn của chủ đề nằm trong Chế độ xem nhiệm vụ CRAN về tính toán hiệu năng cao . Điều này cũng liên kết đến một bài viết khảo sát khá gần đây về Tính toán song song với R từ JSS.

Cuối cùng, một vài ví dụ và mẹo thực hành có trong Hướng dẫn giới thiệu về HPC với R mà tôi đưa ra một lần - xem trang thuyết trình của tôi để biết bản sao gần đây nhất từ ​​tuần trước tại useR.


Vâng, mutexes cần thiết. Như tôi đã nhận xét về câu trả lời của bạn, tôi chỉ thấy phiên bản đầu tiên (thô) và hình dung rõ, tôi có thể mở rộng trên mc và Rmpi. Và sau đó bạn đã làm và tôi trông giống như một copycat. Cuộc sống là thế.
Dirk Eddelbuettel

Mặt khác, câu trả lời của tôi bắt nguồn từ việc đọc bài viết / bài thuyết trình của bạn trong quá khứ. Vì vậy, tôi đoán tôi cũng đang sao chép bạn.
Shane

5

Tôi nhận thấy rằng các câu trả lời trước thiếu một số cân nhắc chung về HPC.
Trước hết, cả hai gói này đều không cho phép bạn chạy song song một SVM. Vì vậy, những gì bạn có thể tăng tốc là tối ưu hóa tham số hoặc xác thực chéo, bạn vẫn phải viết các chức năng của riêng mình cho điều đó. Hoặc tất nhiên bạn có thể chạy công việc cho các bộ dữ liệu khác nhau song song, nếu đó là một trường hợp.
Vấn đề thứ hai là bộ nhớ; nếu bạn muốn truyền bá tính toán trên một vài máy tính vật lý, không có bữa ăn trưa miễn phí và bạn phải sao chép dữ liệu - ở đây bạn phải xem xét liệu có hợp lý để phân phối một bản sao dữ liệu trên các máy tính để lưu một số liên lạc. Mặt khác, nếu bạn muốn sử dụng nhiều lõi trên một máy tính, thì đa lõi đặc biệt thích hợp vì nó cho phép tất cả các tiến trình con truy cập vào bộ nhớ của tiến trình cha, vì vậy bạn có thể tiết kiệm thời gian và nhiều dung lượng bộ nhớ.


1
+1 Điểm tuyệt vời về cách điều này không giải quyết việc phân tách xác thực chéo.
Shane

Ngẫu nhiên, đã có một số công việc gần đây (2013) trong việc kích hoạt HPC cho các SVM riêng lẻ bằng dCSE ( hector.ac.uk/cse/distributioncse/reports/sprint03/ít ). Có một gói sprintdành cho R với chức năng psvm, nhưng chúng chậm hơn một chút khi theo kịp các thay đổi của R 3.0 và hướng dẫn gửi CRAN mới, vì vậy bản tải xuống hiện tại không có sẵn trên CRAN hoặc hoàn toàn tương thích với R 3.0. Số dặm của bạn có thể thay đổi.
ngôi sao sáng

3

Cả hai câu trả lời của Shane và Dirk đều được chú ý.

Tuy nhiên, bạn có thể muốn xem phiên bản thương mại của R, được gọi là Revolution R , được xây dựng để đối phó với các bộ dữ liệu lớn và chạy trên nhiều lõi. Phần mềm này miễn phí cho các học giả (có thể là trường hợp của bạn, tôi không biết)


5
Tôi không đồng ý phần nào. Revolution thực hiện một công việc bán hàng tuyệt vời trong việc thu hút sự chú ý (bằng chứng là bài đăng của bạn) nhưng hiện tại có rất ít sản phẩm bạn chưa có với R thông thường (ít nhất là trên Linux). Intel MKL, chắc chắn, nhưng bạn có thể nhận được Goto Blas. Trên Windows, họ cung cấp doSMP, giúp đa lõi không thể được xây dựng ở đó.
Dirk Eddelbuettel

2
Nhưng, tất nhiên, doSMP chính xác là những gì OP sẽ tìm kiếm nếu họ làm việc trong môi trường Windows.
russellpierce
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.