13.8. OpenCL SDK

OpenCL SDKはアプリケーションから各ベンダーが実装するOpenCLライブラリを呼ぶことを可能とします。

MacではSDKではなくフレームワークが提供されていますが、WindowsやLinuxでアプリケーションを動作させるにはOpenCL SDKをインストールする必要があります。

IntelはSDK for OpenCL、AMDはAccelerated Parallel Processing SDK(簡略するとAppSDK)、NVIDIAはGPU Computing SDK(最新版はCUDA Tookitに統合、OpenCL-1.2サポートはCUDA Toolkit 7.5)をそれぞれ提供しています。

SDKはハードウェア附属のメディアキットや、各ベンダーの開発者向けホームページからダウンロードできます。

13.8.1. Ubuntu 18.04

$ tar xf intel_sdk_for_opencl_applications_2020.0.270.tar.gz
$ cd intel_sdk_for_opencl_applications_2020.0.270/
$ ls
install.sh  mediaconfig.xml  package_id.txt  pset  README.txt  silent.cfg
$ ./install.sh

13.8.2. Mac OS X

Mac OS XではOpenCLは標準でインストールされています。そのためインストールは不要です。

以下がMac OS XでのOpenCLのシステムコンポーネントの種類です。

Table 13.3. Mac OS X、OpenCLシステムコンポーネント

項番

システムコンポーネント

1

OpenCLアプリケーション

2

OpenCLフレームワーク

3

OpenCL準拠デバイス


13.8.3. Installable Client Driver(ICD)

ICDはベンダーから独立した共通ライブラリとなるOpenCL.dllや、libOpenCL.soライブラリが、各ベンダーが提供するハードウェアのドライバとリンクする仕組みを提供します。

ICDはクロノスのヘッダーを使ってOpenCLライブラリを呼び出したアプリケーションが、個々のベンダーに毎回リンクしたりする手間を省いてくれます。

強いてICDを評するのであれば、開発者が普段意識したりする必要はなく、OpenCLヘッダーをインクルードすると自動でデバイスドライバとリンクしてくれるライブラリがバックグランドにあるという認識を持つだけで十分です。

13.8.4. Windows

WindowsではOpenCL.dll、OpenCL.lib(dllのスタティックラッパー)といった共通ライブラリを呼び出すと、自動的にクライアントのICDライブラリ(例:amdocl64.dll、nvcuda.dll)にリンクされます。

項番

システムコンポーネント

1

OpenCLアプリケーション

2

OpenCL.dll

3a

クライアントドライバ(ICD)

3b

amdocl.dll

nvcuda.dll

4

OpenCL準拠デバイス

13.8.5. Linux

LinuxもWindowsと同様に、共通ライブラリとなるlibOpenCL.soを呼び出すと、各ベンダーが提供するICDライブラリにリンクされます。

項番

システムコンポーネント

1

OpenCLアプリケーション

2

libOpenCL.so

3a

クライアントドライバ(ICD)

3b

libamdocl.so

libcuda.so

4

OpenCL準拠デバイス

Copyright 2018-2019, by Masaki Komatsu