T fma( T a, T b, T c )
一部の C または C++ コードで、1 つの乗算と 1 つの加算を実行するという名前の関数があると仮定し( a * b ) + c
ます。複数のmul & addステップを最適化するにはどうすればよいですか?
たとえば、私のアルゴリズムは 3 つまたは 4 つの fma 操作を連鎖させて合計する必要があります。これを効率的に記述するにはどうすればよいでしょうか。また、構文またはセマンティクスのどの部分に特に注意を払う必要がありますか?
CPUパイプラインのフラッシュを避けるために、CPUの丸めモードを変更しないでください。しかし+
、複数の呼び出し間の操作を使用してfma
それを変更するべきではないと確信しています。これをテストするための CPU が多すぎないため、「確かに」と言っています。いくつかの論理的な手順に従っているだけです。 .
私のアルゴリズムは、複数の fma 呼び出しの合計のようなものです
fma ( triplet 1 ) + fma ( triplet 2 ) + fma ( triplet 3 )