这是我对OpenMP的第一次尝试,但无法加速。这台机器是Linux amd_64。 我编写了以下代码:
printf ("nt = %d\n", nt);
omp_set_num_threads(nt);
int i, j, s;
#pragma omp parallel for private(j,s)
for (i=0; i<10000; i++)
{
for (j=0; j<100000; j++)
{
s++;
}
}
And the compile with
g++ tempomp.cpp -o tomp -lgomp
And run it with different nthreads, no speedup:
nt = 1
elapsed time =2.670000
nt = 2
elapsed time =2.670000
nt = 12
elapsed time =2.670000
有什么想法吗?
答案 0 :(得分:4)
我认为您需要将标志-fopenmp
添加到编译器中:
g++ tempomp.cpp -o tomp -lgomp -fopenmp
使用-fopenmp
时,编译器将生成并行代码
基于遇到的OpenMP指令。
-lgomp
加载Gnu OpenMP项目的库。
您的机器有多少个核心?