2011-08-29 22 views
8

Tôi đang chạy một hoạt động song song bằng cách sử dụng một cụm SOCK với công nhân trên máy cục bộ. Nếu tôi giới hạn các thiết lập tôi đang iterating hơn (trong một thử nghiệm bằng cách sử dụng 70 thay vì một nhiệm vụ đầy đủ 135) sau đó tất cả mọi thứ hoạt động tốt. Nếu tôi đi cho bộ đầy đủ, tôi nhận được errror "Lỗi trong unserialize (socklist [[n]]): lỗi đọc từ kết nối"."Lỗi trong unserialize" - foreach/doSNOW/tuyết với SOCK (windows)

  • Tôi đã bỏ chặn cổng trong Windows Firewall (cả trong/ngoài) và cho phép tất cả quyền truy cập cho Rscript/R.

  • Nó không thể là một vấn đề thời gian chờ vì thời gian chờ của ổ cắm được đặt thành 365 ngày.

  • của nó không phải là một vấn đề với bất kỳ nhiệm vụ cụ thể vì tôi có thể chạy liên tục tốt (còn chạy tốt song song nếu tôi chia các số liệu trong một nửa và làm hai chạy song song riêng biệt)

  • Điều tốt nhất tôi có thể đến với là có quá nhiều dữ liệu được truyền qua các ổ cắm. Dường như không có tùy chọn cụm để điều chỉnh giới hạn dữ liệu.

Tôi đang thua lỗ về cách tiến hành. Có ai nhìn thấy vấn đề này trước hoặc có thể đề xuất sửa chữa không?

Dưới đây là đoạn code tôi đang sử dụng để thiết lập các cụm:

cluster = makeCluster(degreeOfParallelism , type = "SOCK" , outfile = "") 
registerDoSNOW(cluster) 

Sửa
Trong khi vấn đề này được constent với toàn bộ dữ liệu, nó cũng xuất hiện từ thời gian đưa ra thời gian với một giảm tập dữ liệu. Điều đó có thể gợi ý rằng đây không chỉ là vấn đề giới hạn dữ liệu.

Sửa 2
tôi đào sâu hơn một chút và nó chỉ ra rằng chức năng của tôi trong thực tế có một thành phần ngẫu nhiên mà làm cho nó để đôi khi một nhiệm vụ sẽ nâng cao một lỗi. Nếu tôi chạy các nhiệm vụ serially sau đó ở phần cuối của hoạt động tôi đã nói với nhiệm vụ nào thất bại. Nếu tôi chạy song song, sau đó tôi nhận được lỗi "unserialize". Tôi đã thử gói mã được thực hiện bởi mỗi nhiệm vụ trong một cuộc gọi tryCatch với error = function (e) {stop (e)} nhưng điều đó cũng tạo ra lỗi "unserialize". Tôi bối rối vì tôi nghĩ tuyết sẽ xử lý lỗi bằng cách truyền lại cho chủ nhân?

+0

R được giới hạn trong 128 kết nối mở đồng thời ... có thể đó là một phần của nó? –

+0

Tôi đang thử nghiệm với 8 kết nối. – SFun28

+0

Nhưng câu hỏi của bạn nói rằng mọi thứ hoạt động tốt với 70 nhiệm vụ, vì vậy tôi bối rối. –

Trả lời

2

Tôi đã báo cáo vấn đề này với tác giả của SNOW nhưng tiếc là không có thư trả lời.

Chỉnh sửa
Tôi chưa gặp sự cố này trong một thời gian. Tôi đã chuyển sang Parallel/doParallel. Ngoài ra, bây giờ tôi đang sử dụng try() để bọc bất kỳ mã nào được thực hiện song song. Tôi không thể repro vấn đề ban đầu.

+0

Làm thế nào bạn tích cực đây là một lỗi trong tuyết và không foreach và/hoặc doSOW? –

+0

không dương. Bỏ chọn câu trả lời của tôi cho đến khi tôi có thể đưa ra một ví dụ làm việc. – SFun28

+0

Có vẻ như nhiều nút công nhân đang cố gắng đọc từ cùng một tệp trên đĩa cứng. Tôi đã có một số mô hình chạy song song taht đã viết cho cùng một tập tin, dẫn đến tất cả các loại lỗi ngẫu nhiên. Tuy nhiên, bạn không cung cấp nhiều thông tin chi tiết về chức năng chính xác, nếu nó truy cập ổ đĩa cứng, vì vậy chúng tôi được dự đoán ở một mức độ nào đó. –

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