Sto eseguendo un codice che richiede molto tempo per il calcolo. Ho reso il mio codice parallelo usando foreach()%dopar%
ed eseguito nel cluster.Errore raro rintracciabile
Funziona generalmente bene, ma a volte si blocca e ricevo il seguente errore: Error in { : task 4 failed - "missing value where TRUE/FALSE needed" Calls: %dopar% -> <Anonymous> Execution halted
Ora si dice Esecuzione fermato, ma solo per questo particolare nucleo così gli altri continuano a funzionare e alla fine non riesce a uscita, ma doesn Dimmi prima mano. Immagino sia un problema con un'istruzione if
. Ho provato a simulare il codice sul mio computer ma è così raro che non riesco a simularlo.
Il codice viene eseguito con facilità per 100 ore fino a 100.000 loop e solo uno di essi avrà esito negativo.
Le mie domande sono: Posso rintracciare dov'era l'errore? (Eseguo il codice su un cluster in modo da non avere tutte le belle cose Rstudio)
Inoltre, è possibile stampare ancora da un ciclo foreach()
anche se una delle attività si è arrestata?
O forse qualsiasi metodo che la gente usa per fare in modo che il crash si verifichi sul mio computer?
Posso scrivere il codice se necessario, si prega di chiedere se aiuta.
avvolgere il calcolo in un try(). Quindi avrai tutti i risultati e sarai in grado di investigare il problema –
@KarlForner: Non riesco a fare un lavoro 'try'. Continua a lamentarsi di 'Simboli imprevisti' quando è solo il mio codice ... C'è un modo speciale per usarlo? Non mi è affatto familiare. – TAllieri
'try' o' trycatch' è un buon consiglio. Un'altra possibilità è quella di registrare l'input * * (cioè il sottogruppo di dati j-th) utilizzato su ogni chiamata parallela, in modo da poter restringere il pezzo di dati che ha causato il problema. Nel frattempo, assicurati di avere il codice di convalida nella tua funzione, come controllare che 'length (something)> 0' e'! Is.na (qualcosa) 'siano' TRUE' prima di applicare 'if (qualcosa)' . –