我在 Snow Leopard 和 linux 上编译了这段代码,得到了不同的结果。在 Snow leopard 上,第一次调用 omp_get_max_threads 返回 2,这是我的内核数,而第二次返回 1。在 linux 上,两个调用都返回 4,这是我的内核数。我认为 Linux 的行为是正确的,对吗?都是正确的,我只是对这个功能有误解吗?
#include <stdio.h>
#include <omp.h>
int main() {
printf(" In a serial region; max threads are : %d\n", omp_get_max_threads());
#pragma omp parallel
{
#pragma omp master
printf(" In a parallel region; max threads are : %d\n", omp_get_max_threads());
}
}
Mac 输出:
In a serial region; max threads are : 2
In a parallel region; max threads are : 1
Linux 输出:
In a serial region; max threads are : 4
In a parallel region; max threads are : 4