「Using Plans」の編集履歴(バックアップ)一覧はこちら

Using Plans」(2009/01/22 (木) 23:46:59) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

[[FFTWマニュアル]] - [[FFTWリファレンス>FFTW Reference]] - [[プランの利用>>Using Plans]] * プランの利用 Using Plans  FFTWにおけるすべての変換のプランは、fftw_plan型として(不透明なポインタ型)格納され、これからの節で述べる様々なルーチンによって生成されます。fftw_planは、変換を計算するのに必要なすべての情報を持っていて、たとえば入出力配列のポインタなどもそれに含まれます。 void fftw_execute( const fftw_plan plan );  上記によってプランが実行され、あらかじめ計画された配列に対する変換が計算されます(その配列はこの時、存在する必要があります)。プランに変更がなければ、fftw_executeは所望の回数だけ実行することができます。  既にあるプランを、違う配列に使いたいときは、グルインターフェースを使うことができます。これについては、4.5節のグルインターフェースを参照のこと。  fftw_execute(と同等の関数)は、FFTWがスレッドセーフであることを保証した唯一の関数です。これについては、5.2節のスレッドの安全性を参照のこと。 次の void fftw_destroy_plan( fftw_plan plan ); は、プランと関連するデータを解放します。  FFTWのプランナーは、いくつかの持続性のあるデータをセーブしています。たとえば、蓄積されたwisdom(知)や、現在の設定で利用できるアルゴリズムの一覧などです。もしこれら全てを解放し、FFTWをプログラムを立ち上げたときの最初の状態に戻したい場合、 void fftw_cleanup( void ); を呼び出してください。  fftw_cleanupを呼び出したあとには、すべての現存するプランが未定義となり、プランを実行(execute)することも、破棄(destroy)することもすべきでありません。しかし、新しいプランに関しては、生成、実行/破棄することができて、FFTWは知(wisdom)の情報の蓄積が再び始まります。  fftw_cleanupは、プランを解放しません。したがって、解放の目的でfftw_destroy_planを呼ぶ必要があります。 ※この近辺は主張が矛盾しているようでよくわからない  次の二つのルーチンは、純粋な学問上の目的で作られています。 void fftw_flops( const fftw_plan plan, double *add, double *mul, double *fma );
[[FFTWマニュアル]] - [[FFTWリファレンス>FFTW Reference]] - [[プランの利用>>Using Plans]] * プランの利用 Using Plans  FFTWにおけるすべての変換のプランは、fftw_plan型として(不透明なポインタ型)格納され、これからの節で述べる様々なルーチンによって生成されます。fftw_planは、変換を計算するのに必要なすべての情報を持っていて、たとえば入出力配列のポインタなどもそれに含まれます。 void fftw_execute( const fftw_plan plan );  上記によってプランが実行され、あらかじめ計画された配列に対する変換が計算されます(その配列はこの時、存在する必要があります)。プランに変更がなければ、fftw_executeは所望の回数だけ実行することができます。  既にあるプランを、違う配列に使いたいときは、グルインターフェースを使うことができます。これについては、4.5節のグルインターフェースを参照のこと。  fftw_execute(と同等の関数)は、FFTWがスレッドセーフであることを保証した唯一の関数です。これについては、5.2節のスレッドの安全性を参照のこと。 次の void fftw_destroy_plan( fftw_plan plan ); は、プランと関連するデータを解放します。  FFTWのプランナーは、いくつかの持続性のあるデータをセーブしています。たとえば、蓄積されたwisdom(知)や、現在の設定で利用できるアルゴリズムの一覧などです。もしこれら全てを解放し、FFTWをプログラムを立ち上げたときの最初の状態に戻したい場合、 void fftw_cleanup( void ); を呼び出してください。  fftw_cleanupを呼び出したあとには、すべての現存するプランが未定義となり、プランを実行(execute)することも、破棄(destroy)することもすべきでありません。しかし、新しいプランに関しては、生成、実行/破棄することができて、FFTWは知(wisdom)の情報の蓄積が再び始まります。  fftw_cleanupは、プランを解放しません。したがって、解放の目的でfftw_destroy_planを呼ぶ必要があります。 ※この近辺は主張が矛盾しているようでよくわからない  次の二つのルーチンは、純粋な学問上の目的で作られています。 void fftw_flops( const fftw_plan plan, double *add, double *mul, double *fma );  plangが与えられた時、addとmulとfmaを、プランの実行に必要な、浮動小数点の加算、乗算、加算と乗算の組み合わせの正確な演算回数にセットします。 この浮動小数点の演算総演算回数(flops)は、add+mul+2*fmaかadd+mul+fmaになります(後者は、ハードウェアが加算乗算の組み合わせ演算命令をサポートしている場合です。また、FMA演算の回数はvoodooコンパイラによってのみ最適。演算回数は整数でなければならないが、大きな変換を行った時のintのオーバーフローを避けるためにdoubleを使用していて、単精度、4倍精度FFTWでも引数はdouble型です。) void fftw_fprint_plan( cost fftw_plan plan, FILE *output_file ); void fftw_print_plan( const fftw_plan plan ); 上記関数は、"マニアなら読める"書式で、プランを入力のファイルあるいはstdout(標準出力)にそれぞれ出力します。

表示オプション

横に並べて表示:
変化行の前後のみ表示: