Używam operacji równoległej przy użyciu klastra SOCK z pracownikami na komputerze lokalnym. Jeśli ograniczam zestaw, który przerabiałem (w jednym teście, używając 70 zamiast pełnych 135 zadań), wszystko działa dobrze. Jeśli przejdę do pełnego zestawu, otrzymam errror "Błąd w niezsobicie (lista-socklist [[n]]): błąd odczytu z połączenia"."Błąd w niezserializowaniu" - foreach/doSNOW/śnieg z SOCK (Windows)
Odblokowałem port w Zaporze systemu Windows (oba wejścia/wyjścia) i zezwolono na dostęp do Rscript/R.
Nie może to być problem z przekroczeniem limitu czasu, ponieważ limit czasu gniazda jest ustawiony na 365 dni.
To nie problem z danym zadaniem, ponieważ mogę uruchomić kolejno w porządku (również działa dobrze równolegle gdybym podzielić zbiór danych na pół i zrobić dwa oddzielne biegnie równolegle)
Najlepszym mogę przyjść z tym, że zbyt wiele danych jest przesyłanych przez gniazda. Wydaje się, że nie istnieje opcja klastrowania w celu ograniczenia przepustowości danych.
Nie rozumiem, jak postępować. Czy ktoś widział ten problem przed lub może zaproponować poprawkę?
Oto kod używam w konfiguracji klastra:
cluster = makeCluster(degreeOfParallelism , type = "SOCK" , outfile = "")
registerDoSNOW(cluster)
Edycja
Choć kwestia ta jest constent z całego zbioru danych, wydaje się również, od czasu do czasu ze zmniejszoną zbiór danych. Może to sugerować, że nie jest to po prostu problem z limitem danych.
Edycja 2
kopany głębiej i okazuje się, że moja funkcja w rzeczywistości ma losowy składnik, który sprawia, że tak, że czasami zadanie zgłosi błąd. Jeśli wykonuję zadania seryjnie, to po zakończeniu operacji powiedziano mi, które zadanie nie powiodło się. Jeśli pracuję równolegle, pojawia się błąd "unserialize". Próbowałem owijać kod, który jest wykonywany przez każde zadanie w wywołaniu tryCatch z error = function (e) {stop (e)}, ale także generuje błąd "unserialize". Jestem zdezorientowany, bo myślałem, że śnieg radzi sobie z błędami, przekazując je mistrzowi?
R jest ograniczone do 128 jednoczesnych połączeń otwartych ... może to część tego? –
Testuję z 8 połączeniami. – SFun28
Ale twoje pytanie mówi, że wszystko działa dobrze z 70 zadaniami, więc jestem zdezorientowany. –