我正在做一个项目,我们被要求编写一个简单的 OpenMP 代码来并行化一个使用微分方程的程序。我们还被要求测试代码在有和没有编译器优化的情况下的性能。我正在使用 Sun CC 编译器,因此对于优化版本,我使用了选项
-xopenmp -fast
对于非优化
-xopenmp=noopt
毫不奇怪,编译器优化的运行时间远低于其他情况。令我惊讶的是,非优化版本的缩放性能要好得多。在这里,我所说的性能是指加速系数,即程序运行在 M 个处理器上的运行时间与程序运行在 1 个处理器上的运行时间之比。
有人暗示这可能取决于优化版本受内存限制,而非优化版本受 CPU 限制的事实。我不确定“边界”如何影响我的代码的扩展能力。你有什么建议吗?