2011-08-29 10 views
8

Yerel makinede çalışan bir SOCK kümesi kullanarak paralel bir işlem yapıyorum. Kümeyi sınırlandırırsam yineliyorum (tam bir 135 görev yerine 70 kullanarak bir testte), her şey iyi çalışıyor. Eğer tam set için gidersem, hata mesajını "unserialize (socklist [[n]]) hatası: bağlantıdan okuma hatası"."Unserialized" hatası - foreach/doSNOW/kar SOCK (windows) ile

  • Windows Güvenlik Duvarı'nda (her iki giriş/çıkış) bağlantı noktasını engelledim ve Rscript/R için tüm erişime izin verdim.

  • Yuva zaman aşımı 365 gün olarak ayarlandığı için zaman aşımı sorunu olmaz.

  • Onun herhangi bir görev ile değil bir sorun ben çalıştırabilir çünkü sırayla gayet (ı yarısında veri kümesi bölmek ve eğer aynı zamanda paralel olarak iyi çalışır iki ayrı paralel çalışır)

  • gelebilirim iyi yukarıya doğru, soketler üzerinden aktarılan çok fazla veri var. Veri sınırlarını kısmak için bir küme seçeneği görünmüyor.

Nasıl devam edeceğimin bir kaybı yaşıyorum. Bu sorunu daha önce gören biri var mı, yoksa bir düzeltme önerisinde bulunabilir mi? İşte

kurulum için küme kullanıyorum kodu:

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

Edit
bu konunun tüm veri kümesi ile constent iken, aynı zamanda bir azalma ile zaman-to-time görünür Veri kümesi. Bu, bunun sadece bir veri limiti sorunu olmadığı anlamına gelebilir. 2

Düzenleme ben biraz daha derin kazılmış ve aslında benim işlevi bazen bir görev bir hata döndürür öyle yapar rastgele bileşenine sahip olduğu ortaya çıkar. Görevleri seri olarak yürütürsem, operasyonun sonunda hangi görevin başarısız olduğunu söyledim. Paralel koşarsam, "unserialize" hatasını alırım. Her görev tarafından çalıştırılan kodu error = function (e) {stop (e)} ile bir tryCatch çağrısında sarmayı denedim, ancak bu aynı zamanda "unserialize" hatasını da üretir. Kafam karıştı çünkü karın hataları ustaya geri göndererek hata yaptığını düşündüm.

+0

R, 128 eş zamanlı açık bağlantıyla sınırlıdır ... belki de bunun bir parçası mı? –

+0

8 bağlantıyla test yapıyorum. – SFun28

+0

Ama sorunuz, her şeyin 70 görevle iyi çalıştığını söylüyor, bu yüzden kafam karıştı. –

cevap

2

Bu konuyu SNOW'un yazarı için bildirdim ancak maalesef yanıt alınamadı.

Düzenle
Bu sorunu bir süredir görmedim. Paralel/doParallel'e geçtim. Ayrıca, şimdi paralel olarak yürütülen herhangi bir kodu sarmak için try() kullanıyorum. Orijinal sorunu tekrarlayamıyorum.

+0

Bu nasıl kar yağışı ve foreach ve/veya doSNOW değil bir hata nedir? –

+0

pozitif değil. Çalıştığım bir örnekle gelene kadar cevabım kontrol edilmedi. – SFun28

+0

Birden çok çalışan düğümünün sabit sürücüdeki aynı dosyadan okumaya çalıştığı anlaşılıyor. Aynı dosyaya yazılan, her türlü rastgele hataya neden olan birkaç modelde paralel yazdım. Bununla birlikte, fonksiyonun tam olarak ne işe yaradığına dair fazla bilgi vermezsiniz, eğer harddisk'e erişirse, bir dereceye kadar tahmin etmeyi bırakmış oluruz. –