2011-10-31 2 views
0

이것이 OpenMP에서 처음 시도되었지만 속도 향상을 얻을 수 없습니다. 컴퓨터는 Linux amd_64입니다. 다음 코드를 코딩했습니다 :단순한 OpenMP 병렬 루프의 속도를 얻을 수 없습니다.

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 

아이디어가 있으십니까?

답변

4

나는 당신이 당신의 컴파일러 플래그 -fopenmp를 추가 할 필요가 있다고 생각 :

-fopenmp를 사용
g++ tempomp.cpp -o tomp -lgomp -fopenmp 

, 컴파일러가 발생한 OpenMP 지시자를 기반으로 병렬 코드 를 생성합니다. -lgomp은 Gnu OpenMP Project의 라이브러리를로드합니다.

컴퓨터에 몇 개의 코어가 있습니까?

+0

안녕하세요, 문제가 해결되었습니다! 12 코어 있습니다. –

관련 문제