我想知道 openmp 如何计算出它可以通过omp_get_max_threads()
库调用运行多少个线程。我在使用 gcc -fopenmp 的 centOS linux 机器上运行。我的机器有 16 个AMD Opteron(tm) 处理器 6136 个 CPU,每个有 8 个内核,全部根据 /proc/cpuinfo。如果我运行 omp_get_num_procs() 它返回 16。但omp_get_max_threads()
也返回 16。为什么最大线程数不是 16*8?
当我运行一个使用 16 个线程的程序时,我看到该程序top
以大约 1600% 的 CPU 运行,如果我切换“上次使用的 cpu (SMP)”,该数字会移动一点。所以 1600% 是有道理的,但是有没有办法知道线程在哪个 CPU 的哪些内核上运行?
如果这些问题看起来很幼稚,我对 openmp 还是很陌生。