分12345NVIDIAが提供するCUDAは,NVIDIA製のGPUを用いて高速な並列処理を行うためのプラットフォームであり,ツールキットです。ここ数年話題になっている深層学習でも基本的な技術の一つとして採用されています。LTSにインストールする方法を紹介しましょう。Unit)は,その用途からシェーダーの汎用化・並列化が進んだ結果,特定の精度の単純な計算処理であればCPUの数倍の能力を持つまでに至りました。Units⁠)⁠」という考え方です。グラフィックス向けのAPIを使って汎用的な計算をさせるとなると,そのプログラミングには幅広い知識が必要です。NVIDIAはC/C++のような「普通の」言語でGPUを操作できる開発環境である「CUDA」を提供することで,GPGPU向け開発のハードルを一気に下げたのです(※1⁠)⁠。※1当然のことながらCUDAはNVIDIA製のGPUでしか動作しません。それに対してIntelやAMDも含む多くのハードウェアをサポートした,より汎用的でオープンなフレームワークとして「OpenCL」が存在します。OpenCLはNVIDIA製のGPUもサポートしていますので,汎用的なGPGPU向けコードを書きたいのであればOpenCLを使うという手も存在するでしょう。CUDAはOpenCLに比べると,NVIDIA製GPUのハードウェア性能を最大限引き出せるように設計されています。GPGPUを使いたいということはとどのつまり性能こそが最重要であるケースですので,NVIDIA製GPUを使う限りにおいてはあえてOpenCLを選択する理由は少ないものと思います。CUDAを使うのであればCUDAに対応したGPUが必要です。GPGPU専用として高性能コンピューティング向けに提供されているTeslaシリーズはもちろんのこと,ワークステーション向けのQuadroやデスクトップ・ゲーム向けのGeForce,モバイル向けのTegraにいたるまで,ここ数年でNVIDIAからリリースされたGPUやGPUを組み込んだチップであれば,大抵はGPGPU用途としてCUDAを利用可能です。アーキテクチャーを刷新したKepler以降のGPUがよく使われています。昨年リリースされたPascalを搭載したGPUはもちろんのこと,Pascalの登場によって旧世代となったMaxwellを搭載するGPUもハイエンド側の価格が下がっており,「⁠深層学習などを人間が学習する」ためにお手頃な存在となっているようです。今から入手するのであれば,Maxwellアーキテクチャーを搭載したGPUのうち値段が下がっているものか,Pascalアーキテクチャーを搭載したGPUになるでしょう。予算と電源が許せばよりハイエンドなGPUが選択肢に,「⁠とりあえず試す」だけなら安めで低消費電力なGPUが選択肢になります。「⁠用途に合わせてグレードを選ぶ」必要はあるものの,Kepler以降であればどのグレードであってもCUDAがまったく使えないということはまずありません(※2⁠)⁠。8.0で「Deprecated(廃止予定⁠)⁠」となりました。次のリリースのCUDAからはFermiアーキテクチャーをサポートしなくなります。GPUドライバーについては,引き続きFermiもサポートするようです。GPUを動かすようなスペースがないということであれば,クラウドのGPUインスタンスを使うという手もあります。EC2のg2.2xlargeだとKepler世代のGPUを東京リージョンのオンデマンドインスタンスで「$0.898/1時間」ぐらいの価格になるようです。100時間ぐらいであればGPUボードを買うよりも安いですし,CUDA用に新しいマシンを用意したり,さらには電気代や場所代,ご家庭内での立場も考えると,大抵の人にとってはもっと長時間使ってもペイすることでしょう。GPUインスタンスそのものにいくつかの制約はあるものの,基本的にLinuxが起動してしまえばあとは物理マシンと同じです。第454回で紹介したNVIDIAドライバーのインストール方法もそのまま使えます。ディスプレイの出力先がNVIDIAのGPUになっており,変更するすべはないという点については注意が必要です。Finder」で検索すると良いでしょう。EC2であればこのページのリンクをクリックするだけで,インスタンスの立ち上げページに移動できます(※3⁠)⁠。Locator」のページを参照してください。GPUインスタンスを使う場合はHVMベースのインスタンスが必要ですし,PVベースのインスタンスを作る理由はほぼないでしょう。Ubuntuの公式リポジトリのCUDAについてCUDAは残念ながらプロプライエタリなソフトウェアです。Ubuntuの公式リポジトリにもそのパッケージは存在します。7.5となります(※4⁠)⁠。8.0にはさまざまな機能拡張や不具合の修正が行われているため,今からCUDAをインストールするのであれば,最新の8.0を導入したいところでしょう。公式リポジトリのパッケージ版のCUDAは,NVIDIAのドライバーについても公式リポジトリのパッケージを使う前提になっています。第454回のように,NVIDIA製のドライバーをスクリプトでインストールした場合は,このパッケージは使えません。Maxwellアーキテクチャー以前のGPUに対して,デスクトップ用途でCUDAをお手軽に利用したい場合のみパッケージ版が選択肢となります。8.0を導入可能です。8.0をインストールしましょう。8.0をインストールするスクリプトをダウンロードします。8.0のダウンロードページから「Linux」「⁠x86_64」「⁠Ubuntu」「⁠16.04」を順番に選択してください。CUDAのダウンロード現在のCUDAは,ホストとして32bitアーキテクチャーを利用できません。32bit版のUbuntuでは動きませんので注意してください。LTSでもそのまま利用できるはずです。Type」として次の4つのタイプが提示されます。(local)「全部入り」の実行スクリプトです。CUDAのツールキットはもちろんのこと,サンプルコードやドライバーも同梱されています。そのためサイズが1.4GBと非常に大きくなっています。(local)」の中身を個別にDebianパッケージにしたものです。ダウンロードするサイズは,さらに大きく(1.9GB)なります。(network)NVIDIAが提供するパッケージリポジトリを登録するためのパッケージです。上の2つに比べるとサイズは小さくなりますが,このパッケージをインストールしたあとに,CUDA本体をパッケージマネージャーを用いてネットワーク越しにダウンロード・インストールする必要があります。(local)名前からの推測ですがクラスタ向けのインストールパッケージです。原則としてライブラリとドライバーのみを複数のノードにインストールすることを想定していて,CUDAコンパイラーなどは「開発用パッケージ」という扱いになっています。「普通のPCでCUDAを試す」場合は,このタイプを使うことはありません。(network)」をおすすめします。このタイプであればNVIDIAのパッケージリポジトリが追加されるため,CUDAの新バージョンへの更新が簡単になります。NVIDIA製ドライバーの比較的新しいバージョンも同じリポジトリに登録されているため,このパッケージをインストールするだけでどちらも新しいバージョンに保てるというメリットがあるのです。(local)」は一度ダウンロードした上で,複数のマシンにデプロイしたい場合に有用です。こちらは「/var/cuda-repo-8-0-local」にローカルパッケージリポジトリを作成し,そこからCUDA関連のパッケージをインストールすることになります。(local)」をインストールします。他のマシンはリポジトリ用インスタンスからパッケージをインストールすれば,インターネット上のトラフィックは最小限で済みます。(local)」にしろ,2017年1月時点でインストールできるNVIDIA製ドライバーは367.48と,Ubuntu公式リポジトリにある367.57より古いバージョンになっています。Tiなどをサポートしていません。Systemなども一緒にインストールします。(local)」が最善の方法になるでしょう。