アルゴリズムの最適化に時間を費やし、準シリアル(明示的な並列化なし)コードは、95%の時間を、fftn
密な単一(フロート)行列の乗算を実行する行に費やしました。
for k=1:10
q = q + x{k}.* fftn( mArray{k}.* ifftn( mOther{k} .* z ) );
パフォーマンスの向上はごくわずかでしたが、FFTにいくつかの知恵を加えてみました。
このコードを高速化する方法がわからなくなっていますが、FFTWをコンパイルするとパフォーマンスが向上する可能性があると思いますか?私は第3世代i7にMatlab2012bを使用しています。
編集
私はタイプミスをしたようです、xはkに依存します、そうでなければそれはあまりにも簡単だったでしょう。私は誰かが実際のfftを最適化するために話すことができることを望んでいました。
q = q + x.* fftn( mArray{k}.* ifftn( mOther{k} .* z ) );
q = q + x{k}.* fftn( mArray{k}.* ifftn( mOther{k} .* z ) );