ハードウェア デバイスおよびそのカーネルは並列処理できるようになっていますが、この利点を活かすには、ソフトウェア アプリケーションを設計する必要があります。
ソフトウェア アプリケーションを並列処理すると、ホスト アプリケーションで次を実行できるようになります。
- デバイス カーネルがアイドル状態である時間を最小限にし、ほかのタスクを実行させる。
- デバイス カーネルをアクティブな状態に保ち、新しい計算をできるだけ早く頻繁に実行させる。
- デバイスとのデータ転送を最適化する。
図 1. ソフトウェア最適化の目標
工場および組立ラインのたとえを使用すると、ホスト アプリケーションは常に忙しく次世代の製品を計画する本社のようなもので、現世代の製品を作成するのは工場の仕事です。
本社には、工場の物品輸送や要望の伝達などを指揮する役割もあります。物流部門が原材料や作成する製品の設計図を配達できなければ、工場を多く建設する意味がありません。