我正在尝试开始在 C 中使用基本的 OpenMP 功能。我对“omp parallel for”的基本理解使我相信以下内容应该在线程之间分配以下循环迭代,并且应该同时执行。我得到的输出如下。代码如下。我的 hello world 示例中是否缺少一些微妙的东西?
来自 omp 线程的 Hello World 0 来自 omp 线程的 Hello World 0 来自 omp 线程的 Hello World 0 来自 omp 线程的 Hello World 0 来自 omp 线程的 Hello World 0 来自 omp 线程 0 的 Hello World 等等。
int HelloFunc()
{
int i;
int numthreads = 8;
#pragma omp parallel for default(none) num_threads(numthreads) private(i)
for (i = 0; i < 100; i++)
{
int tid = omp_get_thread_num();
printf("Hello world from omp thread %d\n", tid);
}
return -1;
}
int main()
{
int result = HelloFunc();
}