Il seguente semplice codice a quattro linea produce una perdita di memoria nel mio Python 2.6.6/NumPy 1.7.0/MKL 10.3.6 configurazione:Come evitare questa perdita di memoria a quattro righe con NumPy + MKL?
import numpy as np
t = np.random.rand(10,10)
while True:
t = t/np.trace(t)
Ad ogni operazione, la memoria utilizzata cresce di dimensione una matrice 10x10. Tuttavia, non esiste un comportamento simile quando utilizzo una configurazione NumPy 1.4.1/ATLAS.
Ho letto che MKL non necessariamente libera automaticamente la memoria, quindi immagino che questo sia il motivo dello scoppio. C'è un modo semplice per modificare NumPy (prima o dopo la compilazione), in modo che questo quadrante funzioni bene?
uscita di np.show_config()
numpy 1.7.0
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
blas_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
blas_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['$MKLPATH/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['$MKLPATH/include']
Che sembra decisamente un insetto in numpy. Forse avrai più fortuna ad inviare il bug tracker o provare a provare a numpy 1.8? – entropy
è interessante notare che l'effetto si verifica ancora con 'gc.collect' nel ciclo ([gc - garbage collection] (http://docs.python.org/2/library/gc.html)) che punta a un bug insensato. Forse vale la pena aumentare sul tracker dei problemi? – danodonovan
Grazie, ho inviato questo problema al tracker insetto numpy. Chiuderò questa domanda non appena avrò una risposta positiva lì. –