13.5. OpenCLの特徴

まずOpenCLを学び始めた方がよく誤解する点について明確にさせて頂きます。OpenCLについて解説する場合に、デバイスの図表をみながらOpenCLの作用を理解して頂くことになりますが、あたかもOpenCLでプロセッサーの処理ユニットへ直接コーディングができると錯覚する人が多くいます。

完全に間違った理解ではないものの、OpenCLで組み込めるロジックはあくまでも各ベンダー(Intel/AMD/nVidia/ARM)が実装したSDK/ライブラリーに依存しており、プロセッサー内のスライス・サブスライスや画像処理ユニットに直接命令のスケジューリングをするのはSDKの役割なのであり、デバイスの物理・論理画像と必ずしも完全に対応するわけではありません。

OpenCLのAPIは各ベンダーが用意しているため同じソースコードであってもデバイスの処理は異なり、特に細かな最適化やチューニングを行う場合は各ベンダーの提供する規格書やマニュアルに目を通す必要があります。またデバイスの各パーツにアクセスするものについても多くはブラックボックス化しており、開発者の視点からすればOpenCLはデバイスとホストプログラム(アプリケーション)のハードウェアを抽象化するレイヤーと写ります。

Copyright 2018-2019, by Masaki Komatsu