2017-01-04 6 views
3

私の質問は、Visual Studio 2015でSIMDの自動ベクトル化の最適化(リリースモードの他の最適化を維持する)だけを無効にする方法です:Visual Studio 2015(C++用)でSIMD自動ベクトル化の最適化のみを無効にする方法はありますか?

1)プロジェクト全体がコンパイルされています。

2)コード部分。

最初のケースでは、プロジェクト全体で無効にする方法を知りたいと思います。 2番目のケースでは、#pragma optimize("", off)#pragma optimize("", on)を使用しているときにすべての最適化が可能であるのと同様に、コードの特定の領域に対しても可能であるかどうかを知りたいと思います。

この目的は、手動で最適化されたコードとコンパイラの自動SIMDベクトル化との性能比較です。

+0

は、SSEのサポートをオフにしますか? – MSalters

+0

すべてのx64にはSSE2が最低限必要なので、x64ではこれを実行できません。 – Mysticial

+0

@Mysticialだから、私がx86用にコンパイルした場合にのみそれができるのですか? – blipblop

答えて

1

/O2または/Oxを使用してビルドすると、Visual C++自動ベクタライザが自動的に有効になります。

/Qvec-report:1または/Qvec-report:2で構築してください。

あなたは#pragma loop(no_vector)

を使用して、特定のループのためにそれを無効にすることができますがMSDN

有効標準の最適化を維持しながら、グローバル自動ベクトライザーを無効にする文書化方法はありませんを参照してください。

詳細については、このblog seriesは、このvideoを見て、十分ではありませんAuto-Vectorization Cookbook

+0

答えをありがとう。上記の見積もりはどこで正確に見つかりましたか?私はあなたが(クックブックにも含まれていない)リンクのどれにも見つかりませんでした。多分あなたは興味のある参考文献を見逃したでしょうか? – blipblop

+0

それは脇にあるだけの引用ではありません。自動ベクトル化機能を無効にするだけのコンパイラスイッチはありません。 –

関連する問題