IntelのCPU用OpenCLランタイムをUbuntu 15.10で使う
IntelのOpenCLランタイムは、CPUをデバイスにできるのでOpenCLを特別なH/Wなしで試したい場合に役立ちます。しかし、CentOS用のRPM版パッケージのみが提供されています。人気LinuxディストリビューションのひとつであるUbuntuは、パッケージ管理がRPMベースでないため、Ubuntuでの使用には少し工夫が必要です。本稿では、Ubuntu 15.10上でIntel OpenCLのCPUランタイムをインストールする方法を紹介します。
本稿は、ある種のHackネタであり、動作を保証するものではないですYO!
OpenCL実行環境の調べ方
$ clinfo
Number of platforms 0
上記のようにclinfoコマンドで調べることができます。この例では、使用できるプラットホームが0(すなわち、ない)と表示されています。
ランタイムの入手
以下のインテルのサイトから、「Download」「Download the driver」「OpenCL™ Runtime 14.2 for Intel® CPU and Intel® Xeon Phi™ Coprocessors for Linux* (64-bit)」と順次リンクをたどることで、opencl_runtime_14.2_x64_4.5.0.8.tgzというファイルを入手できます。
https://software.intel.com/en-us/intel-opencl
Ubuntu環境へのインストール
以下の説明では、バージョン部4.5.0.8.を、適宜ダウンロードしたものに置き換えてください。
$ cd ~
$ tar xvf opencl_runtime_14.2_x64_4.5.0.8.tgz
$ rpm2cpio pset_opencl_runtime_14.1_x64_4.5.0.8/rpm/opencl-1.2-base-4.5.0.8-1.x86_64.rpm | cpio -id
$ rpm2cpio pset_opencl_runtime_14.1_4.5.0.8/rpm/opencl-1.2-intel-cpu-4.5.0.8-1.x86_64.rpm | cpio -id
これで、ホームディレクトリのopt/intel以下にランタイムがコピーされました。次いで、ランタイムがICDローダーに認識されるように設定します。
$ sudo mkdir -p /etc/OpenCL/vendors
$ echo -n ~/opt/intel/opencl-1.2-4.5.0.8/lib64/libintelocl.so | sudo tee /etc/OpenCL/vendors/intel64.icd
また、以下のライブラリに依存するのでインストールしておきます。
$ sudo apt-get install libnuma1
この状態で、clinfoを実行すると、次のように動作していることがわかります。
$ clinfo
Number of platforms 1
Platform Name Intel(R) OpenCL
Platform Vendor Intel(R) Corporation
Platform Version OpenCL 1.2 LINUX
Platform Profile FULL_PROFILE
Platform Extensions cl_khr_icd cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_
addressable_store cl_khr_spir cl_intel_exec_by_local_thread cl_khr_depth_images cl_khr_3d_image_writes cl_khr_fp64
Platform Extensions function suffix INTEL
Platform Name Intel(R) OpenCLNumber of devices 1
Device Name Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz
Device Vendor Intel(R) Corporation
Device Vendor ID 0x8086
Device Version OpenCL 1.2 (Build 8)
Driver Version 1.2.0.8
Device OpenCL C Version OpenCL C 1.2
Device Type CPU
Device Profile FULL_PROFILE
(以下省略)
上記の例では、ホームディレクトリの下にランタイムライブラリを展開して、そのまま使用しています。システム全体で使用する場合には、/optなどに移動したほうが便利でしょう。その際、/etc/OpenCL/vendors/intel64.icdの中のパスを変更することにも留意してください。
付録:OpenCLプログラムのビルド用ヘッダ・ライブラリのインストール
なお、Intelは、OpenCLを使用するプログラムをビルドするためのヘッダ・ライブラリ(いわゆるSDK)も提供していますが、基本的には、Ubuntuの標準パッケージを使ってビルドすることができます。
$ sudo apt-get install ocl-icd-opencl-dev