我有以下代码:

#pragma omp parallel sections private(x,y,cpsrcptr) firstprivate(srcptr) lastprivate(srcptr)
{
    #pragma omp section
    {
       //stuff
    }
    #pragma omp section
    {
       //stuff
    }
}


根据Zoom profiler,创建了两个线程,一个线程执行两个部分,另一个线程简单地阻塞!

有人遇到过这样的事情吗? (是的,我确实有一个双核计算机)。

最佳答案

我想我对Profiler的了解还不是很多,但是我遇到的一个问题是忘记使用OpenMP标志并启用支持。

另外,如果您只是创建了一个简单的应用程序来尝试验证线程怎么办?

#pragma omp parallel num_threads(2)
{
#pragma omp critical
    std::cout << "hello from thread: " << omp_get_thread_num() << "\n" << std::endl;
}


也许看看是否可行?

关于c - openmp节按顺序运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2953576/

10-13 03:21