[OpenMP] #pragma omp critical 자구
6798 단어 병렬 계산
#pragma omp critical
자구의 역할은 한 구역이 최대 한 라인만 안에서 운행할 수 있도록 제한하는 것이다. 이것이 바로 임계구역이다.우리는 최대치를 구하는 프로그램을 예로 들었다
#include
#include
int main(){
int a[10] = {42,134,234,3234,14134,2345,3236,1214,345,1234};
int max = 0;
int i;
omp_set_num_threads(10);
#pragma omp parallel for
for(i = 0; i < 10; i++){
std::cout << "thread: " << omp_get_thread_num() << ' ';
std::cout << "num: "<< a[i] << std::endl;
#pragma omp critical
{
std::cout << "now critical thread: " << omp_get_thread_num() << std::endl;
if(max < a[i])
max = a[i];
}
}
std::cout << "max = " << max << std::endl;
}
출력 결과1:
thread: 1 num: 134 now critical thread: 1 thread: 6 num: 3236 now critical thread: 6 thread: 5 num: 2345 now critical thread: 5 thread: 7 num: 1214 now critical thread: 7 thread: 4 num: 14134 now critical thread: 4 thread: 8 num: 345 now critical thread: 8 thread: 9 num: 1234 now critical thread: 9 thread: 3 num: 3234 now critical thread: 3 thread: 2 num: 234 now critical thread: 2 thread: 0 num: 42 now critical thread: 0 max = 14134
출력 결과2
thread: 0 num: 42 now critical thread: 0 thread: 7 num: 1214 now critical thread: 7 thread: 8 num: 345 now critical thread: 8 thread: 9 num: 1234 now critical thread: 9 thread: 6 num: 3236 now critical thread: 6 thread: 5 num: 2345 now critical thread: 5 thread: 4 num: 14134 now critical thread: 4 thread: 3 num: 3234 now critical thread: 3 thread: 2 num: 234 now critical thread: 2 thread: 1 num: 134 now critical thread: 1 max = 14134
결과 출력3:
thread: 0 num: 42 now critical thread: 0 thread: 7 num: 1214 now critical thread: 7 thread: 8 num: 345 now critical thread: 8 thread: 6 num: 3236 now critical thread: 6 thread: 5 num: 2345 now critical thread: 5 thread: 9 num: 1234 now critical thread: 9 thread: 4 num: 14134 now critical thread: 4 thread: 3 num: 3234 now critical thread: 3 thread: 2 num: 234 now critical thread: 2 thread: 1 num: 134 now critical thread: 1 max = 14134
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenCL 병렬 계산 3 - 호스트 프로그래밍 데이터 전송 및 구분캐시 대상과 이미지 대상의 데이터 구조는cl 입니다.mem.캐시 개체를 생성할 때 매개변수 설명: clCreateBuffer(cl context context, cl mem flags options, size t s...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.