AVX2 での効率的なベクトル化対数の実装
目的は、以下を使用して 4 つの倍精度数値に対する log2 関数の効率的なベクトル化バージョンを実装することです。 AVX2、SVML の __m256d のパフォーマンスに匹敵_mm256_log2_pd (__m256d a) ですが、他のコンパイラでも使用できます。
実装アプローチ
log2(a) の一般的な戦略には、次の指数と log2 の合計を計算することが含まれます。仮数の範囲は 1.0 ~ 2.0 に制限されています。これにより、仮数の log2 に多項式近似を使用できるようになります。
最適化
精度を向上させるために、単一の高次多項式の代わりに 2 つの多項式の比率を使用できます。この手法により、丸め誤差が軽減され、高精度が維持されます。
さらに、入力値が正で有限であることがわかっている場合は、アンダーフロー、オーバーフロー、非正規値のチェックをスキップできます。この最適化により、実装が大幅に高速化されます。
パフォーマンスに関する考慮事項
精度と範囲
実装の精度と範囲は、特定の多項式近似が使用されます。仮数値の特定の範囲で非常に高い精度を達成することが可能です。
既存の実装との比較
提案された実装は、高速かつ効率的なベクトル化された log2 を提供することを目的としています。 AVX2 をサポートするあらゆるプラットフォームで使用できる機能。これは、インテル コンパイラーの SVML 実装に匹敵する高いパフォーマンスをターゲットとしながら、他のコンパイラーでも利用可能です。
以上がAVX2 を使用してベクトル化された対数関数を効率的に実装するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。