問題タブ [fast-math]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - --use_fast_math が設定されているかどうかをコンパイル時に判断できますか?
私はいくつかの CUDA コードを書いていますが、--use_fast_math
設定されているかどうかに基づいて異なる動作をさせたいと思っています。そして、実行時ではなく、コンパイル時にその決定を下したいのです。
が設定されている場合、NVCC はプリプロセッサの定義を追加または変更しない--use_fast_math
ようです。次の出力を比較してこれを確認しました。
の出力で
そしてそれらはまったく同じです。通りが塞がれているように見えるように。ここで、コンパイル ユーザーが NVCC を呼び出すと--use_fast_math -DUSING_FAST_MATH
、それも検出できます。しかし、それがライブラリ コードであり、これらの制限をユーザーに課すことはできないとします。
コンパイル中のコード--use_fast_math
がオンであることを認識する他の方法はありますか?
注: 「通知」とは、プリプロセッサ#if
または#ifdef
ディレクティブの使用、SFINAE の使用、コンパイラ組み込み値または constexpr 関数の使用など、コンパイル時に利用可能なものは何でも意味します。
c# - C# で "fast-math" などでコンパイルするようにコンパイラに指示する方法はありますか?
他の一部の言語では、コンパイラが浮動小数点数の最適化を実行できるようにすることができます。そのうちの 1 つは、コードを代数的に同等の式に書き換えることです。ここに私が意味することのいくつかの例があります:
として最適化できます
...
として最適化できます
明らかに、最適化された式は異なる結果を生成するため、コンパイラはデフォルトでこれを行いません。これらの最適化の実行を許可していると言うために、メソッドまたはクラスに割り当てることができる属性があると思いましたが、できませんでした何かを見つけます。