行列乗算における BLAS の優れたパフォーマンス
独自の行列乗算関数のパフォーマンスと、独自の行列乗算関数のパフォーマンスに顕著な違いがあることがわかりました。 BLAS。これにより、2 つの疑問が生じます:
1. BLAS はどのようにして究極のパフォーマンスを実現しますか?
BLAS は、複雑さと最適化手法に基づいて 3 つのレベルに分割されています:
2.実装が遅いのはなぜですか?
実装には BLAS で採用されているキャッシュの最適化が欠けています。行列間の乗算で O(N^3) 演算を行うと、メモリとキャッシュの間で大量のデータ移動が発生します。キャッシュの競合を最小限に抑える専用のアルゴリズムを実装することで、BLAS はこのプロセスを大幅に加速します。
最新のコンパイラーはコードの最適化に役立ちますが、ATLAS、GotoBLAS、OpenBLAS などの BLAS 実装で使用される特殊な技術を完全に補うことはできません。
BLAS で使用されるアルゴリズム
BLAS は、以下の理由により、Coppersmith–Winograd や Strassen のような複雑なアルゴリズムを利用しません。
以上がBLAS は行列乗算の実装よりもはるかに速いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。