我有两个for循环,我想并行化,我希望一半的线程在第一个循环上工作,另一半在第二个循环上工作。但似乎OpenMP不允许for
内的section
指令。还有另一种方法吗?
以下是一个例子:
#include <stdlib.h>
#include <omp.h>
int main() {
int i,j;
#pragma omp parallel num_threads(4)
{
#pragma omp for
for (i = 0; i < 2; ++i)
printf("Thread %d, i %d\n", omp_get_thread_num(), i);
#pragma omp for
for (j = 0; j < 2; ++j)
printf("Thread %d, j %d\n", omp_get_thread_num(), j);
}
return 0;
}
我得到的输出是:
Thread 0, i 0
Thread 1, i 1
Thread 0, j 0
Thread 1, j 1
但是我想要
Thread 0, i 0
Thread 1, i 1
Thread 2, j 0
Thread 3, j 1