Skip to content

Installing CUDA

Filipe Mutz edited this page Aug 3, 2018 · 8 revisions

IMPORTANTE: O instalador da zed requer CUDA 9.1, enquanto o tensorflow requer CUDA 9.0. O tutorial assume que será instalado CUDA 9.1. Esses passos não foram testados por várias pessoas.

Baixar o driver adequado para a gpu da máquina (no caso da Tesla K40 é o 390.46) e siga os passos abaixo para instalar:

i) dpkg -i nvidia-diag-driver-local-repo-ubuntu1604-390.46_1.0-1_amd64.deb
ii) apt-get update
iii) apt-get install cuda-drivers
iv) reboot

Instalar o Cuda 9.1

https://developer.nvidia.com/cuda-91-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=deblocal

sudo apt-key add /var/cuda-repo-ubuntu1604-9-1-local_9.1.85-1_amd64/7fa2af80.pub
sudo dpkg -i cuda-repo-cuda-repo-ubuntu1604-9-1-local_9.1.85-1_amd64.deb
sudo apt-key adv --fetch-keys 
sudo apt-get update
sudo apt-get install cuda

6.1) testar a instalacao

cd /usr/local/cuda-9.1/samples/1_Utilities/deviceQuery
sudo make 
./deviceQuery

se tudo estiver ok irá aparecer uma tela com os dados da placa e o resultado do teste:

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.1, CUDA Runtime Version = 9.1, NumDevs = 2 Result = PASS

7) Instalar o CuDNN (somente se tiver placa GPU instalada na maquina)

7.1 - baixar o CuDnn 7.1.3 para Cuda 9.1

acesse developer.nvidia.com/cudnn , faça login e baixe os arquivos:

cuDNN v7.1.3 Runtime Library for Ubuntu16.04 (Deb)
cuDNN v7.1.3 Developer Library for Ubuntu16libgsl2.04 (Deb)
cuDNN v7.1.3 Code Samples and User Guide for Ubuntu16.04 (Deb)

7.2 - instalar

sudo dpkg -i libcudnn7_7.1.3.16-1+cuda9.1_amd64.deb
sudo dpkg -i libcudnn7-dev_7.1.3.16-1+cuda9.1_amd64.deb
sudo dpkg -i libcudnn7-doc_7.1.3.16-1+cuda9.1_amd64.deb

7.3 – Para retirar os warnning, edite o arquivo cudnn.hpp , e atualize a função cudnnGetErrorString pelas linhas abaixo.

inline const char* cudnnGetErrorString(cudnnStatus_t status) {
  switch (status) {
    case CUDNN_STATUS_SUCCESS:
      return "CUDNN_STATUS_SUCCESS";
    case CUDNN_STATUS_NOT_INITIALIZED:
      return "CUDNN_STATUS_NOT_INITIALIZED";
    case CUDNN_STATUS_ALLOC_FAILED:
      return "CUDNN_STATUS_ALLOC_FAILED";
    case CUDNN_STATUS_BAD_PARAM:
      return "CUDNN_STATUS_BAD_PARAM";
    case CUDNN_STATUS_INTERNAL_ERROR:
      return "CUDNN_STATUS_INTERNAL_ERROR";
    case CUDNN_STATUS_INVALID_VALUE:
      return "CUDNN_STATUS_INVALID_VALUE";
    case CUDNN_STATUS_ARCH_MISMATCH:
      return "CUDNN_STATUS_ARCH_MISMATCH";
    case CUDNN_STATUS_MAPPING_ERROR:
      return "CUDNN_STATUS_MAPPING_ERROR";
    case CUDNN_STATUS_EXECUTION_FAILED:
      return "CUDNN_STATUS_EXECUTION_FAILED";
    case CUDNN_STATUS_NOT_SUPPORTED:
      return "CUDNN_STATUS_NOT_SUPPORTED";
    case CUDNN_STATUS_LICENSE_ERROR:
      return "CUDNN_STATUS_LICENSE_ERROR";
#if CUDNN_VERSION > 7
    case CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING:
      return "CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING";
    case CUDNN_STATUS_RUNTIME_FP_OVERFLOW:
      return "CUDNN_STATUS_RUNTIME_FP_OVERFLOW";
    case CUDNN_STATUS_RUNTIME_IN_PROGRESS:
      return "CUDNN_STATUS_RUNTIME_IN_PROGRESS";
#endif
  }
  return "Unknown cudnn status";
}

7.4 testar:

cp -r /usr/src/cudnn_samples_v7/ $HOME
cd  $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN

7.5 - instalar outras dependencias

sudo apt-get install libcupti-dev
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
sudo apt-get install openjdk-8-jdk
wget https://github.com/bazelbuild/bazel/releases/download/0.11.1/bazel_0.11.1-linux-x86_64.deb
sudo dpkg -i bazel_0.11.1-linux-x86_64.deb
Clone this wiki locally