如果我有一个并行的部分代码,是否可以为每个部分分配一个特定的线程,即某种类型
#pragma omp sections num_threads(2)
{
#pragma omp section //<---assigned to master thread
{
//do something
}
#pragma omp section //<---assigned to the other thread
{
//do something
}
}
答案 0 :(得分:3)
将OpenMP节分配给线程是以依赖于实现的方式完成的。导致特定执行线程的唯一指令是master
。
如果您确实需要为每个线程提供特定于线程的工作,请在omp_get_thread_num()
的返回值上使用条件:
#pragma omp parallel num_threads(2)
{
switch (omp_get_thread_num())
{
case 0:
// Code for thread 0
break;
case 1:
// Code for thread 1
break;
default:
break;
}
}
答案 1 :(得分:0)
要分配给主线程,您可以使用
#pragma omp master