OpenCLをサポートするデバイスは 2016 年時点で、1.1または1.2のバージョンが主流となっており、本書(初版)では、OpenCL 1.2 をベースとします。
OpenCL2.0 / 2.1 / 2.2 といった最新の規格のSDKやライブラリーはサポートしているプロセッサー(CPU/GPU)が少数なため現時点では実験的なものであり、ハードウェアベンダーが随時対応中の状況です。
例えば、ベンダーの中でも最も熱心に 2.0 規格の実装を推進しているAMDではOpenCL 2.0規格のSVM Atomicsが一部のハードウェアでしかサポートされていなかったりします。
いまだにサポートするSDKとハードウェアがないベンダーもあり、OpenCL 1.2が主流な状態は今後もしばらくの間は続く見込みです。
OpenCLは上位互換性(backward compatibility)をもつため、OpenCL 2.0をサポートするハードウェアで最新のSDKをインストールした環境でもOpenCL 1.2用に作ったプログラムは正常に動作する設計となっています。
OpenCL 2.2 は C++14 規格をベースにしたOpenCL C++ APIを提供しています。
そのためOpenCL-C APIのレガシーコードベースを使うより、むしろ完全な移行を目指す流れになるかと思います。
OpenCL 1.0-2.0 までとは実装が大きく異なるため、OpenCL 2.2 サポートが各ベンダーの製造するハードウェアに導入される時期についても未定となっています。
Copyright 2018-2019, by Masaki Komatsu