8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu上でNVIDIAのOpenCLドライバを使う

Last updated at Posted at 2015-03-11

Ubuntu 14.04 LTS (64bit)環境で、NVIDIAのGPUを使ってOpenCLを試そうとしたら案外ハマったので記録。

前提

NVIDIAドライバをapt管理するため、xorg-edgersを利用します(NVIDIA本家のインストーラを使ったことがないので、どちらがいいとかはわかりません)。

$ sudo add-apt-repository ppa:xorg-edgers/ppa
$ sudo apt-get update
$ sudo apt-get install nvidia-340

ヘッダファイルがない

ヘッダファイルが必要なら(当然必要ですよね)devパッケージを入れる必要があります。

$ sudo apt-get install nvidia-340-dev

/usr/include/nvidia-340/以下にCL/cl.hなどがインストールされます。

一見必要そうだけどインストールしなくて良いパッケージ

nvidia-libopencl1-340というパッケージがあるんですが、これはインストールしなくても動きます。ocl-icd-libopencl1が気にくわない時だけインストールすれば良いのだと想像しています。

libOpenCLのlinker nameが無い

libOpenCL.soへのシンボリックリンクが作られているかどうか、念のため確認しましょう。

$ ls -la /usr/lib/x86_64-linux-gnu/libOpenCL.so
lrwxrwxrwx 1 root root 18  3月 16  2014 /usr/lib/x86_64-linux-gnu/libOpenCL.so -> libOpenCL.so.1.0.0

上記のようなシンボリックリンクが存在すれば正常です。少し前に試したときは、なぜかこのシンボリックリンクを手動で作る必要がありました(nvidia-libopencl1-340のバグかもしれません…)。

$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s libOpenCL.so.1 libOpenCL.so

それでも微妙に動かない…

この状態だと、OpenCLのclGetPlatformIDs()が失敗します。

さらに下記パッケージをインストールする必要がありました。

$ sudo apt-get install nvidia-modprobe

ちなみに、うまく動かない状態でclGetPlatformIDs()が返す値はCL_PLATFORM_NOT_FOUND_KHR(-1001)でした。

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?