FFTemplateライブラリはメモリ階層を意識した最適化を適応的に行なうFFTライブラリであり、C++テンプレート・メタプログラミングと実行時プロファイリングに基づいて適応的な最適化を実現している。これは3 つの段階からなる。 1) 核となる小さなサイズのデータに対するFFT コードをサイズ毎に複数生成(ループの展開, 三角関数値の静的計算)。 2) 前段で生成したサイズ毎の核コードの実行時間計測。 3) 計測結果に基づく核コードの選択・合成による最終的なFFT コードの生成. 特にこの内1)と3)でC++テンプレート・メタ・プログラミング技法を利用している。
FFTemplate library realize memory hierarchy conscious optimized FFT, which is implemented in C++ template-meta-programming technique, and adaptive optimization based on execution time profiling. Our method consists of three steps. Step1: They are some FFT code generation (ex. unrolling of a loop, static evaluation of a trigonometric-functions value) for each small constant size data used as a kernel. Step2: Execution time measurement of the kernel for every size generated in the preceding step. Step3: Generation of the final FFT code by selection and composition of the kernel based on the measurement results. C++ template meta-programming technique was used in Step 1 and Step3.
Author: KANDO Takayuki[back]