1

如果我有一个并行部分代码,是否可以为每个部分分配一个特定线程,即类似的东西

#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
     }

}
4

2 回答 2

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;
   }
}
于 2013-02-18T14:12:51.953 回答
0

要分配给主线程,您可以使用

#pragma omp master
于 2013-02-18T05:50:48.687 回答