Debian 8(Jessie)または9(Stretch)にCUDA Toolkit 7/8/9をインストールする方法は?


26

Debian 8にCuda Toolkit 7.0または8 をインストールする方法は?

Debian 8にはを使用してCUDA Toolkit 6.0ダウンロードしてインストールするオプションが付属していることを知ってapt-get install nvidia-cuda-toolkitいますが、CUDAツールキットバージョン7.0または8でこれを行うにはどうすればよいですか?

以下に説明するように、Ubuntuインストーラーを使用してインストールしようとしました。

sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb

dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

sudo apt-get update

sudo apt-get install -y cuda

ただし、機能せず、次のメッセージが返されました。

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 cuda : Depends: cuda-7-0 (= 7.0-28) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

@nullgeppetto::-)以下の私の答えの手順に従って試してみてください
einpoklum -モニカ復活

回答:


30

次の手順は、CUDA 7.0、7.5、およびいくつかの以前の(およびおそらくそれ以降の)バージョンに有効です。Debianディストリビューションに関しては、JessieとStretchおよびおそらく他のバージョンでも有効です。amd64(x86_64)アーキテクチャを想定していますが、x86(x86_32)に簡単に適合させることができます。

インストールの前提条件

  • g ++ -CUDAのバージョンでサポートされている最新のGCCバージョンを使用する必要があります。CUDA 7.xの場合、これは4.x行の最後のバージョン4.9.3になります。CUDA 8.0では、GCC 5.xバージョンがサポートされています。ディストリビューションがデフォルトでGCC 5.xを使用している場合は、それを使用します。そうでない場合は、GCC 5.4.0で使用します。以前のバージョンは使用できますが、ホスト側コードのより優れた最新のC ++機能サポートのためだけに使用することはお勧めしません。
  • gcc -g ++に付属しています。場合によっては、-xスイッチを使用してCMakeがg ++ではなくgccを起動するようにnvccを設定することもあります(ただし、これについてはわかりません)。
  • libGLU -Mesa OpenGLライブラリ(+開発ファイル?)
  • libXi -X Window System Xinput拡張ライブラリ(+開発ファイル?)
  • libXmu -X Window System「その他のユーティリティ」ライブラリ(+開発ファイル?)
  • Linuxカーネル -実行しているカーネルバージョンのヘッダー。

特定のパッケージのリストが必要な場合は、正確にどのディストリビューションに依存しますが、次を試してください(CUDA 7.xの場合):

sudo apt-get install gcc g++ gcc-4.9 g++-4.9 libxi libxi6 libxi-dev libglu1-mesa libglu1-mesa-dev libxmu6 libxmu6-dev linux-headers-amd64 linux-source

また-dbg、これらのパッケージのいくつかのバージョンを追加して、シンボルをデバッグすることができます。

アイムかなり必ずこのカバーそれをすべて-しかし、私はちょうどすでにインストールしていた何かを見逃しているかもしれません。また、CUDAは少なくとも実験的にclang動作しますが、私はそれを試していません。

CUDAカーネルドライバーのインストール

  1. NVIDIAのCUDAダウンロードページにアクセスします
  2. [Linux]> [x86_64]> [Ubuntu]を選択し、次に最新バージョン(執筆時点ではUbuntu 15.04)を選択します。
  3. .runファイルオプションを選択します。
  4. .runファイル(現在はこのファイル)をダウンロードします。入れないでください/tmp
  5. .runファイルを実行可能にしますchmod a+x cuda_7.5.18_linux.run
  6. ルートになります。
  7. .runファイルを実行します:愚かなシュリンクラップライセンスを受け入れるふりをします。NVIDIAカーネルドライバーのみをインストールする場合は「はい」、それ以外の場合は「いいえ」と言います。

インストールでは、NVIDIAカーネルドライバーがインストールされているはずですが、ツールキットのインストールを続行/再試行する前に再起動する必要があることが通知されます。そう...

  1. 明らかに成功したら、再起動します。

