首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有和不具有编译器优化的并行OpenMP代码的性能(Sun )

具有和不具有编译器优化的并行OpenMP代码的性能(Sun )
EN

Stack Overflow用户
提问于 2013-01-18 04:56:32
回答 1查看 402关注 0票数 0

我正在做一个项目,我们被要求写一个简单的OpenMP代码来并行化一个使用微分方程的程序。我们还被要求测试使用和不使用编译器优化的代码的性能。我使用的是Sun CC编译器,因此对于优化版本,我使用了以下选项

代码语言:javascript
复制
-xopenmp -fast

而对于未优化的

代码语言:javascript
复制
-xopenmp=noopt

毫不奇怪,启用编译器优化后的运行时间比其他情况下要短得多。让我惊讶的是,在未优化的版本上,缩放性能要好得多。这里的性能是指加速系数,即在M个处理器上运行的程序的运行时间与在1个处理器上运行的程序的运行时间之比。

有人暗示,这可能取决于优化版本是内存受限的事实,而非优化版本是CPU受限的。我不确定“边界”如何影响我的代码的伸缩能力。你有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-01-18 05:43:22

在大多数多处理器系统上,多个CPU核心共享一条通往内存的路径。给定的输出二进制文件将在每个线程中具有一定的固有计算强度(每访问字节的计算量)。当运行代码的核心数量超过支持它所需的内存带宽时,它将停止使用额外的核心进行扩展。要对如何推理这类问题有一个很好的看法,请查阅“roofline模型”。

我希望从启用优化中看到两个变化。其中之一是,如果优化提供了任何类型的循环阻塞来减少内存访问,那么计算强度应该会有所增加。另一种是,随着向量化机会的更好识别以及随后的指令选择和调度,原始运算率应该增加。这两件事应该会对伸缩效率产生相反的影响,但在您的情况下,后者显然占主导地位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14387957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档