performance - Ubuntu 中的 OpenMP : parallel program works on double core processor in two times slower than single-threaded. 为什么?

标签 performance gcc ubuntu openmp

我从 wikipedia 获得代码:

#include <stdio.h>
#include <omp.h>

#define N 100

int main(int argc, char *argv[])
{
  float a[N], b[N], c[N];
  int i;
  omp_set_dynamic(0);
  omp_set_num_threads(10); 


  for (i = 0; i < N; i++)
  {
      a[i] = i * 1.0;
      b[i] = i * 2.0;
  }

#pragma omp parallel shared(a, b, c) private(i)
  {
#pragma omp for
    for (i = 0; i < N; i++)
      c[i] = a[i] + b[i];
  }
  printf ("%f\n", c[10]);
  return 0;
}

我尝试使用 gcc4.5(我的配置:Intel C2D T7500M 2.2GHz,2048Mb RAM)在我的 Ubuntu 11.04 中编译和运行它,该程序的运行速度比单线程慢两倍。为什么?

最佳答案

非常简单的答案:增加 N。并将线程数设置为等于您拥有的处理器数。

对于您的机器来说,100 是一个非常小的数字。尝试更高几个数量级。

另一个问题是:您如何测量计算时间?通常需要程序时间来获得可比较的结果。

关于performance - Ubuntu 中的 OpenMP : parallel program works on double core processor in two times slower than single-threaded. 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6981643/

相关文章:

java - Kotlin - 与使用 start >= Instant && Instant <= end 相比检查范围内的 Instant

image - javafx加载时旋转圆

c++ - 使用不同优化级别编译的不同翻译单元中的模板实例化

php - 测试 php/mysqli 连接

ubuntu - 找出在ubuntu上使用端口80的是什么

ubuntu - 来自服务器的空回复,在单独的缓存服务器上带有 Varnish 和挂接

javascript - 如何改善谷歌地图加载时间?

php - 在高负载站点中使用 PHP 的策略

c++ - C++ (GCC) 中的四倍精度

c - GCC 关于 const 限定符的警告是否正确?