UbuntuはCUDAの複数のバージョンをインストールし、いつでも切り替えることができます

UbuntuはCUDAの複数のバージョンをインストールし、いつでも切り替えることができます

CUDA とは何かを紹介するのではなく、複数の CUDA バージョンの共存とリアルタイム切り替えをどのようにして実現するかについて直接お話しします。

1. CUDAの複数のバージョンをインストールする

ここでは、cuda9-1 バージョンと cuda9-0 バージョンを例に挙げます (どちらを最初にインストールしてもかまいません)
まず、cuda バージョン ライブラリで必要な cuda バージョンを選択します。

次に、対応するインストール パッケージを選択します。ここでは、後で各 cuda のインストール パスを設定できるように、runfile タイプのインストール ファイルを選択します。

ダウンロードが完了したら、cd コマンドを使用して cuda_8.0.61_375.26_linux.run ファイルがあるディレクトリに移動し、次の手順を実行してインストールします (ファイル名に注意してください。先頭の cuda_8.0.61 は cuda のバージョンを表し、末尾の 375.26 は対応する NVIDIA ドライバーのバージョンを表します。ここでは cuda8.0 のインストール プロセスを例として使用していますが、9.0 および 9.1 にも同じことが当てはまります)。

インストール プロセス中、ソフト リンクを確立する際には注意が必要です。cuda を初めてインストールする場合は、迷わず y (はい) と入力してください。ただし、cuda の追加バージョンをインストールする場合は、y (はい) を選択するかどうかは、特定のニーズによって異なります。つまり、現在インストールされている cuda のバージョンを有効にする場合は、y を選択します。このバージョンをインストールするだけで、当面有効にしない場合は、n を選択します。

#まず、関連する依存関係をインストールするために次のコマンドを実行します。
#そうしないと、「推奨ライブラリがありません」というエラーが発生します。sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 


sudo sh cuda_8.0.61_375.26_linux.run #インストールを開始#..一連のプロトコル命令...
#プロトコルの説明を直接終了するには、q を押します。
zerozone@zerozone: accept/decline/quit: accept #契約に同意します Linux-x86_64 375.26 用の NVIDIA Accelerated Graphics Driver をインストールしますか? 
y)es/(n)o/(q)uit: n #グラフィックドライバパッケージがインストールされているかどうか。グラフィックドライバはインストールされているので、nを選択します。

CUDA 8.0 ツールキットをインストールしますか?
(y)es/(n)o/(q)uit: y #ツールキットをインストールするかどうかは、yを選択してください

ツールキットの場所を入力
[ デフォルトは /usr/local/cuda-8.0 ]: #Toolkit のインストール アドレス、デフォルトでは Enter キーを押します /usr/local/cuda にシンボリック リンクをインストールしますか?
(y)es/(n)o/(q)uit: y #リンクを追加**このリンクに注意してください。以前に別のバージョンの cuda をインストールしたことがある場合は、この新しいバージョンの cuda を使用するつもりがない限り、このリンクを指定すると cuda がこの新しいバージョンを指すため、ここでは no を選択することをお勧めします**

CUDA 8.0 サンプルをインストールしますか?
(y)es/(n)o/(q)uit: y #サンプルをインストールCUDAサンプルの場所を入力してください
 [ デフォルトは /root ]: #デフォルトのインストール アドレスは許容されます# ***インストール情報***
/usr/local/cuda-8.0 に CUDA ツールキットをインストールしています...

推奨ライブラリが見つかりません: libXi.so
推奨ライブラリが見つかりません: libXmu.so
#推奨ライブラリが見つからないというエラーがあることに注意してください。
#これは、ブロガーが初めてインストールするときに、関連する依存関係をインストールするための初期コマンドを追加しなかったためです。
#依存関係を追加して再度インストールした後、/root に CUDA サンプルをインストールする際にエラーが発生しなくなりました...
サンプルを /root/NVIDIA_CUDA-8.0_Samples にコピーしています...
サンプルのコピーが完了しました。

===========
= 概要 =
===========
ドライバー: 選択されていません
ツールキット: /usr/local/cuda-8.0 にインストール
サンプル: /root にインストールされていますが、推奨ライブラリがありません

必ずご確認ください
 - PATHに/usr/local/cuda-8.0/binが含まれている
 - LD_LIBRARY_PATH に /usr/local/cuda-8.0/lib64 が含まれているか、/etc/ld.so.conf に /usr/local/cuda-8.0/lib64 を追加し、root として ldconfig を実行します。

CUDAツールキットをアンインストールするには、/usr/local/cuda-8.0/binにあるアンインストールスクリプトを実行します。

CUDA の設定の詳細については、/usr/local/cuda-8.0/doc/pdf の CUDA_Installation_Guide_Linux.pdf を参照してください。

***警告: インストールが不完全です。このインストールでは CUDA ドライバーがインストールされませんでした。CUDA 8.0 の機能が動作するには、バージョン 361.00 以上のドライバーが必要です。

このインストーラーを使用してドライバーをインストールするには、<CudaInstaller> をこの実行ファイルの名前に置き換えて、次のコマンドを実行します。

  sudo <CudaInstaller>.run -silent -driver

ログファイルは /tmp/cuda_install_6388.log です。  
# ***インストール完了***

CUDA関連の環境変数を設定する

~/.bashrcファイル(または~/.zhsrc)を変更し、ファイルの末尾に環境変数を追加します。

