リリースモードで、VS2008のx64 "モード"でコードを実行しているとき、非常に奇妙な動作に気付きました。パフォーマンスがOpenMPでx64になる
私はパフォーマンスの向上を追求していますので、プロジェクトをx64プラットフォームに変更しました(私のオリジナルプロジェクトはコンソールアプリケーションWin32として書かれています)。
私は確かにいくつかの改善を得ましたが、実行中に非常に奇妙な動作を見つけました。私はループを並列化するためにOpenMPプラグマを使用します(for)。したがって、私のプログラム(Win32)をクアッドコアi5プロセッサで実行すると、100%のCPU負荷と4つのスレッドが表示されます。大丈夫です。 (3〜5分後)を75%、50%、または25に低下させます(プロジェクトのプロパティ - >設定マネージャ - > ...)。x301 %。しかし、依然として4つの(!)スレッドが実行されています。 (リソースモニターに従って)。
すべての4つのトレッドで合計CPUパフォーマンスの25%しかいかないのはどうですか?各スレッドは個々のコアで動作すると仮定します。
P.S. OS Windows 7 x64およびVS 2008.
ありがとうございます!どんな提案も大歓迎です!
A.K。私は私の質問の答えを知っていますかと思う
を:解決
SSCCEを投稿できますか? – Mysticial
残念ながら、短く自己完結した部分がないので不可能です。大まかに言えば、2つのネストされた "for"ループがあり、各行列セルで2D行列を厄介な積分表現で満たす。 – Pomeron