CUDA自体のインストール

  1. ルートになる。
  2. 見つけて実行する cuda_7.5.18_linux.run
  3. 今回は、ドライバーをインストールする場合は「いいえ」、他のすべてをインストールする場合は「はい」を選択し、デフォルトのパスを受け入れます(または、動作するものであれば何でも変更します)。

インストーラーは現在失敗する可能性があります。予想される種類の失敗だと仮定すると、それは良いことです。コンパイラバージョンがサポートされていないことを示しているはずです-CUDA 7.0または7.5はgcc 4.9までをサポートし、デフォルトで5.xバージョンがあります。ここで、見つからないライブラリに関するメッセージが表示された場合、上記の前提条件に関する指示が何らかの理由で失敗したことを意味します。ここでコメントして修正することができます。「正常な障害」が発生したと仮定して、次の手順に進みます。

  1. 今回は--overrideオプションを使用して、.runファイルを再度呼び出します。
  2. 手順11と同じ選択を行います。

CUDAがインストールされるようになりました/usr/local/cuda(デフォルトでは(シンボリックリンク))。しかし、まだ完了していません!

適切なg ++バージョンを使用するようにNVIDIAのnvccコンパイラーに指示する

NVIDIAのCUDAコンパイラは、リンクプロセスの一部としてg ++を呼び出したり、.cuファイルではなく実際のC ++をコンパイルしたりします。おもう。とにかく、デフォルトでは、パスにあるものをすべて実行しますg++。しかし、別のものをg++下に置くと/usr/local/cuda/bin、それが最初に使用されます!そう...

  1. 実行しますsymlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(そして、適切な測定のために、多分symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc

それでおしまい。

インストールを試す

  1. cd /root/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd
  2. make

ビルドは正常に終了するはずです。

  1. ./vectorAdd

次の出力が得られます。

root@mymachine:~/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd# ./vectorAdd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

ノート

  • NVIDIA GDK(GPU Development Kit)をインストールする必要はありませんが、痛くないし、一部の人にとっては役に立つかもしれません。システムのルートディレクトリにインストールします。それはかなり安全で、その後アンインストーラーがあります:/usr/bin/uninstall_gdk.pl。CUDA 8では、すでにCUDA自体IIANMに統合されています。
  • nvidia -...やcuda ...などの名前の追加パッケージをインストールしないでください。傷つくことはないかもしれませんが、助けにはなりません。
  • これらのことを行う前に、を使用して、GPUが認識されることを確認したい場合がありますlspci | grep -i nvidia

...まあ、これのほとんどすべて:もちろん、rootでないとカーネルドライバーをインストールできません。ただし、CUDAコードをビルドせずに(実行ではなく)ビルドできます。
アインポクルム-モニカの復活

これを試してみました。cudaインストーラーはインストールを拒否します。.debファイルを使用する必要があるという警告とともに終了します。

@WernerVanBelle:別の質問として投稿できますか?または、短すぎる場合は少なくとも警告を引用しますか?また、IIRCにはいくつかの「強制」コマンドラインオプションがあります。試してみましたか?
アインポクルム-モニカを

このすべて(ドライバーのインストールを除く)は、ホームディレクトリで非rootユーザーとして実行することもできますが、CUDAコードをビルドするには十分であり、実行することはできません。そのためにはカーネルに適切なnVIDIAドライバーが必要であり、それを実現できるのはrootユーザーのみです。さもなければ提案した私の以前のコメントで申し訳ありません。また、ルート以外のユーザーとしてビルドするには、ディストリビューションのバージョンが新しい場合のみgcc / g ++の独自バージョンをビルドする必要があります(CUDA 7.xの場合はgcc 4.9.3が必要です)。
アインポクルム-モニカを復活させる

@celavek:この回答がDebian 9を十分にカバーしていないと思われる場合は、提案された編集を行う前にその理由を説明してください。
アインポクラム-モニカを復活させる

6

バックポートを使用してそれを行う必要があると思いますnvidia-cuda-toolkit。実際、7.5をdebian jessie にスムーズにインストールしています。

バックポートを無料で追加します/etc/apt/sources.list。私(ジェシー)の場合、これをファイルの最後に配置しました。

# jessie-backports
deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

保存、apt-get update、そして最後に:

apt-get install -t jessie-backports nvidia-cuda-toolkit

1

sources.listにcontribおよびnon-freeリポジトリを追加し、apt-get updateを実行すると、CUDA ToolkitはSynvidticのnvidia-cuda-toolkitの下にあります。


1

古いGPU(GT 720)を使用したDebian 9の「ストレッチ」では、追加の手順が必要です。上記の誰か(@celavek)がこれを持っているのを見るので、私のために働いたものを記入します。受け入れられた答えは、必要なほぼすべてを網羅しています。これを認識することはかなりニッチな例ですが、ここにいくつかのグーグル検索を節約する有用なものがあるかもしれません。

手順1のCUDA 8.0の場合、[レガシーリリース]をクリックし、[CUDA Toolkit 8.0 GA 2]を選択します。次に、Linux、x86_64、Ubuntu、16.04、runfile(ローカル)。

パッケージ化されたドライバーを受け入れず、代わりにGPUに以前にインストールした384.130ドライバーを使用しました。詳細はこちら:Debian Wiki。あなたの走行距離は異なる場合があり、GT 720以外のカードについて話すことはできません。これが私が選んだ道でした。

手順12でローカルInstallUtils.pmができないためにインストールが失敗した場合、cuda_8.0.61_375.26_linux.runファイルを解凍する必要がありますが、-tar mxvfフラグで実行します。次に、(ルートとして)InstallUtils.pmを/ usr / lib / x86_64-linux-gnu / pearl-baseにコピーします。

./cuda_8.0.61_375.26_linux.run --tar mxvf
sudo cp InstallUtils.pm /usr/lib/x86_64-linux-gnu/perl-base

これで、ステップ12のコマンドが成功するはずです。

Debian 9.0にはg ++バージョン6+が付属していますが、これはできません。手順15のvectorAddのコンパイルは失敗します。このホワイトペーパーに従いました:複数のバージョンのGCCをインストールして、バージョン5.5.0をインストールします。5.5.0では、このファイルが必要になります

wget http://mirrors.concertpass.com/gcc/releases/gcc-5.5.0/gcc-5.5.0.tar.xz

これでtarballを解凍します:

tar -xJf gcc-5.5.0.tar.xz

これを機能させるには、いくつかのものを更新する必要がありました(ライブラリと32ビットコンパイルの追加)。

sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential gcc-multilib rpm libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

これで、コンパイラを構成、作成、インストールできます。

--prefix = / usr / local / gcc / 5.5.0フラグで設定することを忘れないでください

これで、ステップ15のvectorAddの例を次のようにコンパイルできます。

make HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++

またはこれ:

export HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++
make

Makefileを変更する必要はありません。コンパイラのオーバーライドを正しく処理します。

これで、CUDA 8.0が正常に動作するようになりました。


0

このページからUbuntuのネットワークインストーラーを使用してみてください。

https://developer.nvidia.com/cuda-downloads#linux

Ubuntu 14. *のインストーラーは、十分な互換性があるはずです。


1
私は、ubuntuインストーラーが機能しなかったことに言及すべきでした-これを反映するように投稿を更新しました。
グレッグ

@Greg、最終的にDebianにCudaをインストールする方法を見つけましたか?
nullgeppetto

@nullgeppetto克服できなかった互換性の問題が多すぎるため、Debianのアイデアをあきらめました。
グレッグ

@グレッグ、うーん、それは私が恐れていたものです。それで、* ubuntuまたは何か他のものに行きましたか?個人的には、まだgtx 960を待っているので、Debianで試してみます...必要であればお知らせします。
nullgeppetto

0

Debian 9 Stretchでのインストールの確認とPATHおよびLD_LIBRARY_PATHの変更

上記のEinpoklumの回答は、CUDA 10.0をDebian 9 Stretchにインストールするのに役立ちました。

CUDAを正常にインストールした後、バージョンを確認できませんでした。また、.bashrcファイルを編集してPATHとLD_LIBRARY_PATHを永続的変更する必要があったため、トラブルシューティングを行いました。


CUDA Toolkitのドキュメントはこちら

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.