我使用 OpenMP 编写了一个应用程序。我创建了两个部分并将两个对象放入其中。他们每个人都调用一个运行近 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();