2次元FFTのGPGPU実装は、1次元FFTと基本同じアルゴリズムと考えてください。2次元FFTは、1次元のFFTを重層にしただけで、OpenCLの基本設計を変える必要はありません。
この考え方は前の項目で解説したCPU実装と同じものですが、特筆すべき点としては、メモリストライドの回避が求められることです。
2次元FFTでは、2次元のデータアクセスが求められるため、グローバルメモリで操作するならば、行スキャンは問題ないものの、列スキャン時にメモリストライドが発生します。ストライドの対策としては、列スキャンを行う前にデータ行列を転置させる対応をとります。
Copyright 2018-2019, by Masaki Komatsu