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 のマスター スレーブ レプリケーション オプションをオンラインで変更する方法

推薦する

MySQLはストアドプロシージャを使用して数百万のデータを素早く追加します。サンプルコード

序文インデックスを追加した場合と追加しなかった場合の違いを反映するには、数百万のデータを使用する必要...

NavicatでMySqlスケジュールタスクを作成する方法の詳細な説明

Navicat で MySql スケジュールタスクを作成する詳細な説明イベントは、MySQL が特定...

js タグ構文の使用法の詳細

目次1. ラベルステートメントの紹介2. ラベルステートメントの使用序文:日常の開発では、プログラム...

WindowsとLinux間でファイルを転送する方法

WindowsとLinux間のファイル転送(1)WinSCPを使用して、WindowsファイルをLi...

HTML のキャンバスに基づくスクリーンショットのデモ

冒頭に書いた以前、Renren で JS ベースのスクリーンショット ソリューションについて説明した...

JavaScript イベント委任 (プロキシ) の使用例の詳細

目次導入例: イベントの委任記述方法1: イベント委譲書き方2: 各子要素がイベントをバインドする例...

MySQLの整数データ型tinyintの詳細な説明

目次1.1Tinyint型の説明1.2 練習環境の説明1.3 未署名属性の追加1.3.1 SQLモー...

ページキャッシュを無効にするいくつかの方法を共有する

本日、開発中に、顧客からページをキャッシュしないように要求される方法に遭遇しました。調べたところ、ペ...

MySQL の全体的なアーキテクチャの紹介

MySQL の全体的なアーキテクチャは、サーバー層とストレージ エンジン層に分かれています。サーバー...

Mac でソースコードから MySQL 5.7.17 をコンパイルしてインストールするチュートリアル

1. ダウンロードして解凍します: /Users/xiechunping/Softwares/mys...

Kylin V10 への zabbix-agent のインストール手順

1. インストールパッケージをダウンロードするダウンロードアドレス: https://sourcef...

dockerコンテナは直接実行され、pingを介してパブリックIP操作を取得します。

コンテナを通じてローカル パブリック IP アドレスを取得します。ローカル IP アドレスを使用して...

MySQL ロック制御同時実行方法

目次序文1. 楽観的ロックバージョンフィールドを追加する2. 悲観的ロック読み取りロック完全なテーブ...

MySQLデータベース移行におけるデータ文字化けの問題を解決する

リーダーの指示のもと、Java プロジェクトを引き継ぎ、リファクタリングを行う必要がありました。同時...