Como instalar o CUDA Toolkit 7/8/9 no Debian 8 (Jessie) ou 9 (Stretch)?

26

Como instalar o Cuda Toolkit 7.0 ou 8 no Debian 8?

Eu sei que o Debian 8 vem com a opção de baixar e instalar o CUDA Toolkit 6.0 usando apt-get install nvidia-cuda-toolkit, mas como você faz isso para o CUDA toolkit versão 7.0 ou 8?

Tentei instalar usando os instaladores do Ubuntu, conforme descrito abaixo:

sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb

dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

sudo apt-get update

sudo apt-get install -y cuda

No entanto, não funcionou e a seguinte mensagem foi retornada:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 cuda : Depends: cuda-7-0 (= 7.0-28) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Greg
fonte
@nullgeppetto: Por favor, tente seguir as instruções na minha resposta abaixo :-)
einpoklum - reinsira Monica

Respostas:

30

As instruções a seguir são válidas para CUDA 7.0, 7.5 e várias versões anteriores (e provavelmente posteriores). Quanto às distribuições Debian, elas são válidas para Jessie e Stretch e provavelmente outras versões. Eles assumem uma arquitetura amd64 (x86_64), mas você pode adaptá-los facilmente para x86 (x86_32).

Pré-requisitos de instalação

  • g ++ - Você deve usar a versão mais recente do GCC suportada pela sua versão do CUDA. Para o CUDA 7.x, seria a versão 4.9.3, a última da linha 4.x; para CUDA 8.0, as versões do GCC 5.x são suportadas. Se sua distribuição usa o GCC 5.x por padrão, use-o, caso contrário, o GCC 5.4.0 deve fazer. Versões anteriores são utilizáveis, mas eu não as recomendaria, apenas pelo melhor suporte ao recurso C ++ moderno para código do host.
  • gcc - vem com g ++. Eu até acho que o CMake pode ter como padrão o nvcc invocar o gcc em vez do g ++ em alguns casos com um -xswitch (mas não tenho certeza disso).
  • libGLU - bibliotecas Mesa OpenGL (+ arquivos de desenvolvimento?)
  • bibliotecas de extensão libXi - X Window System Xinput (+ arquivos de desenvolvimento?)
  • biblioteca "utilitários diversos" libXmu - X Window System (+ arquivos de desenvolvimento?)
  • Kernel Linux - cabeçalhos da versão do kernel que você está executando.

Se você deseja uma lista de pacotes específicos, isso depende exatamente de qual distribuição, mas tente o seguinte (para CUDA 7.x):

sudo apt-get install gcc g++ gcc-4.9 g++-4.9 libxi libxi6 libxi-dev libglu1-mesa libglu1-mesa-dev libxmu6 libxmu6-dev linux-headers-amd64 linux-source

E você pode adicionar algumas -dbgversões desses pacotes para símbolos de depuração.

Estou bastante certo de que este abrange tudo - mas eu poderia ter perdido algo que eu já tinha instalado. Além disso, CUDA pode trabalhar com clang , pelo menos experimentalmente, mas eu não tentei isso.

Instalando o driver do kernel CUDA

  1. Vá para os NVIDIA página de downloads CUDA .
  2. Escolher Linux> x86_64> Ubuntu e, em seguida, qualquer versão mais recente que eles tiverem (no momento em que escrevi: Ubuntu 15.04).
  3. Escolha o arquivo .run opção de .
  4. Faça o download do arquivo .run (atualmente este ). Certifique-se de não colocá-lo/tmp .
  5. Torne o arquivo .run executável: chmod a+x cuda_7.5.18_linux.run .
  6. Torne-se raiz.
  7. Execute o arquivo .run: finja aceitar sua licença boba; diga "sim" para instalar apenas o driver do kernel da NVIDIA e diga "não" para todo o resto.

A instalação deve informar que você espera ter instalado o driver do kernel da NVIDIA, mas que você deve reiniciar antes de continuar / tentar novamente a instalação do kit de ferramentas. Tão...

  1. Tendo aparentemente conseguido, reinicie.

