【发布时间】:2011-08-08 11:48:36
【问题描述】:
我从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 中编译和运行它,该程序的运行速度比单线程慢两倍。为什么?
【问题讨论】:
-
omp_set_num_threads(10)和“双核”并不是一个好的组合(很多上下文切换对任何事情都没有好处)。除此之外,请参阅this answer to a related question -
你可能想看看this question接受的答案。
标签: performance gcc ubuntu openmp