OpenMP を使用してアプリケーションを作成しました。2 つのセクションを作成し、それらに 2 つのオブジェクトを配置しました。それらのそれぞれは、ほぼ 22 ~ 23 秒実行されているメソッドを呼び出します。両方のセクションは独立しています。
を設定するnum_threads(1)
と、アプリケーションの実行に 46 秒かかります。2×23=46なので大丈夫です。
を設定するnum_threads(2)
と、アプリケーションの実行に 35 秒かかりますが、約 25 秒と予想していました。
前述したように、セクションは独立しています。外部変数を使用しないcm1
でください。cm2
では、私のアプリが予想よりも 10 秒遅い理由を誰か教えてもらえますか? 低レベルでの同期はありますか?
t1 = clock();
#pragma omp parallel num_threads(2)
{
#pragma omp sections
{
#pragma omp section
{
Cam cm1;
cm1.solveUsingCost();
}
#pragma omp section
{
Cam cm2;
cm2.solveUsingTime();
}
}
}
t2 = clock();