Table of Contents
PyOpenCL組み込み関数はパフォーマンスに問題を抱えており、本書ではOpenCLのバインディング機能で実装することを推奨します。あくまでも読者のご参考のためだけの掲載とお考えください。
MapReduceアルゴリズムはOpenCLにおいては、最も知られたコードパターンだと筆者は考えます。OpenCLを適用したアルゴリズムは何らかの形でMapReduceアルゴリズムを使うため、無意識的または自然にMapReduceの問題を解いていることがあります。
OpenCLの文脈から見たMapReduceは2つのステップからなります。
この2つのステップのうち、前者はOpenCLの機能自体として並列計算とそのマップを行うため些細な問題となります。後者はReductionと呼ばれる、GPGPU等の並列演算の中では頻繁に使われるコードパターンとして知られています。
本書では後半の基数整列の章においてスクラッチで組むReductionパターンをご案内しているので、詳細についてはそちらを参照ください。
Copyright 2018-2019, by Masaki Komatsu