LoginSignup
1
2

More than 3 years have passed since last update.

Ubuntu20.04にtensorflow,CUDA,cuDNNのセットアップ作業記録 CUDA編

Last updated at Posted at 2020-11-11

この記事の内容

tensorflowで機械学習するために、tensorflowのバージョンに対応するCUDAとcuDNNをローカルでインストールした時の作業を記録した。

本記事はtensorflow 2.3.0を使用するために、CUDA10.1とcuDNN7.6のセットアップを行った。

環境

Ubuntu 20.04

参考サイト

https://codelabo.com/posts/20200229081221

https://medium.com/@exesse/cuda-10-1-installation-on-ubuntu-18-04-lts-d04f89287130

本記事の構成

CUDAセットアップ編

1 事前準備

使いたいtensorfowのバージョンに何のCUDA,cuDNNのバージョンが必要かを調べる。tensorfowの公式サイトで確認できる。
スクリーンショット 2020-11-10 20 06 07

2 CUDAインストーラーをダウンロード

CUDAのインストールというのは実際にはCUDA toolkitのインストールである。CUDAとCUDA toolkitが混同しないように。

公式サイトの通常ダウンロードのところでは最新バージョンのcudaしかダウンロードできないため、アーカイブからダウンロード。

NVIDIA CUDA Archived Documentationで自分のダウンロードしいバージョンを選ぶことができる。
各バージョンのドキュメントはこちら

Screenshot from 2020-11-08 21-42-04

Archived Releases から目的のCUDAを選択

CUDA 10.1

  • Select Target Platform

    Linux

  • Architecutre

    x86_64

  • Distribution

    Ubuntu

  • Version

    18.04

  • Installer Type

    runfile [local]

上記の選択項目にチェックをしてでてきたwgetコマンドをターミナルで実行。

wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run

3 インストーラーの実行

公式ドキュメントのQuick start guideにはインストーラーの実行前に必要な作業が載っているのでそれを順次実行する。
スクリーンショット 2020-11-11 10 45 54

3.1.Nouveauドライバの無効化

  • 確認コマンド
#nouveauがロードされているかを確認 (何も出なかったら無効化の作業をしなくていいかも)
$ lsmod | grep nouveau

無効化への変更作業

etc/modprobe.d/blacklist-nouveau.confに

blacklist nouveau  
options nouveau modeset=0  

を記述して適応する。

$ cd /etc/modprobe.d
$ sudo touch blacklist-nouveau.conf
$ sudo chmod 777 blacklist-nouveau.conf
$ echo blacklist nouveau > blacklist-nouveau.conf
$ echo options nouveau modeset=0 >> blacklist-nouveau.conf

$ cat blacklist-nouveau.conf #中身確認

カーネルinitramfsを再生成

sudo update-initramfs -u

3.2 runlevelを一時的に3にして再起動するためにkernel parameterに"3","nomodest"を追加

※この作業はしなくても大丈夫だった。

runlevelについて

  • 3 マルチユーザーモード(テキストログイン)
  • 5 マルチユーザーモード (グラフィカルログイン)

現在のrunlevelの確認

$ runtime
N 5
  • level3への変更
$ systemctl set-default multi-user.target
  • level5への変更
$ systemctl set-default graphical.target

手順

1 起動時、すぐShiftを押すてgrub menuを表示

Shiftをしても出ない場合、起動ごとにgrub menuを出す設定をするといい。

grub menu出し方:https://qiita.com/ricrowl/items/1d038d6b4412feedb25e

2 * Ubuntuのところにポイントがある時に「E」をクリック。

IMG_6926

3 次に表示されるlinuxの行のquiete splash のあとに "3"と"nomodeset"を記述してctr+X

IMG_6934

runlevel 3は、Xserverを起動しないことを意味し、nomodesetはnouveauモジュールのロードをブロックこれは、ビルド後にnvidiaモジュールをロードできるようにするためです。

3.3 表示にNVIDIAGPUを使用するxorg.confファイルを作成

$ sudo nvidia-xconfig

これをしたあとに再起動するとマザボからのHDMIの信号がなくなった。GPUの他の映像ポートに繋いで対処。
このコマンドの意味は調べていないので、後で調べる必要がある。

3.4 gccのバージョンをグレードダウンする。

既存のgccのバージョン9.3はサポートしていため、最新のgccのバージョンでは、.runの実行でエラーが生じる

udo apt -y install gcc-8 g++-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 8

参考:https://askubuntu.com/questions/1236188/error-unsupported-compiler-version-9-3-0-when-installing-cuda-on-20-04
tensorflowのドキュメントでは、gcc7.3.1を推奨しているが、gcc8でも実行できた。

3.5 runファイルの実行

sudo sh cuda_10.1.243_418.87.00_linux.run #--silent

.runの実行時では、versino.418のドライバーもインストールするかの選択がある。Quick Start guideの--silentオプションをして実行すると自動でversino.418のドライバーもインストールしてしまうため、先に入れたドライバーと競合してエラーが生じてしまう。何もオプション付けないで実行する。

3.6 CUDAのPATHを通す

echo -e "\n## CUDA and cuDNN paths"  >> ~/.bashrc
echo 'export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashr
source ~/.bashrc

3.7.CUDAの確認

nvcc -V
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2