問題タブ [fma]
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.
floating-point - 融合積和から最も恩恵を受けるのはどのアルゴリズムですか?
fma(a,b,c)
a*b+c
中間結果を丸めないこと以外は と同等です。
この丸めを回避することで大きなメリットが得られるアルゴリズムの例をいくつか教えてください。
回避する乗算後の丸めは、回避しない加算後の丸めよりも問題が少ない傾向があるため、明らかではありません。
c++ - VS2010 SP1はAVX命令セットの一部のみをサポートしますか?
Microsoftは、VS2010がAVX命令のフルセットをサポートしていると述べています。
... VS2010リリースでは、すべてのAVX機能と命令が組み込みおよびを介して完全に/arch:AVX
サポートされています。..。
しかし、FusedMultiplyAdd操作の組み込み関数が見つかりません
関数を使用する必要があり_mm256_fmadd_ps
ますが、「immintrin.h」ヘッダーにありません。私は本当にそれに固執しています。
c - CPU上の乗加算「a = a * 2 + b」命令?
古典的な積和演算はa = a + b*c
です。しかし、現在、1クロックサイクルで整数に対して次の操作を実行できる命令が存在するかどうか疑問に思っています: ( a と b は符号なし64ビット整数です:unsigned long long int
)
現在、私は使用しています:
最初のものと
2番目のもの。そして、ASM ではそれぞれが 2 つの命令に変換されていると思います。しかし、代わりに 1 つの ASM 命令を使用する方法はありますか (また、Intel CPU のどの命令セット拡張を使用しますか)?
(私はこの操作を何十億回も行うため、それを検索します)
optimization - Multiply and Add Functions
This question is regarding the mad functions available in OpenCL which promise significant improvements for calculations of the type:
if used as mad(a,b,c)
and compiled with cl-mad-enable.
I have tried a calculation of the form a + b * c + d * e
using mad for a very huge size and was expecting significant improvement. Surprisingly, it took the same time.
If anybody has experience of this, I would appreciate some insight. I have a jist that it should work because most of the resources are full of praise for mad()
. Note: The data types I am using are all doubles, and if it is important, my usage of mad
resulted in a v. huge precision loss.
sse - AMD FMA 4 組み込み関数のリファレンスはどこにありますか?
SSE (128 ビット) 呼び出しを使用するコードを変更して、Bulldozer Opteron で 256 ビット FMA 機能を使用しようとしています。これらの呼び出しの組み込み関数が見つからないようです。
このフォーラムのいくつかの質問では、これらの組み込み関数が使用されています (例: 256 ビット AVX ベクトルで水平方向の最大値を見つける方法) 。
これを見つけました:
http://msdn.microsoft.com/en-us/library/gg445140.aspx
およびhttp://software.intel.com/sites/products/documentation/studio/composer/en-us/2011/ compiler_c/index.htm#intref_cls/common/intref_avx_fmadd_ps.htm
しかし、AMD 開発者向けドキュメントには何も見つからないようです。
cuda - fmad=false は良好なパフォーマンスを提供します
Nvidia のリリース ノートから:
私は 2 つのカーネルを持っています。1 つは多くの乗算で純粋に計算バウンドですが、もう 1 つはメモリ バウンドです。実行すると、計算集約型カーネルのパフォーマンスが一貫して向上し (約 5%) -fmad=false
、メモリ バウンド カーネルをオフにすると、パフォーマンスがほぼ同じ割合で低下します。したがって、FMA はメモリに制約のあるカーネルではうまく機能しますが、コンピューティングに制約のあるカーネルは、オフにすることでパフォーマンスを少し圧迫する可能性があります。その理由は何ですか?私のデバイスは M2090 で、CUDA 4.2 を使用しています。
完全なコンパイル オプション:
(または、とにかくそれがデフォルトであるため、-arch,sm_20,-ftz=true,-prec-div=false,-prec-sqrt=false,-use_fast_math,-fmad=false
単に削除します。fmad=false
c - libcの関数fmaを使用できるシナリオはありますか?
私はこのページに出くわし、奇妙な浮動乗算加算 関数があることに気付きました-fma
そしてfmaf
。結果は次のようになります。
また、値は無限の精度であり、結果形式に1回丸められます。
しかし、AFAICT私はこれまでそのような三項演算を見たことがありません。だから私はこの関数のcumstom使用法は何であるか疑問に思っています。
floating-point - Z3: 浮動小数点 FMA セマンティクス
Z3 は、このベンチマークに対して満足のいくモデルを返します: http://rise4fun.com/Z3/Bnv5m
a*b+0
ただし、クエリは基本的に、FMA 命令を使用するのと同等であると主張していますa*b
。これは、IEEE 浮動小数点数にも当てはまると思います。ベンチマークは、どちらa
でもないことを明示的に確認することに注意してください。b
NaN
FMA のエンコードに問題はありますか?
c - SSE/AVX で Fused Multiply-Add (FMA) 命令を使用する方法
一部の Intel/AMD CPU は、SSE/AVX で同時に乗算と加算を実行できることを知りまし
た。
コードでこれを行う方法を知りたいのですが、CPU の内部でどのように行われるかも知りたいです。つまり、スーパースカラー アーキテクチャのことです。SSEで次のような長い金額をやりたいとしましょう:
私の質問は、これをどのようにして同時乗算と加算に変換するのですか? データは依存できますか? つまり、CPUは_mm_add_ps(sum, _mm_mul_ps(a1, b1))
同時に実行できますか、それとも乗算と加算に使用されるレジスタは独立している必要がありますか?
最後に、これは FMA (Haswell) にどのように適用されますか? _mm_add_ps(sum, _mm_mul_ps(a1, b1))
単一の FMA 命令またはマイクロ操作に自動的に変換されますか?