我是一名新的OpenMP用户,并且在Visual Studio 2010(Windows 7 Ultimate x64)上运行的代码运行速度提高了13.5倍(14个线程)。 CentOS 5.8 x64(gcc 4.1.2)或SUSE x64(gcc 4.5.1)的性能是zip。我已经验证了正在使用多个线程。我需要打开一些系统标志或选项吗?是的,OMP_NUM_THREADS在环境中并设置为8. CentOS机器是双氙处理器。
答案 0 :(得分:1)
使用8个内核,无论你使用的线程数是多少,都几乎不可能获得13.5倍的加速。
我怀疑你的测量是错误的。你如何衡量绩效? 在Unix中,命令“time ./myprogram”将返回3次不同的时间。 “真实”时间是您感兴趣的时间,而“用户”时间是CPU时间(每个核心上花费的时间总和)。 在Windows中我不知道,但我猜你发现“用户”时间是“cpu”时间的13.5倍,这个时间没有说明加速,而是所有14个线程都在使用。
您应该比较单线程程序和openmp程序之间的“实际”时间。
答案 1 :(得分:0)
您是否使用了正确的编译器/链接器开关,例如-fopenmp -lgomp
?也许首先尝试使用OpenMP文档中的一个简单示例来证明您的设置正确。