2011-10-07 32 views
5

Vì vậy chút mã này:Làm thế nào để chạy đa lõi trên một macbook pro với 2 lõi?

library(plyr) 
library(doMC) 
registerDoMC(cores=2) 
x=1:100 
llply(x, some_function, .parallel=TRUE) 

thất bại với một lỗi như vậy:

__THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() 

lỗi biến mất khi tôi chạy R từ thiết bị đầu cuối. Vì vậy, nó là một cái gì đó về GUI mà phá vỡ nó. Thật không may, tôi chia sẻ mã này với các cộng tác viên và vì vậy tôi không thể yêu cầu họ chạy nó từ thiết bị đầu cuối. Điều này có nghĩa là forum post nói Dường như vấn đề này w/phụ trợ doMC đã đến từ của tôi đã được tìm nguồn cung ứng các "/Applications/R.app/Contents/Resources/GUI- tools.R" nhưng tôi không cố ý làm điều đó trong R.app. Có cách nào để tắt hành vi xung đột này không?

Thông số máy Mac của tôi: Cũng chạy R GUI 2.13.1. OSX 10.7.1, doMC Phiên bản 1.2.3 với 64bit R.app. Cũng có MB Pro 2.53 với Intel Core 2 Duo

+0

Bạn đang chạy mã này từ GUI thô, phải không? –

+0

Không thể sao chép trong R 2.13.1 với OSX 10.5.8 bằng doMC ver 1.2.3 trong 64bit R.app –

+0

Tôi có lẽ nên thêm vào mô tả thiết lập của mình: MacBookPro5,3 w/Intel Core 2 Duo (... và bạn nên thêm vào mô tả của mình.) –

Trả lời

1

Yêu cầu trên R-SIG-Mac nếu bạn muốn có câu trả lời thực;). Điều này không có gì để làm với các công cụ GUI, nó đã làm với vòng lặp sự kiện ca cao chạy trong trẻ em - xem? Multicore cho cảnh báo về GUI. Bạn có thể muốn cập nhật lên đa lõi gần đây hơn mà vô hiệu hóa vòng lặp sự kiện trong GUI (nếu có thể). Cũng tránh bất kỳ cuộc gọi đồ họa Quartz nào trong mã bạn chạy.

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