我有以下代码:
#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/