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