
CUDA 10.2 と cublas ライブラリのインストールに関して問題があります。
Cuda ファイルは /usr/local にあり、cublas ファイルは /usr/include ファイルにあります。
今、私は Cuda インストールの HOME_PATH を入力して、その場所を見つけるプログラムを持っています。
cublas ファイルを /usr/local にシンボリックリンクしようとしましたが、プログラムは必要なファイルを見つけることができません。
cublas ファイルを /usr/local にコピーする方法 (保護されています) はありますか? または、cublas ファイルのインストール パスを何らかの方法で変更する方法はありますか?
事前にどうもありがとうございました
クリス
答え1
以下では、最新の Nvidia ドライバーを搭載した Ubuntu システムから開始することを前提としています。
CUDA は単なるアプリケーションですが、特定の (多くの場合古い) コンパイラ バージョンを必要とし、独自の (数バージョン古い) ビデオ ドライバーを提供します。CUDA
リリースには、次の独自のディレクトリがあります。
- bin -- 実行ファイル用
- lib64 -- リンクライブラリ用
- include -- コンパイラファイル
CUDA bin ディレクトリを PATH 環境変数の先頭に追加すると、それらのプログラムにアクセスし、システムのデフォルトのプログラムを上書きできるようになります (g++、gcc、ar、nm、ranlib の古いバージョンの場合と同様)。
CUDA lib64 ディレクトリを LD_LIBRARY_PATH の先頭に追加すると、それらの (共有) ライブラリをプログラムの標準ロードで取得できるようになります。
CUDA include ディレクトリは通常、makefile コンパイラ フラグの変数として追加されるため、これらのファイルはコンパイラによって取得されます。これらの CUDA ファイルをシステムの bin、lib、include ディレクトリに散りばめる必要はありません。アプリケーションは通常、そのようにはしません。CUDA bin、lib64、include ファイルを CUDA リリース ディレクトリの下に保持すると、複数の CUDA リリースを同時にサポートできます。各リリースに関連付けられたスクリプトで PATH と LD_LIBRARY_PATH を変更するだけです。
プログラム分離の唯一の例外は、システムが提供する古いコンパイラをインストールする場合です。CUDA 10.2 では、gcc-8 とツール (ar-8、nm-8、ranlib-) が必要です。CUDA bin ディレクトリに追加されたリンク (gcc、ar、nm、ranlib) を介して古いコンパイラにアクセスします。システムのデフォルトを古いコンパイラに変更することは避けてください (リンクや update-alternatives などを介して)。
古いコンパイラの使用を強制すると、システムの他の部分が壊れる可能性があります (ビデオ ドライバーなど)。 CUDA リリースが十分に古い場合は、標準リポジトリで提供されていない古いコンパイラが必要になる場合があります (CUDA 8.0 の場合は gcc-5 など)。 このようなコンパイラと、必要な共有ライブラリのコピーを自分で用意し、CUDA リリースの bin ディレクトリと lib64 ディレクトリに配置する必要があります。
このような方法で CUDA リリースを設定するのは簡単で、提供された deb ファイルを選択した場所に解凍するだけです。
dpkg-deb --extract CUDAarchive YourDirectory
以前はこれで十分でしたが、10.2 などの CUDA リリースでは、リリース用に提供された deb ファイルの内容が、より多くの deb ファイルになりました。古いリリースの不要な Nvidia deb ファイルを書き留めておき、無視するか削除し、すべての個別の deb ファイルを解凍します。これで CUDA リリース ディレクトリが作成されましたので、PATH と LD_LIBRARY_PATH を変更するスクリプトを設定します (または、複数の CUDA リリースを気にしない場合は、これらの変更を .profile に記述します (bash タイプのシェルを使用している場合))。
このアプローチでは、すべての CUDA ファイルがパッケージ マネージャーの外部に保持されるため、更新は行われません。これは、観点によっては良いことか悪いことかもしれません。
残念ながら、「run file」スクリプトを実行したり、提供されている CUDA リリース deb をインストールしたりすると問題が発生します。
- 古い Nvidia ドライバーが現在のビデオ ドライバーに置き換わります。 うまくいけば、引き続きログインできるようになります。
- 現在の Nvidia ドライバーを再インストールすると、古いドライバーとそのすべての依存関係 (つまりすべての CUDA ファイル) が削除される可能性があります。パッケージ マネージャーの動作を妨げないようにしてください。ただし、CUDA リリース全体のコピーを作成し、パッケージ マネージャーでそれを削除して復元することはできます。
パッケージ マネージャーを使用したこれらのすべての回避策により、最終的には上記のようなパッケージ マネージャー不要の CUDA リリースが実現します。