Codice si blocca a 1.000.000 di iterazioni
-
- Scoppiettante Seguace
- Messaggi: 816
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Codice si blocca a 1.000.000 di iterazioni
Ho sviluppato un codice che in base a come lo configuro mangia tutto: ram, cpu, gpu.
Se lo configuro con parametri "meno esosi" a livello di memoria, il codice sembra funzionare e proseguire, altrimenti si ferma esattamente a 1.000.000 di iterazioni (non da errori ne nulla).
E' possibile che sia un problema di memoria?
Se lo configuro con parametri "meno esosi" a livello di memoria, il codice sembra funzionare e proseguire, altrimenti si ferma esattamente a 1.000.000 di iterazioni (non da errori ne nulla).
E' possibile che sia un problema di memoria?
Re: Codice si blocca a 1.000.000 di iterazioni
Se spiegassi che cosa faccia questo codice e in che linguaggio sia stato scritto sarebbe più facile aiutarti nei tuoi problemi di overflow
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
-
- Scoppiettante Seguace
- Messaggi: 816
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Re: Codice si blocca a 1.000.000 di iterazioni
C++, cicla, fa calcoli e inserisce in un unorderd_map degli oggetti con i risulti (che poi rituilizza per fare i calcoli dei successivi oggetti).
Ultima modifica di TommyB1992 il martedì 30 maggio 2023, 20:13, modificato 1 volta in totale.
- DoctorStrange
- Imperturbabile Insigne
- Messaggi: 2734
- Iscrizione: mercoledì 14 ottobre 2015, 9:33
- Desktop: Gnome3
- Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
- Sesso: Maschile
- Località: Roma, Italia
Re: Codice si blocca a 1.000.000 di iterazioni
Non mi è chiaro se il fatto che saturi tutte le risorse sia intenzionale, come ad esempio una fork bomb, oppure un effetto indesiderato. In questo secondo caso, visto che sviluppi in C++, ti sei assicurato di chiudere tutti gli handle rimasti aperti ed allocati, usando le varie chiamate "close" a tutti i metodi che usi?
-
- Scoppiettante Seguace
- Messaggi: 816
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Re: Codice si blocca a 1.000.000 di iterazioni
Non è intenzionale, semplicemente deve esplorare dei nodi, se gli dico di esplorarne solo una piccola percentuale, fa male i calcoli perchè non riesce a essere preciso, se gli dico di esplorarne troppi, diventa troppo lento (o in questo caso si blocca), perciò vado a tentativi cercando una via di mezzo e guardando i risultati che mi fornisce.DoctorStrange ha scritto: ↑martedì 30 maggio 2023, 18:40Non mi è chiaro se il fatto che saturi tutte le risorse sia intenzionale, come ad esempio una fork bomb, oppure un effetto indesiderato. In questo secondo caso, visto che sviluppi in C++
Presumo di si, altrimenti non funzionerebbe anche quando dico di "esplorare meno nodi" (che comunque rimangono tanti computazionalmente parlando).DoctorStrange ha scritto: ↑martedì 30 maggio 2023, 18:40ti sei assicurato di chiudere tutti gli handle rimasti aperti ed allocati, usando le varie chiamate "close" a tutti i metodi che usi?
- Rafbor
- Prode Principiante
- Messaggi: 127
- Iscrizione: domenica 13 febbraio 2022, 18:22
- Desktop: Xubuntu
- Distribuzione: 22.04.3 LTS
- Località: Francia
Re: Codice si blocca a 1.000.000 di iterazioni
Ciao, prova a eseguire il comando
ogni 100.000 iterazioni, per esempio, per vedere se la memoria si riempie.
Forse devi liberare memoria distruggendo gli oggetti non più necessari con il comando delete.
Codice: Seleziona tutto
free -m
Forse devi liberare memoria distruggendo gli oggetti non più necessari con il comando delete.
-
- Scoppiettante Seguace
- Messaggi: 816
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Re: Codice si blocca a 1.000.000 di iterazioni
Rafbor ha scritto: ↑martedì 30 maggio 2023, 19:13Ciao, prova a eseguire il comandoogni 100.000 iterazioni, per esempio, per vedere se la memoria si riempie.Codice: Seleziona tutto
free -m
Forse devi liberare memoria distruggendo gli oggetti non più necessari con il comando delete.
Codice: Seleziona tutto
tomas@tomas-tobefilledbyoem:~/Desktop/Projects/thirdparty/Scraper/myversion$ free -m
total used free shared buff/cache available
Mem: 15899 15574 146 6 177 69
Swap: 16280 4430 11850
- Actarus5
- Prode Principiante
- Messaggi: 215
- Iscrizione: mercoledì 3 luglio 2013, 17:15
- Desktop: Mate
- Distribuzione: Fedora
- Località: Abutalabashuneba
Re: Codice si blocca a 1.000.000 di iterazioni
Hai provato ad usare valgrind? È un tool molto utile per tracciare eventuali memory leak, anche se non è detto che la causa sia questa vale la pena provarci
"An extremely helpful console message: “SPANK! SPANK! SPANK! Naughty programmer!”. Really, I’m not joking about that one."
- Rafbor
- Prode Principiante
- Messaggi: 127
- Iscrizione: domenica 13 febbraio 2022, 18:22
- Desktop: Xubuntu
- Distribuzione: 22.04.3 LTS
- Località: Francia
Re: Codice si blocca a 1.000.000 di iterazioni
@TommyB1992 la memoria è piena. Puoi descrivere l'algoritmo che stai usando (se possibile in linguaggio algoritmico, per evitare di fornire codice troppo complesso da leggere e capire) e forse qualcuno vedrà come può essere ottimizzato.
-
- Scoppiettante Seguace
- Messaggi: 816
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Re: Codice si blocca a 1.000.000 di iterazioni
Ma non credo dipenda questo... ho fatto ripartire l'algoritmo con meno "risorse" e sta andando da 10h.
Codice: Seleziona tutto
tomas@tomas-tobefilledbyoem:~/Desktop/Projects/thirdparty/Scraper/myversion$ free -m
total used free shared buff/cache available
Mem: 15899 15372 150 4 375 209
Swap: 16280 8125 8155
-
- Scoppiettante Seguace
- Messaggi: 816
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
-
- Prode Principiante
- Messaggi: 80
- Iscrizione: mercoledì 26 gennaio 2022, 13:15
- Desktop: Gnome
- Distribuzione: 20.04
- Sesso: Maschile
Re: Codice si blocca a 1.000.000 di iterazioni
Va bene tracciare i memory leak,ma bisognerebbe evitarli. Dato per scontato che usi puntatori e non variabili automatiche, da profano, forse passare i dati fra thread separati potrebbe essere una soluzione?
-
- Scoppiettante Seguace
- Messaggi: 816
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Re: Codice si blocca a 1.000.000 di iterazioni
Utilizzo già OpenMP con threading x4. Paradossalmente usando un single-thread non si ferma a 4M (1M * 4 thread), ma continua.UgoBollito ha scritto: ↑mercoledì 31 maggio 2023, 17:52Va bene tracciare i memory leak,ma bisognerebbe evitarli. Dato per scontato che usi puntatori e non variabili automatiche, da profano, forse passare i dati fra thread separati potrebbe essere una soluzione?
Ciò che per me non trova senso, è: perchè proprio 1M preciso di iterazioni (che in questo caso sarebbero 4M)? E anche se tecnicamente l'esplorazione dei nodi è casuale, perciò facendo due esecuzioni del programma i dati salvati siano differenti (ho anche controllato), si blocca sempre, esattamente a 1M.
E la storia della memoria non regge molto visto il secondo tentativo fatto con free -m e che a tutti gli effetti, occupa la stessa memoria, non si blocca (e se lo fa, non lo fa a 1M di iterazioni).
- Actarus5
- Prode Principiante
- Messaggi: 215
- Iscrizione: mercoledì 3 luglio 2013, 17:15
- Desktop: Mate
- Distribuzione: Fedora
- Località: Abutalabashuneba
Re: Codice si blocca a 1.000.000 di iterazioni
Beh sì, sarebbe auspicabile, l'idea è scoprire se ci sono eventualmente e risolvere il problema, lo davo per scontato eccoUgoBollito ha scritto: ↑mercoledì 31 maggio 2023, 17:52Va bene tracciare i memory leak,ma bisognerebbe evitarli.
"An extremely helpful console message: “SPANK! SPANK! SPANK! Naughty programmer!”. Really, I’m not joking about that one."
Chi c’è in linea
Visualizzano questa sezione: Rafbor, TommyB1992 e 63 ospiti