本書で例示するソースコードは以下の3つのコンパイラ、ビルドツールで検証しました。
また検証で使ったOSは以下の一つに限定されます。
JDKについては以下のバージョンがインストールされています。
$ java -version java version "1.8.0_92" Java(TM) SE Runtime Environment (build 1.8.0_92-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)
JDKのインストールディレクトリは以下のフォルダとなります。
$ which java /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/bin/java
Javaのホームパス($JAVA_HOME)については以下のようになっています。
$ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
Linux/UnixでのJDKインストールディレクトリは確認していませんが、一番単純な方法は以下のコマンドです。但しこの方式は「原則」として「JDK」が見つかるという点に留意ください。(無論、JDKがシステムにインストールされていることは不可欠です。)
$ cd / $ find . -name 'javac'
ディスク内検索に時間をかけたくない場合は、以下のいずれかにインストールされている可能性が濃厚なので、探してみると良いかもしれません。
/usr/local/ /usr/lib/jvm/
OpenCLにはベンダーが提供する2つのソフトウェアが必要です。
このうちRuntimeライブラリは、SDKやフレームワークと呼ばれるものです。
デバイスドライバについては、各プラットフォームで事情が異なります。プラットフォームのサポートをベンダー別で以下にまとめました。
この中でIntelのLinuxが有償な点は悪いニュースですが、無償でIntelデバイスのLinuxドライバを提供してるBeignetがあります。また第5〜6世代CPUについては無償のデバイスドライバのダウンロードもできます。
Beignetは2016年時点で以下のプロセッサをサポートしてるとのことです。
第3〜4世代のプロセッサで開発する場合にはBeignetを使えますが、バグがあるので公式ページでパッチを入手するようにしてください。
参考までの掲載ですので未検証です。必ず「AMD APP SDK Installation Notes」(AMDのダウンロードサイトにあるAMD_APP_SDK_Installation_Notes.pdf)を確認するようにしてください。
SDKはダウンロードしなくてもapt-get経由でも入手できます。
sudo apt-get install amd-opencl-dev
参考までの掲載ですので未検証です。NVIDIA公式サイトにある「OpenCL_Release_Notes.txt」等で確認してください。
NVIDIA CUDA Toolkitまたはドライバを公式サイトからダウンロード、または下記のようにリポジトリからインストールする必要があります。
$ sudo rpm --install cuda-repo-<distro>-<version>.<architecture>.rpm $ sudo yum clean expire-cache $ sudo yum install cuda
$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb $ sudo apt-get update $ sudo apt-get install cuda
参考までの掲載ですので未検証です。必ず「Intel® SDK for OpenCL Applications 2016 release notes」で確認ください。
SDKについては「Intel® SDK for OpenCL™ Applications for Ubuntu」が用意されているので、インテル公式ページからダウンロードしてください。SDKには第5〜6世代のIntel Coreプロセッサと、Iris Pro、HD Graphicsのスタンドアローンドライバが含まれています。
ドライバについて以前IntelではMedia Server Studioという有償アプリケーションのライセンスを購入する必要がありましたが2016年現在では以下のドライバをダウンロードできるようになっています。
もちろんSDKをダウンロードするだけで構いませんが、AMDのSDKを使ってIntelのSDKは使いたくない場合にはドライバ単体でダウンロードもできます。
参考までの掲載ですので未検証です。必ず「Intel® SDK for OpenCL Applications 2016 release notes」で確認ください。
デフォルトのインストレーションフォルダは以下のようになります。
C:\Program Files (x86)\Intel\OpenCL SDK
参考までの掲載ですので未検証です。必ず「AMD APP SDK Installation Notes」(AMDのダウンロードサイトにあるAMD_APP_SDK_Installation_Notes.pdf)を確認するようにしてください。
Makefileを使う場合はLinux/Unix/Windows(32bit)で以下のように記述します。
CC=gcc //(1) hellowolrd: basic_helloworld.c $(CC) -o $@ $^ -I$(AMDAPPSDKROOT)include -L$(AMDAPPSDKROOT)lib\x86 -lOpenCL
MinGWの場合は「mingw32-gcc」。 |
参考までの掲載ですので未検証です。
NVIDIAの公式サイトのウィザードから適切なGPUドライバまたはCUDA Toolkit 7.5以降をダウンロードしてインストールしてください。インストール後には、NVSDKCOMPUTE_ROOT が設定されているかを確認してください。
OpenCL-1.2のサポートは、CUDA Toolkit 7.0以前ではされていませんので、注意してください。
下記は公式サイトの情報を参考にしたMakefileです。
CC=gcc //(1) hellowolrd: basic_helloworld.c $(CC) -o $@ $^ -I$(NVSDKCOMPUTE_ROOT)\OpenCL\common\inc -L$(NVSDKCOMPUTE_ROOT)\OpenCL\common\lib\Win32 -lOpenCL
MinGWの場合は「mingw32-gcc」。 |
JOCLは以下のSDKをサポートします。
参考までの掲載ですので本項目は未検証です。「 「Intel Linux(Ubuntu)」 」のインストールをすれば以下の手順は不要となるはずです。
以下の手順は JOCL 公式 HP に掲載されているものです。
$ sudo apt-get install rpm alien $ fakeroot alien --to-deb <intelのrpmパッケージのファイル名> $ sudo dpkg -i intel-ocl-sdk-suse+11.1_1.1-2_amd64.deb $ sudo apt-get install libnuma1 $ sudo echo "/usr/lib64/OpenCL/vendors/intel/libintelocl.so" > /etc/OpenCL/vendors/intelocl64.icd」
Intelの公式サイトの手順「Installing Intel® SDK for OpenCL Applications on Linux」)では以下の手順としています。
ちなみに Ubuntu では「 OpenCL ヘッダー」を自動でインストールできます。
$ sudo apt-get install ocl-icd-opencl-dev
Copyright 2018-2019, by Masaki Komatsu