知の利用上の注意 Caveats in Using Wisdom


實に, 知惠が 多くなれば 惱みも 多くなり, 知識を 增す 者は 悲しみを 增す.[Ecclesiates 1:18]



 wisdomの利用には落とし穴があります。それはFFTWのハードウェアやその他の条件への適応能力を、無意味なものにしてしまいうることです。例えば、あるプロセッサで稼働するプログラムから、wisdomを外部へ出力し、他のプロセッサーで稼動するプログラムに取り込むなどという状況は、十分に想定されます。これを行うと、2番目のプログラムは、そのマシンの最適なプランではなく、1番目のプロセッサで最適化されたプランを使うことを意味します。

 wisdomは、ハードウェアとプログラムのバイナリが変わらない限り安全に再利用できるはずです(実際には、同じハードウェア/プログラムバイナリであっても、仮想メモリやその他の条件の違いによって、最適なプランは変わっているかもしれません。パフォーマンスに特に関心があるユーザーは、この点に注意する必要があります。)同じwisdomが2つのバイナリで使われた時、それが同じマシン上であったとしても、プランはコードの並びの違いによって準最適になるということは、大いにありうることです。したがって、wisdomはアプリケーションが再コンパイルされるごとに、再生成するのが賢いといえます。利用する時と、使う時の、ハード/ソフトの変更が大きくなれがなるほど、準最適なプランを利用するリスクは高くなります。

 とはいえ、プラン生成の選択がFFTW_ESTIMATEか、恐らく準最適なwisdom(同じマシン、違うバイナリで生成された)の間の選択をする時には、wisdomを使うことで性能は向上する傾向にあります。こんなわけで、我々は標準的な幅広いシステムに対応する場所(Unixでは,/etc/fftw/wisdom)から、以下の、wisdomを取り込む関数を提供しています。

int fftw_import_system_wisdom( void );

 FFTWは、単独で動作するfftw-wisdom(Unixのman参照)というプログラムも提供していて、それを使うとユーザは、システムのwisdomファイルに格納されている、標準的なサイズセットのwisdomを作れます。詳しくは、39ページ、4.6.4節のWisdom Utiltiesを参照のこと。
最終更新:2008年11月08日 04:46