Tensorflow の公式インストール プロセスでは、PATH および LD_LIBRARY_PATH と CUDA_HOME 環境変数を構成することに注意する必要があります。

vim ~/.bashrc #設定ファイルを変更します(zshを使用している場合は、~/.zshrcファイルを変更する必要があります)

#ファイルの最後に export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64 を追加します
エクスポート PATH=$PATH:/usr/local/cuda/bin
CUDA_HOME=$CUDA_HOME:/usr/local/cuda をエクスポートします。

同じ方法を使用して、インストールする cuda ツールキットの別のバージョンをダウンロードします (runfile タイプであることに注意してください)。インストール プロセス中に、cuda シンボル リンクの選択に注意してください (最初のインストールの場合は y を選択し、追加のバージョンをインストールする場合は n を選択します)。

2. 複数のバージョンのcudaを切り替える

複数の cuda バージョンをインストールした後、次の図に示すように、 /usr/local/ディレクトリにインストールした cuda バージョンを表示できます。

ここで、cuda-9.0 と cuda-9.1 はインストールした 2 つの cuda バージョンであり、cuda は指定した cuda バージョンを指すソフト リンクです (上記の環境変数を設定するときに、cuda-9.0 と cuda-9.1 の代わりに cuda が使用されることに注意してください。これは主に、毎回環境変数の値に移動する必要がないように、cuda バージョンの切り替えを容易にするためです)

次のように、stat コマンドを使用して、現在の cuda ソフト リンクが指している cuda バージョンを表示できます。

ご覧のとおり、ファイル タイプはシンボリック リンクであり、それが指しているディレクトリは/usr/local/cuda-9.0です。cuda-9.1 バージョンを使用する場合は、ソフト リンクを削除して、cuda-9.1 バージョンを指すソフト リンクを再確立するだけです (名前は cuda のままであることに注意してください。これは、 bashrcファイルの設定と一致している必要があるためです)。

sudo rm -rf cuda
sudo ln -s /usr/local/cuda-9.1 /usr/local/cuda

cuda の別のバージョンに切り替える場合は、ソフト リンクを作成するときに cdua の正しいパスを変更するだけです。

Ubuntu に複数のバージョンの CUDA をインストールし、いつでも切り替える方法については、これで終わりです。Ubuntu に複数のバージョンの CUDA をインストールする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Ubuntu での CUDA と CUDNN のインストールとアンインストールの実装
  • Ubuntu16.04にCUDA9.0をインストールするための詳細なチュートリアル
  • Ubuntu 20.04 に cuda10.1 をインストールする手順 (グラフィック チュートリアル)
  • Ubuntu インストール cuda10.1 ドライバ実装手順
  • Ubuntu 20.04 CUDA & cuDNN のインストール方法 (グラフィカル チュートリアル)
  • Ubuntu 16.04 に nvidia ドライバー + CUDA + cuDNN をインストールする詳細なチュートリアル
  • ubuntu16.04 に複数のバージョンの CUDA をインストールする方法
  • CUDA10.0 のインストールと Ubuntu での問題

<<:  Vue.js $refs 使用例の説明

>>:  MySQL のマスター スレーブ レプリケーション オプションをオンラインで変更する方法

推薦する

nginxを使用して画像サイズを動的に変換し、サムネイルを生成します。

Nginx ngx_http_image_filter_module モジュール (nginx バ...

Windows サーバー管理におけるセキュリティの考慮事項

ウェブサーバー1. Webサーバーは、wev、cgi、asp機能を無効にするなど、不要なIISコンポ...

HTML タグ マーキーを使用してスクロール効果を実現する簡単な方法 (必読)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

innodb_autoinc_lock_mode の表現と値の選択方法についての簡単な説明

前提条件: Percona 5.6 バージョン、トランザクション分離レベルは RR mysql>...

Ubuntu 18.04 MySQL 8.0 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0のインストールと設定方法を参考までに紹介します。具体的な内容は以下の...

VMware Workstation に Windows Server 2019 をインストールする (グラフィック チュートリアル)

キーの入力を求められた場合は、[キーがありません]を選択します。デスクトップエクスペリエンスを選択す...

VueRouterルーティングの詳細な説明

目次vueルーター1. ルーティングの概念を理解する1.1 ルーティングとは何ですか? 1.2. バ...

バッチモードでtopコマンドを実行する方法

top コマンドは、Linux システムのパフォーマンスを監視するために誰もが使用している最適なコマ...

Windows 8 での MySQL Community Server 5.6 のインストールと設定のチュートリアル

この記事では、Windows 8 での MySQL5.6 のインストールと設定のチュートリアルを記録...

CSSは高さと幅を固定した要素の比例表示効果を実現します

padding-top パーセンテージを使用すると、固定幅と比例した高さの表示を実現できます。現在の...

CentOS 6.8 に MySQL 8.0.18 をインストールするチュートリアルの簡単な分析 (RPM 方式)

今日は、CentOS 6.8 サーバーに MySQL 8.0.18 をインストールする方法を記録しま...

MySQL の current_timestamp の落とし穴とその解決策を共有する

目次MySQL の current_timestamp の落とし穴エラーを報告する私の解決策mysq...

HTML でよく使われるタグの概要 (必読)

コンテンツ詳細タグ: <h1>~<h6>タイトルタグ<pre>テ...

JavaScript 関数構文の説明

目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...

Vueプロジェクトウォッチで関数が繰り返しトリガーされる問題の解決

目次問題の説明:解決策1解決策2問題の説明:ページ A と B の 2 つがあり、各ページにはget...