VS 2012でOpenMPを用いて並列処理効率をテスト

877 ワード

VS 2012でOpenMPを用いて並列処理効率をテスト
#include
#include
int _tmain(int argc, _TCHAR* argv[])
{
	clock_t x=clock();
    #pragma omp parallel for 
	for (int i=0;i<10;++i)
	{	
		int a=0;
	    for (int j=0;j<1000000000;j++)
	     {
			 a++;
	     }
	}
	clock_t y=clock();
	cout<

以上は単純なテストソースコードのみです.
ハードウェア構成:クアッドコアCPU;  OS:Win8; プログラミングプラットフォーム:VS 2012
テスト結果:1.シリアル:コメントを付けると、コンパイル後の実行表示実行時間は22958 msです.
               2.パラレル:コメントを削除すると、コンパイル実行表示実行時間は7390 msです.
結果分析:クアッドコアコンピュータですがパラレル時の稼働時間は、シリアル時の4倍ではなく、約3.11倍!次の理由があります.
               1.並列運転時、システム自体にも一部の演算があるため、4つのCPUコアが上記の計算にすべて投入されているわけではない.
               2.パラレルはマルチスレッドであり、スレッドの作成と破棄には一定の時間がかかります.
まとめ:このように、並列にもたらす優位性はやはり非常に大きい!!!
本編は主に「タスク:シリアルFDTDアルゴリズムをパラレルに変換する」ための努力~!