1
我终于得到了一段与OpenMP并行运行的代码,没有错误。但是,当我将dll部署到另一台机器时,它不再平行运行。OpenMP在一台机器上并行,但在另一台机器上串行
记录显示omp_in_parallel() == 0
在另一台机器上,但没有在我的机器上。
我的机器正在使用Intel i5 CPU,其中有2个超线程核心,用于生效omp_get_numProcs() == 4
。另一个是在Microsoft Server 2008上为其分配2个处理器的虚拟机,因此为omp_get_numProcs() == 2
。
是否有已知的设置可以使程序在某些值下并行运行而不是其他值?
记录目标机器与您的机器之间的差异。尤其是CPU是多核还是超线程。 – 2010-10-27 14:28:39
你怎么知道它没有并行运行? OMP_NUM_THREADS是否在新机器上正确设置? – 2010-10-27 17:51:36
你在两台机器上尝试过'omp_get_num_threads()'吗? Jonathan建议你检查两台机器上通常环境变量的值吗? – 2010-10-29 08:24:52