Bazı yeni TensorFlow sürümlerinin eski CUDA ve cuDNN sürümleriyle uyumlu olmadığını fark ettim. Uyumlu sürümlere genel bakış veya resmi olarak test edilmiş kombinasyonların bir listesi var mı? TensorFlow belgelerinde bulamıyorum.
Bazı yeni TensorFlow sürümlerinin eski CUDA ve cuDNN sürümleriyle uyumlu olmadığını fark ettim. Uyumlu sürümlere genel bakış veya resmi olarak test edilmiş kombinasyonların bir listesi var mı? TensorFlow belgelerinde bulamıyorum.
Yanıtlar:
CUDA sürümünü kontrol edin:
cat /usr/local/cuda/version.txt
ve cuDNN sürümü:
grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h
ve resimlerde veya buraya aşağıda verilen şekilde bir kombinasyon kurun .
Aşağıdaki resimler ve bağlantı, Linux, macOS ve Windows üzerinde resmi olarak desteklenen / test edilmiş CUDA ve TensorFlow kombinasyonlarına genel bir bakış sunmaktadır:
Bazı durumlarda aşağıdaki verilen özellikler çok geniş olabileceğinden, çalışan belirli bir yapılandırma aşağıdadır:
tensorflow-gpu==1.12.0
cuda==9.0
cuDNN==7.1.4
İlgili cudnn indirilebilir burada .
(rakamlar 20 Mayıs 2020'de güncellendi)
(şekil 31 Mayıs 2018'de güncellendi)
14 Ocak 2020 itibarıyla güncellendi: bakınız güncel bilgi için Linux için Linki ve Windows için Bağlantı .
Tensorflow sitesinde verilen uyumluluk tablosu , cuda ve cuDNN için belirli küçük sürümleri içermemektedir. Ancak, belirli sürümler karşılanmazsa, tensorflow'u kullanmaya çalıştığınızda bir hata oluşur.
İçin tensorflow-gpu==1.12.0
ve cuda==9.0
uyumlu cuDNN
sürümüdür 7.1.4
, indirilebilir hangi burada kayıttan sonra.
Cuda sürümünüzü kullanarak kontrol edebilirsiniz.
nvcc --version
cuDNN sürümü
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
kullanarak tensorflow-gpu sürümü
pip freeze | grep tensorflow-gpu
GÜNCELLEME: tensorflow 2.0 yayınlandığından, uyumlu cuda ve cuDNN sürümlerini de paylaşacağım (Ubuntu 18.04 için).
tensorflow-gpu
= 2.0.0cuda
= 10.0cuDNN
= 7.6.0jupyter not defterinde kodluyorsanız ve hangi cuda sürüm tf'nin kullanıldığını kontrol etmek istiyorsanız, aşağıdaki komutu doğrudan jupyter hücresine çalıştırın:
!conda list cudatoolkit
!conda list cudnn
ve gpu'nun tf tarafından görülebilir olup olmadığını kontrol etmek için:
tf.test.is_gpu_available(
cuda_only=False, min_cuda_compute_capability=None
)
Bu yapılandırmayı cuda 10.0 için kullanabilirsiniz (10.1, 3/18 itibarıyla çalışmaz), bu benim için çalışır:
Tensorflow gpu sürümünü yükleyin:
pip install tensorflow-gpu==1.4.0
Yanlışlıkla CUDA 10.1 ve CUDNN 7.6'yı yükledim. Aşağıdaki yapılandırmaları kullanabilirsiniz (Bu benim için çalıştı - 9/10 itibariyle). :
Ama tensorflow başlangıçta CUDA 10 ile çalıştığı için semboller oluşturmak zorunda kaldım.
sudo ln -s /opt/cuda/targets/x86_64-linux/lib/libcublas.so /opt/cuda/targets/x86_64-linux/lib/libcublas.so.10.0
sudo cp /usr/lib/x86_64-linux-gnu/libcublas.so.10 /usr/local/cuda-10.1/lib64/
sudo ln -s /usr/local/cuda-10.1/lib64/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusolver.so.10 /usr/local/cuda/lib64/libcusolver.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcurand.so.10 /usr/local/cuda/lib64/libcurand.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcufft.so.10 /usr/local/cuda/lib64/libcufft.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda/lib64/libcudart.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusparse.so.10 /usr/local/cuda/lib64/libcusparse.so.10.0
Ve aşağıdaki ~ / .bashrc -
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cuda/targets/x86_64-linux/lib/
TF 2.0'a yükselttikten sonra benzer bir sorun yaşadım. TF'nin bildirdiği CUDA sürümü, Ubuntu 18.04'ün yüklediğimi düşündüğüyle eşleşmedi. CUDA 7.5.0 kullandığımı söyledi, ancak doğru sürümü yüklediğimi düşündüm.
Ne Sonunda yapmak zorunda yinelemeli grep oldu /usr/local
için CUDNN_MAJOR
ve bunu buldum /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.h
gerçekten olarak versiyonunu belirtmek vermedi 7.5.0
.
/usr/local/cuda-10.1
doğru anladım ve /usr/local/cuda
işaret etti /usr/local/cuda-10.1
, bu yüzden TF'nin neden baktığı bir gizemdi (ve kalıyor) /usr/local/cuda-10.0
.
Her neyse, sadece taşındı /usr/local/cuda-10.0
için /usr/local/old-cuda-10.0
TF bir daha ve her şey daha sonra bir cazibe gibi çalıştı bulamadık böylece.
Her şey çok sinir bozucuydu ve hala rastgele bir saldırı yaptığımı hissediyorum. Ama işe yaradı :) ve belki de bu benzer bir sorunu olan birine yardımcı olacaktır.