了解多核系统上的gcc优化-o3

时间:2013-10-07 02:59:36

标签: gcc optimization parallel-processing multicore serial-processing

我目前正在比较四核处理器上某些代码的串行和并行实现。我想了解/衡量的一件事是串行代码在单核上运行时的表现。

当我编译串行代码时,我使用gcc的-O3选项,起初我注意到串行代码没有做得太破旧。但是,我注意到的一件事是,当我在其中一个内核上运行另一个计算密集型进程时,串行版本的性能会下降。

以下是一些数字:

Total Time elapsed: 1s, 233ms <- only serial code is running
Total Time elapsed: 1s, 238ms <- only serial code is running
Total Time elapsed: 2s, 128ms <- serial code run but other code is running on another core
Total Time elapsed: 2s, 220ms <- serial code run but other code is running on another core

我猜测可能会在四个核心之一上运行后台进程。但最好我收集在四核处理器上运行两个进程不应该使所有四个核心饱和。

我想知道的是,是否有理由相信O3流程中的某些步骤允许代码利用四核设置,或者更准确地说,为什么它是所谓的“串行”版本“在其他核心可用时表现更好?我试图理解GCC文档,我收集了一些线程参考。但我真的不明白,并且想知道是否有人可以帮助我准确理解O3可能做什么或不做什么来利用多个核心。

对于它的价值,我使用的是英特尔(R)Core(TM)i7-3820 CPU @ 3.60GHz并运行linux mint 13.

由于

1 个答案:

答案 0 :(得分:1)

-O3并不面对多个核心。

您正在看到处理器上共享资源的影响:内存带宽和缓存。