2010-10-27 120 views
1

我终于得到了一段与OpenMP并行运行的代码,没有错误。但是,当我将dll部署到另一台机器时,它不再平行运行。OpenMP在一台机器上并行,但在另一台机器上串行

记录显示omp_in_parallel() == 0在另一台机器上,但没有在我的机器上。

我的机器正在使用Intel i5 CPU,其中有2个超线程核心,用于生效omp_get_numProcs() == 4。另一个是在Microsoft Server 2008上为其分配2个处理器的虚拟机,因此为omp_get_numProcs() == 2

是否有已知的设置可以使程序在某些值下并行运行而不是其他值?

+0

记录目标机器与您的机器之间的差异。尤其是CPU是多核还是超线程。 – 2010-10-27 14:28:39

+0

你怎么知道它没有并行运行? OMP_NUM_THREADS是否在新机器上正确设置? – 2010-10-27 17:51:36

+0

你在两台机器上尝试过'omp_get_num_threads()'吗? Jonathan建议你检查两台机器上通常环境变量的值吗? – 2010-10-29 08:24:52

回答

1

我已经在调试模式下启用了OpenMp,但在发布版中没有启用。当我在我的机器上使用Debug配置测试时,部署的dll处于Release模式。

你会认为我会在最后一次发生这种事情后学会。 :-)

谢谢你的回答和我的道歉浪费你的时间。

相关问题