13.1. OpenCLバージョンについて

OpenCLをサポートするデバイスは2016年時点で、1.1または1.2のバージョンが主流となっており、本書(初版)では、OpenCL 1.2をベースとします。

OpenCL2.0や2.1といった最新の規格の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.1はC++14規格をベースにしたOpenCL C++ APIを提供しています。そのためOpenCL-C APIのレガシーコードベースを使うより、むしろ完全な移行を目指す流れになるかと思います。OpenCL 1.0-2.0までとは実装が大きく異なるため、OpenCL 2.1サポートが各ベンダーの製造するハードウェアに導入される時期についても未定となっています。

Copyright 2018-2019, by Masaki Komatsu