C++/Linux/GCC/Windows XP/Intel コンパイラを使用して構築されたアプリケーションで、いくつかの大きな STL ベクトル コンテナーに含まれる値の計算を行っています。
アラインメント属性を変更したり、Intel ライブラリ関数を使用したりして、ベクトル化による最適化の可能性を調査する価値はありますか? または、コンパイラーが自動的に処理しますか?
C++/Linux/GCC/Windows XP/Intel コンパイラを使用して構築されたアプリケーションで、いくつかの大きな STL ベクトル コンテナーに含まれる値の計算を行っています。
アラインメント属性を変更したり、Intel ライブラリ関数を使用したりして、ベクトル化による最適化の可能性を調査する価値はありますか? または、コンパイラーが自動的に処理しますか?
通常、コンパイラは適切な設定でそれを処理するため、少し微調整する必要があります。
とはいえ、特定のハードウェアを対象とする場合は、コンパイラがそのようなシステムを利用していることを確認することをお勧めします。たとえば、Intel コンパイラは、プロセッサの優れたオプティマイザとして知られています。
さて、手動でベクトル化するのも良い場合があります。実際、これはあらゆる最適化と同じです。最初に、効率的なアルゴリズムを使用して単純で読みやすいバージョンを実装します。次に、プロファイラーを使用してコードを最適化します。プロファイラーは、どこに力を注ぐべきかを知らせてくれます。
1 つの特定の関数クランチ メンバーがあり、この種の関数に対して (コンパイラから) 生成されたコードの経験があることがわかっている場合は、最初から最適化を適用し始めるかもしれませんが、何が最適化されるかを既に知っていることを確認してください。生成されます。