Instalando o próprio CUDA

  1. Seja raiz.
  2. Localize e execute cuda_7.5.18_linux.run
  3. Desta vez, diga Não para instalar o driver, mas Sim para instalar todo o resto e aceite os caminhos padrão (ou altere-os, o que funcionar melhor para você).

É provável que o instalador falhe agora . Isso é bom, desde que seja o tipo de falha que esperamos: deve ser informado que sua versão do compilador não é suportada - o CUDA 7.0 ou 7.5 suporta até gcc 4.9 e você tem alguma versão 5.x por padrão. Agora, se você receber uma mensagem sobre a falta de bibliotecas , isso significa que minhas instruções acima sobre os pré-requisitos falharam e você deve comentar aqui para que eu possa corrigi-las. Supondo que você tenha recebido o "bom fracasso", prossiga para:

  1. Volte a invocar o arquivo .run, desta vez com a opção --override.
  2. Faça as mesmas escolhas que na etapa 11.

O CUDA agora deve estar instalado, por padrão, em /usr/local/cuda(isso é um link simbólico). Mas ainda não terminamos!

Direcionando o compilador nvcc da NVIDIA para usar a versão correta do g ++

O compilador CUDA da NVIDIA realmente chama g ++ como parte do processo de vinculação e / ou compila C ++ real em vez de arquivos .cu. Eu acho que. De qualquer forma, o padrão é executar o que estiver no seu caminho como g++; mas se você colocar outro porg++ baixo /usr/local/cuda/bin, ele será usado primeiro! Tão...

  1. Execute symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(e para uma boa medida, talvez também symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc.

É isso aí.

Experimentando a instalação

  1. cd /root/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd
  2. make

A compilação deve ser concluída com êxito e quando você fizer isso

  1. ./vectorAdd

você deve obter a seguinte saída:

root@mymachine:~/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd# ./vectorAdd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

Notas

  • Você não precisa instalar o NVIDIA GDK (GPU Development Kit), mas não dói e pode ser útil para alguns. Instale-o no diretório raiz do seu sistema; é bem seguro e existe um desinstalador depois:/usr/bin/uninstall_gdk.pl . No CUDA 8, ele já está integrado no próprio CUDA IIANM.
  • Não instale pacotes adicionais com nomes como nvidia -... ou cuda ...; eles podem não machucar, mas certamente não ajudarão.
  • Antes de executar qualquer uma dessas ações, convém garantir que sua GPU seja reconhecida de alguma maneira lspci | grep -i nvidia.
einpoklum - restabelece Monica
fonte
... bem, quase tudo isso: Você não pode instalar o driver do kernel se não for root, é claro. Mas você pode criar (não executar) o código CUDA sem ele.
Einpoklum - restabelece Monica
Apenas tentei isso. o instalador cuda apenas se recusa a instalar. Ele falha com um aviso de que você deve usar o arquivo .deb.
@WernerVanBelle: Você pode postar isso como uma pergunta separada? Ou pelo menos cite o aviso se for muito curto? Além disso, o IIRC tem alguma opção de linha de comando "force", você já tentou isso?
einpoklum - reinstala Monica 16/04
Tudo isso - exceto a instalação do driver - também pode ser feito como um usuário não raiz no diretório inicial, mas isso seria suficiente para criar o código CUDA, não para executá- lo. Você precisa de um driver nVIDIA apropriado no seu kernel para isso, e somente um usuário root pode fazer isso acontecer. Desculpe pelo meu comentário anterior, que sugeria o contrário. Além disso, para criar como um usuário não raiz, pode ser necessário criar sua própria versão do gcc / g ++ se sua distribuição tiver apenas uma versão mais recente (para o CUDA 7.x você precisaria do gcc 4.9.3).
einpoklum - reinstala Monica
@celavek: se você acha que esta resposta não cobre o Debian 9 o suficiente, explique o motivo antes de fazer uma edição sugerida.
Einpoklum - reinstala Monica
6

Eu acho que você deveria fazê-lo usando backports, na verdade estou instalando suavemente o nvidia-cuda-toolkit7.5 no debian jessie.

Adicione backports, não gratuitos, ao seu /etc/apt/sources.list. Para mim (em Jessie), basta colocar isso na parte inferior do meu arquivo:

# jessie-backports
deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

salvo, atualização apt-get e, finalmente:

apt-get install -t jessie-backports nvidia-cuda-toolkit
Poso
fonte
1

Depois de adicionar repositórios contrib e não livres ao sources.list e executar o apt-get update, o CUDA Toolkit está no Synaptic sob nvidia-cuda-toolkit.

Imagem padrão
fonte
1

Com o Debian 9 "stretch" com uma GPU mais antiga (GT 720), são necessárias etapas adicionais. Vejo que alguém acima (@celavek) teve isso, então preencherei o que funcionou para mim. A resposta aceita cobre quase tudo o necessário. Reconhecer esse é um exemplo bastante interessante, mas espero que possa haver algumas coisas úteis aqui que salvem algumas pesquisas no Google.

Para o CUDA 8.0 na etapa 1, clique em "Versões herdadas" e selecione "CUDA Toolkit 8.0 GA 2". Em seguida, Linux, x86_64, Ubuntu, 16.04, runfile (local).

Não aceitei o driver em pacote e, em vez disso, usei os drivers 384.130 instalados anteriormente para minha GPU. Mais informações sobre isso aqui: Debian Wiki . Sua milhagem pode variar. Não posso falar de cartões que não sejam um GT 720. Esse foi o caminho que escolhi, ainda não me arrependo.

Quando a instalação falha devido a uma incapacidade do InstallUtils.pm local na etapa 12, você precisará descompactar o arquivo cuda_8.0.61_375.26_linux.run, mas executando-o com o sinalizador --tar mxvf. Então (como root) copie o InstallUtils.pm para / usr / lib / x86_64-linux-gnu / pearl-base:

./cuda_8.0.61_375.26_linux.run --tar mxvf
sudo cp InstallUtils.pm /usr/lib/x86_64-linux-gnu/perl-base

Agora o comando da etapa 12 deve ter sucesso.

Seu Debian 9.0 vem com o g ++ versão 6+, isso não serve. A compilação do vetorAdd na etapa 15 falhará. Segui este documento: Instalando várias versões do GCC para instalar a versão 5.5.0. Para 5.5.0, você desejará este arquivo

wget http://mirrors.concertpass.com/gcc/releases/gcc-5.5.0/gcc-5.5.0.tar.xz

e descompacte o tarball com isso:

tar -xJf gcc-5.5.0.tar.xz

Eu precisava atualizar algumas coisas (bibliotecas e adicionar compilação de 32 bits) para que isso funcionasse para mim:

sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential gcc-multilib rpm libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

Agora você pode configurar, criar e instalar o compilador.

Lembre-se de configurar com o sinalizador --prefix = / usr / local / gcc / 5.5.0

Agora você pode compilar o exemplo vectorAdd na etapa 15 com isso:

make HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++

Ou isto:

export HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++
make

Não há necessidade de modificar o Makefile, ele manipula a substituição do compilador corretamente.

Agora você deve ter uma instalação CUDA 8.0 em funcionamento esticada.

Ingo
fonte
0

Tente usar os Instaladores de Rede para Ubuntu nesta página:

https://developer.nvidia.com/cuda-downloads#linux

Os instaladores do Ubuntu 14. * devem ser compatíveis o suficiente.

Tomasz Klim
fonte
11
Eu deveria ter mencionado que o instalador do ubuntu não funcionou - atualizou o post para refletir isso.
Greg
@ Greg, você descobriu como instalar o Cuda no Debian eventualmente?
Nulo3 #
@nullgeppetto Acabei desistindo da idéia do Debian, pois encontrei muitos problemas de compatibilidade que não consegui superar.
Greg Greg
@ Greg, hmmm, era disso que eu tinha medo .. Então, você optou pelo * ubuntu ou algo mais? Pessoalmente, ainda estou esperando pela minha gtx 960, então vou experimentá-la no Debian ... Avisarei se você quiser.
Nulo # #