スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ubuntu 13.04とCUDA 5

Ubuntu 13.04が公開されて、12.10からアップグレードして使用している。CUDAを使う上で何よりありがたいのは、今回Ubuntuの側でCUDA 5に正式対応してくれたことである。CUDA toolkitもUbuntuのパッケージとして提供され、もうNVIDIAから独自にパッケージをダウンロードしてインストールする必要はなくなった。

nvidia-cuda-{dev,doc,gdb,tookit}
nvidia-opencl-dev
nvidia-profiler
nvidia-visual-profiler
nvidia-common

あたりが関連パッケージである。またディスプレイドライバも同じく、通常はnvidia-currentだけ入れておけばいいようだ。私は今のところ明示的にバージョンを指定して、nvidia-304 (304.88-0ubuntu1)を入れている。

今まではUbuntuで収録しているCUDAのバージョンは4.28だったので、直接CUDA 5 を使用して開発を行う場合はNVIDIAからのパッケージを入れる必要があったし、その場合、Ubuntu提供のCUDA 4.28は切り替えが面倒なので入れていなかったのだが、そうするとPyCUDAなどのUbuntuのCUDAパッケージに依存するパッケージが入れられないという面倒さがあった。またgccも4.6と4.7を共存させて、必要に応じて切り替えるなどの対処が必要だったが、これも得に対処は必要なくなった。今回のアップデートでそういう諸々の面倒さが解消されたのは大変に助かる。


今までNVIDIAからダウンロードしたパッケージを使用していたので、ヘッダーは/usr/local/cuda/include、ライブラリは/usr/local/cuda/lib64にインストールされていたのだが、どちらもシステム標準の/usr/include、/usr/lib64に変わった。そのため、コンパイル時にMakefile中で-Iや-Lオプションでこれらのパスを明示的に指定する必要はなくなった。

ただし、例外として、cuDevice*等のCUDAドライバAPIを直接ソース中で使用している場合、つまりMakefile中で対応するライブラリlibcuda.soを明示的に-lcudaでリンクしている場合は、このライブラリだけは

/usr/lib/nvidia-304/libcuda.so

のように、ドライババージョンに明示的に依存するパスに置かれているので、このディレクトリを-Lオプションで
指定してやる必要がある。私は自分のプログラムを見直して、基本的にドライバAPIに依存せず、すべてランタイムライブラリだけで済ませるようにしたので、-Lオプションはなしで-lcudartだけを指定している。

今回のアップデートで非常にCUDA開発の環境もすっきりしたが、ちょっと微妙なのはCUDA関連の多数のヘッダーファイルが/usr/includeの直下にインストールされるようになっていることである。これは/usr/include/cuda内とかにしてくれても良かったかなという気がする。

あと、もう一つの注意点は、thrustを使用する場合、

/usr/include/thrust/iterator/iterator_facade.h(326): warning: a __host__ function("thrust::experimental::operator==") redeclared with __host__ __device__, hence treated as a __host__ __device__ function

のような警告が出力される場合がある。これは、いずれthrust側で修正されると思うが、当面GitHubのここにあるパッチを手動で当てればいいようだ。


スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

GM3D

Author:GM3D
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。