rayman2007
02-06-2008, 20:42
Salve ho un grosso problema.
Ho fatto uno script in matlab, poi trasformato in funzione(senza argomenti di output)
Questa funzione effettua un for da 1 a 200, all'interno del for richiama 2 programmini DOS : Learn.exe e classify.exe che effettuano l0addestramento di una rete neurale.
durante il ciclo vado a leggere i risultati da un file di log prodotto dai 2 programmini DOS, e li memorizzo in dei vettori.
Dopodiché realizza 3 grafici(questo dopo i 200 cicli).
Ora ho fatto uno script semplicissimo, composto da 2 cicli innestati all'interno dei quali a seconda delle circostanze richiamano la Funzione spiegata sopra.
In totale la richiamano 116 volte (passandogli 2 parametri differenti).
Il problema è che la RAM (ho 2GB) collassa, in pratica ho monitorato il consumo della ram quando il programma è in esecuzione:
in pratica sono quei 2 programmini DOS (learn e classify) che avviati tramite il matlab col comando ! learn.exe>NULL .... consumano per i loro calcoli molti MB.
Ora dato che questi vengono richiamati 200 volte dalla funzione, e la funzione è richiamata a sua volta 116 volte, la memoria occupata in RAM dai 2 prog DOS non viene liberata.
In matlab ho messo alla fine della funzione : clear all, è dovrebbe liberare la system memory occupata dai dati matlab (sono pochi), mentre la memoria occupata dai prog DOS non viene rilasciata, neanche se arresto tutto e chiudo MAtlab.
scusate per la lunghezza del messaggio, ma esiste il modo di far usare a questi 2 programmini DOS una determinata area di memoria , in modo tale che usino sempre quella forzando il sistema a ripulirla.?
Alla fine della loro esecuzione e me interessano solo i dati riportati in alcuni file TXT che essi producono, ma a quanto pare per generare i risultati hanno bisogno per i loro calcoli di molta ram (30-40MB alla volta) che per mia sfortuna nn viene rilasciata.
Grazie in anticipo per eventuali suggerimenti.
Ho fatto uno script in matlab, poi trasformato in funzione(senza argomenti di output)
Questa funzione effettua un for da 1 a 200, all'interno del for richiama 2 programmini DOS : Learn.exe e classify.exe che effettuano l0addestramento di una rete neurale.
durante il ciclo vado a leggere i risultati da un file di log prodotto dai 2 programmini DOS, e li memorizzo in dei vettori.
Dopodiché realizza 3 grafici(questo dopo i 200 cicli).
Ora ho fatto uno script semplicissimo, composto da 2 cicli innestati all'interno dei quali a seconda delle circostanze richiamano la Funzione spiegata sopra.
In totale la richiamano 116 volte (passandogli 2 parametri differenti).
Il problema è che la RAM (ho 2GB) collassa, in pratica ho monitorato il consumo della ram quando il programma è in esecuzione:
in pratica sono quei 2 programmini DOS (learn e classify) che avviati tramite il matlab col comando ! learn.exe>NULL .... consumano per i loro calcoli molti MB.
Ora dato che questi vengono richiamati 200 volte dalla funzione, e la funzione è richiamata a sua volta 116 volte, la memoria occupata in RAM dai 2 prog DOS non viene liberata.
In matlab ho messo alla fine della funzione : clear all, è dovrebbe liberare la system memory occupata dai dati matlab (sono pochi), mentre la memoria occupata dai prog DOS non viene rilasciata, neanche se arresto tutto e chiudo MAtlab.
scusate per la lunghezza del messaggio, ma esiste il modo di far usare a questi 2 programmini DOS una determinata area di memoria , in modo tale che usino sempre quella forzando il sistema a ripulirla.?
Alla fine della loro esecuzione e me interessano solo i dati riportati in alcuni file TXT che essi producono, ma a quanto pare per generare i risultati hanno bisogno per i loro calcoli di molta ram (30-40MB alla volta) che per mia sfortuna nn viene rilasciata.
Grazie in anticipo per eventuali suggerimenti.