Które kombinacje wersji TensorFlow i CUDA są kompatybilne?

145

Zauważyłem, że niektóre nowsze wersje TensorFlow są niekompatybilne ze starszymi wersjami CUDA i cuDNN. Czy istnieje przegląd kompatybilnych wersji lub nawet lista oficjalnie przetestowanych kombinacji? Nie mogę znaleźć tego w dokumentacji TensorFlow.

Fábio
źródło
1
Wszystkie wymagania są podane w instrukcjach instalacji , w sekcji „ Wymagania NVIDIA do uruchomienia TensorFlow z obsługą GPU ”.
P-Gn
10
Pytanie dotyczyło kompatybilności i (oficjalnie) przetestowanych kombinacji, których moim zdaniem nie ma w instrukcji instalacji. Nie mogę też znaleźć sekcji, do której się odnosisz. Z tych uwag wynika, że ​​w moim ogólnym przekonaniu poszukiwane informacje są trudne do znalezienia i dlatego uzasadniają one zapewnienie łatwego dostępu do odsyłacza zamieszczonego w odpowiedzi.
Fábio
Przekonasz się, że wersje CUDA i cuDNN na wspomnianej stronie odpowiadają jednej z instrukcji instalacji.
P-Gn
Aby znaleźć instrukcje instalacji, przejdź do strony, do której odsyłam powyżej, a następnie kliknij łącze dla swojego systemu operacyjnego.
P-Gn
1
Och, rozumiem, co masz na myśli - próbując sprawdzić, która wersja tensorflow pasuje do określonej kombinacji CUDA / cuDNN. Mógłbyś przejrzeć informacje o wydaniu TF, ale tabela, do której linkujesz, jest rzeczywiście dobrym podsumowaniem.
P-Gn

Odpowiedzi:

212

Ogólnie:

Sprawdź wersję CUDA:

cat /usr/local/cuda/version.txt

i wersja cuDNN:

grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h

i zainstaluj kombinację, jak podano poniżej na obrazkach lub tutaj .

Poniższe obrazy i łącze zawierają przegląd oficjalnie obsługiwanych / testowanych kombinacji CUDA i TensorFlow w systemach Linux, macOS i Windows:

Mniejsze konfiguracje:

Ponieważ podane poniżej specyfikacje w niektórych przypadkach mogą być zbyt szerokie, oto jedna konkretna konfiguracja, która działa:

  • tensorflow-gpu==1.12.0
  • cuda==9.0
  • cuDNN==7.1.4

Odpowiedni cudnn można pobrać tutaj .

(dane zaktualizowane 20 maja 2020 r.)

GPU dla systemu Linux

wprowadź opis obrazu tutaj

Linux

wprowadź opis obrazu tutaj

GPU macOS

wprowadź opis obrazu tutaj

System operacyjny Mac

wprowadź opis obrazu tutaj

(rysunek zaktualizowany 31 maja 2018 r.)

Windows

wprowadź opis obrazu tutaj

Zaktualizowano 14 stycznia 2020 r .: Aby uzyskać zaktualizowane informacje, zapoznaj się z Link for Linux i Link dla Windows .

Fábio
źródło
1
Zauważyłem jednak, że wersje TensorFlow <1.0 zostały wykluczone z przeglądu. Czy ktoś ma pomysł, gdzie znaleźć tę samą listę dla starszych wersji?
Fábio
2
Wygląda na to, że nie określają podrzędnych wersji dla cuda i cudnn,
mrgloom
1
AKTUALIZACJA: przetestowano TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6
mjaniec
1
Nie aktualizuj liczb, odsyłaj do dokumentacji. Link zmienia się rzadziej niż tabele
Trylks
1
@ Fábio: Zaktualizuj swoją odpowiedź o najnowsze linki zgodnie z Twoją prośbą.
Wsparcie Tensorflow
23

Tabela kompatybilności podana na stronie tensorflow nie zawiera określonych wersji pomocniczych dla cuda i cuDNN. Jeśli jednak określone wersje nie zostaną spełnione, podczas próby użycia tensorflow wystąpi błąd.

Dla tensorflow-gpu==1.12.0i cuda==9.0kompatybilna cuDNNwersja to 7.1.4, którą można pobrać stąd po rejestracji.

Możesz sprawdzić swoją wersję CUDA za pomocą
nvcc --version

Wersja cuDNN używająca
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

Wersja tensorflow-gpu używająca
pip freeze | grep tensorflow-gpu

AKTUALIZACJA: Od czasu wydania tensorflow 2.0 udostępnię również kompatybilne wersje cuda i cuDNN (dla Ubuntu 18.04).

  • tensorflow-gpu = 2.0.0
  • cuda = 10,0
  • cuDNN = 7,6,0
Atul Balaji
źródło
1
Twoja odpowiedź była bardzo przydatna. Tak jak powiedziałeś, dokumentacja nie była zbyt jasna, aby przywołać pomniejsze wersje. Śledziłem twoją konfigurację i zadziałało!
Vikrame,
2

jeśli kodujesz w notatniku jupyter i chcesz sprawdzić, której wersji cuda używa tf, uruchom następującą komendę bezpośrednio w komórce jupyter:

!conda list cudatoolkit

!conda list cudnn

i sprawdzić, czy gpu jest widoczne dla tf:

tf.test.is_gpu_available(
    cuda_only=False, min_cuda_compute_capability=None
)
Savrige
źródło
1

Możesz użyć tej konfiguracji dla CUDA 10.0 (10.1 nie działa od 3/18), to działa dla mnie:

  • tensorflow> = 1.12.0
  • tensorflow_gpu> = 1.4

Zainstaluj wersję tensorflow gpu:

pip install tensorflow-gpu==1.4.0
ED-DOUGHMI younes
źródło
1

Przez pomyłkę zainstalowałem CUDA 10.1 i CUDNN 7.6. Możesz użyć następujących konfiguracji (to działało dla mnie - od 9/10). :

  • Tensorflow-gpu == 1.14.0
  • CUDA 10.1
  • CUDNN 7.6
  • Ubuntu 18.04

Musiałem jednak utworzyć dowiązania symboliczne, aby działał tak, jak pierwotnie tensorflow działa z CUDA 10.

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

I dodaj do mojego ~ / .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/
yatish hr
źródło
0

Podobny problem miałem po aktualizacji do TF 2.0. Wersja CUDA, którą raportował TF, nie pasowała do tego, co według mnie Ubuntu 18.04 zainstalowałem. Napisał, że używam CUDA 7.5.0, ale apt pomyślał, że mam zainstalowaną odpowiednią wersję.

Co ja w końcu musiałem zrobić, to grep rekurencyjnie w /usr/localza CUDNN_MAJOR, i okazało się, że /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.hrzeczywiście było określić jako wersję 7.5.0.
/usr/local/cuda-10.1zrozumiałem i /usr/local/cudawskazałem /usr/local/cuda-10.1, więc było (i pozostaje) tajemnicą dla mnie, na co patrzy TF /usr/local/cuda-10.0.

W każdym razie przeniosłem się /usr/local/cuda-10.0do /usr/local/old-cuda-10.0TF, więc nie mogłem go już znaleźć i wszystko działało jak urok.

To wszystko było bardzo frustrujące i nadal czuję, że właśnie zrobiłem przypadkowego włamania. Ale zadziałało :) i może to pomoże komuś z podobnym problemem.

Matt Ginsberg
źródło