2017-04-26 2 views
-1

멀티 스레딩에 openmp를 사용하려고합니다. 다음과 같이 보는 그 코드를 이렇게 아주 쉽게OpenMP로 루프 용 멀티 스레딩

#pragma omp parallel for collapse(2) 
for (int n = 0; n < 1000; ++n) 
    for (int m = 0; m < 20; ++n) 

방법은 다음과 같은 구조를 가지고 코드에 대한 :

int test, z; 
for (int n = 0; n < 1000; ++n) { 
    test = 3 * n; 
    for (int m = 0; m < 20; ++n) { 
     z = test * m; 
    } 
} 

#pragma omp parallel for collapse(2) 내부 전에 때문에 라인 test = 3 * n;의 여기에 작동하지 않습니다 고리.

+0

@SeanBright 미안하지만 편집했습니다. – user2650277

답변

0

그래서 실제 코드에 적용 할 수있는

#pragma omp parallel for collapse(2) 
for (int n = 0; n < 1000; ++n) { 
    for (int m = 0; m < 20; ++n) { 
     z = 3 * n * m; 
    } 
} 

더 많은 일반 지점과

for (int n = 0; n < 1000; ++n) { 
    test = 3 * n; 
    for (int m = 0; m < 20; ++n) { 
     z = test * m; 
    } 
} 

가 (난 당신이 게시 한 것을 확신 훨씬 단순화 된 버전으로 교체 실제 코드)는 코드를 '쉬운'병렬 처리가 가능하도록 자주 다시 작성할 수 있다는 것입니다. 그래도 약간의 생각이 필요합니다.