XCode を使用して OS X Mountain Lion で C++ を開発し、ローカル マシンで実行しています。デノーマル数に関連するパフォーマンスの問題があり、ゼロにフラッシュされるように FTZ フラグを設定したいと考えています。(デノーマルが実際に問題であることを確認しました。私の場合、それらをゼロにフラッシュしても精度の問題は発生しません。)ただし、XCodeで実際にこれを達成する方法についての情報は見つかりません。ビルド設定で変更できるオプションですか? または、どこかに入力する必要があるコードですか?どんな助けでも大歓迎です。
3099 次
1 に答える
6
「/usr/include/fenv.h」のコメントを正しく理解していれば、
#include <fenv.h>
fesetenv(FE_DFL_DISABLE_SSE_DENORMS_ENV);
あなたがしたいことをするべきです。
FE_DFL_DISABLE_SSE_DENORMS_ENV デフォルトの浮動小数点状態が変更された fenv_t オブジェクトへのポインター SSE ステータス/コントロール レジスタの DAZ ビットと FZ ビットを設定します。使用時 この環境では、SSE ベースの計算 (これは 通常、すべて単精度および倍精度のスカラー浮動小数点にする必要があります 計算、およびすべての SSE/SSE2/SSE3 計算) はゼロとして扱われます。 デノーマルである計算結果もゼロに切り捨てられます。
このオプションを設定すると、0.1f を 0 に変更するとパフォーマンスが 10 分の 1 低下する理由のプログラムの実行時間が短縮されました。(@Mysticial のコメントで提供されたリンク) 27 秒から 0.3 秒 (MacBook Pro、2.5 GHz Intel Core 2 Duo)。
于 2013-05-25T09:24:46.840 に答える