Errore tensorflow / stream_executor / cuda / cuda_dnn.cc: 338] Impossibile creare l’handle cudnn: CUDNN_STATUS_INTERNAL_ERROR
Devo ammettere che questo errore è stato un grosso problema da risolvere ed in parte lo è ancora. Ho trovato e verificato molti metodi discussi su Internet in diversi forum, ma nessuno in sostanza è stato utile per risolvere il problema in via definitiva, almeno nel mio caso.
2019-05-05 09:34:42.298865: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcublas.so.10.0 2019-05-05 09:34:42.469839: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudnn.so.7 2019-05-05 09:34:43.086143: E tensorflow/stream_executor/cuda/cuda_dnn.cc:338] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR 2019-05-05 09:34:43.100978: E tensorflow/stream_executor/cuda/cuda_dnn.cc:338] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
Ovviamente ho seguito attentamente le istruzioni per l’installazione delle librerie così come indicato sul sito ufficiale di tensorflow ed ho provato le varie versioni disposnibili di cuda da 10. .1 fino a 9.0 e relative cudnn ma l’errore è sempre stato impossibile da eliminare.
Alla fine ho capito che il problema è nella compatibilità delle librerie installate sull’ambiente e non è facile capire qualce in particolare genera il problema. Dopo vari tentativi ho scoperto che utilizzando anaconda per installare tensorflow-gpu nell’ambiente virtuale, vengono installate automaticamente cuda e cudnn nell’ambiente compatibili conl a verisone di tensorflow da utilizzare. Inoltre ho verificato che la versione funaionante è la 1.12. Pertanto per ricolvere il problema sarà sufficiente creare una ambiente virtuale lanciando ad esempio il comando:
conda create --name tf12
ed installare tensorflow-gpu lanciando il seguente comando:
conda install tensorflow-gpu==1.12
Al momento non ho trovato una via aternativa per sfruttare la gpu con tensorflow con versioni più recenti.
Qualche piccola nota; esiste la possibilità nel caso di più GPU di settare la GPU da utilizzare lannciando il seguente comando:
export CUDA_VISIBLE_DEVICES=1
Nel caso in cui si avesse una sola gpu e si utilizzasse l’espressione precedente in realtà non verrebbe utilizzata alcuna gpu ma la CPU. Questo trick viene spesso suggerito nei post come risolutivo del bug precedente ma ovviamente non è vero.
In caso di una sola GPU l’espressione corretta dovrebbe essere:
export CUDA_VISIBLE_DEVICES=0
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments