Quais combinações de versões do TensorFlow e CUDA são compatíveis?

145

Percebi que algumas versões mais recentes do TensorFlow são incompatíveis com as versões CUDA e cuDNN mais antigas. Existe uma visão geral das versões compatíveis ou mesmo uma lista de combinações oficialmente testadas? Não consigo encontrá-lo na documentação do TensorFlow.

Fábio
fonte
1
Todos os requisitos são fornecidos com as instruções de instalação , seção " Requisitos da NVIDIA para executar o TensorFlow com suporte à GPU ".
P-Gn
10
A questão era abordar compatibilidade e (oficialmente) combinações testadas que, na minha opinião, não são fornecidas nas instruções de instalação. Além disso, não consigo encontrar a seção a que você está se referindo. Essas observações resultam na minha visão geral de que as informações solicitadas são difíceis de encontrar e, portanto, justificam o acesso fácil ao link postado na resposta.
Fábio
Você verá que as versões CUDA e cuDNN na página mencionada correspondem às instruções de instalação.
P-Gn
Para encontrar as instruções de instalação, acesse a página que eu vinculei acima e siga o link para o seu sistema operacional.
P-Gn
1
Ah, entendo o que você quer dizer - tentando ver qual versão do tensorflow se encaixa em uma combinação CUDA / cuDNN específica. Você pode navegar pelas notas de versão do TF, mas a tabela à qual você vincula é realmente um bom resumo.
P-Gn

Respostas:

212

Geralmente:

Verifique a versão CUDA:

cat /usr/local/cuda/version.txt

e versão cuDNN:

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

e instale uma combinação como indicado abaixo nas imagens ou aqui .

As imagens a seguir e o link fornecem uma visão geral das combinações oficialmente suportadas / testadas de CUDA e TensorFlow no Linux, macOS e Windows:

Configurações secundárias:

Como as especificações fornecidas abaixo, em alguns casos, podem ser muito amplas, eis uma configuração específica que funciona:

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

O cudnn correspondente pode ser baixado aqui .

(números atualizados em 20 de maio de 2020)

GPU Linux

insira a descrição da imagem aqui

Linux

insira a descrição da imagem aqui

GPU para macOS

insira a descrição da imagem aqui

Mac OS

insira a descrição da imagem aqui

(figura atualizada em 31 de maio de 2018)

janelas

insira a descrição da imagem aqui

Atualizado a partir de 14 de janeiro de 2020: Para obter as informações atualizadas, consulte o Link para Linux e o Link para Windows .

Fábio
fonte
1
No entanto, notei que as versões do TensorFlow <1.0 foram excluídas da visão geral. Alguém tem uma idéia de onde encontrar a mesma lista para versões mais antigas?
Fábio
2
Parece que eles não especificar versões menores para CUDA e cudnn,
mrgloom
1
ATUALIZAÇÃO: testado TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6
mjaniec
1
Não atualize as figuras, link para a documentação. O link muda com menos frequência do que as mesas
Trylks
1
@ Fábio: Atualize sua resposta com os Links mais recentes conforme sua solicitação.
Tensorflow Support 14/01
23

A tabela de compatibilidade fornecida no site tensorflow não contém versões secundárias específicas para cuda e cuDNN. No entanto, se as versões específicas não forem atendidas, ocorrerá um erro ao tentar usar o tensorflow.

Para tensorflow-gpu==1.12.0e cuda==9.0, a cuDNNversão compatível é 7.1.4, que pode ser baixada aqui após o registro.

Você pode verificar sua versão cuda usando
nvcc --version

versão cuDNN usando
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

versão tensorflow-gpu usando
pip freeze | grep tensorflow-gpu

ATUALIZAÇÃO: Desde que o tensorflow 2.0 foi lançado, também compartilharei as versões cuda e cuDNN compatíveis (no Ubuntu 18.04).

  • tensorflow-gpu = 2.0.0
  • cuda = 10,0
  • cuDNN = 7.6.0
Atul Balaji
fonte
1
Sua resposta foi muito útil. Como você disse, a documentação não era muito clara para chamar as versões secundárias. Eu segui sua configuração e funcionou!
Vikrame 11/01/19
2

se você estiver codificando no notebook jupyter e quiser verificar qual versão cuda tf está usando, execute o comando follow diretamente na célula jupyter:

!conda list cudatoolkit

!conda list cudnn

e para verificar se o gpu é visível para tf:

tf.test.is_gpu_available(
    cuda_only=False, min_cuda_compute_capability=None
)
Savrige
fonte
1

Você pode usar esta configuração para cuda 10.0 (10.1 não funciona a partir de 18/3), isso é executado para mim:

  • tensorflow> = 1.12.0
  • tensorflow_gpu> = 1.4

Instale a versão tensorflow gpu:

pip install tensorflow-gpu==1.4.0
ED-DOUGHMI younes
fonte
1

Eu instalei o CUDA 10.1 e o CUDNN 7.6 por engano. Você pode usar as seguintes configurações (funcionou para mim - a partir de 9/10). :

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

Mas eu tive que criar links simbólicos para que funcionasse, pois o tensorflow trabalha originalmente com o 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

E adicione o seguinte ao meu ~ / .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
fonte
0

Eu tive um problema semelhante depois de atualizar para o TF 2.0. A versão CUDA que o TF estava relatando não correspondia ao que o Ubuntu 18.04 achou que eu tinha instalado. Ele dizia que estava usando o CUDA 7.5.0, mas o apt achou que tinha a versão correta instalada.

O que eu finalmente tinha a fazer era grep recursivamente em /usr/localpara CUDNN_MAJOR, e eu achei que /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.h, de fato, especificar a versão como 7.5.0.
/usr/local/cuda-10.1acertou e /usr/local/cudaapontou /usr/local/cuda-10.1, então era (e continua sendo) um mistério para mim porque TF estava olhando /usr/local/cuda-10.0.

Enfim, mudei /usr/local/cuda-10.0para /usr/local/old-cuda-10.0o TF e não consegui encontrá-lo mais e tudo funcionou como um encanto.

Foi tudo muito frustrante, e ainda sinto que fiz um hack aleatório. Mas funcionou :) e talvez isso ajude alguém com um problema semelhante.

Matt Ginsberg
fonte