문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류: 스레드/프로세스]] [[분류: 시스템 최적화]] [[분류: 오픈소스 프로젝트]] [[분류: 동시성 프로그래밍]] == 개요 == OpenMP(Open Multi-Processing)는 공유 메모리 다중 처리 프로그래밍 [[API]]로, [[C]], [[C++]], [[포트란]] 언어와, [[유닉스]] 및 마이크로소프트 윈도우 플랫폼을 비롯한 여러 플랫폼을 지원한다. 병렬 프로그래밍의 하이브리드 모델로 작성된 응용 프로그램은 OpenMP와 메시지 전달 인터페이스 ([[MPI]])를 둘 다 사용하거나, 더 투명성 있는 방식으로 비공유 메모리 시스템을 위한 OpenMP 확장을 사용하여 컴퓨터 클러스터 상에서 구동할 수 있다. == 사용법 == OpenMP는 #progma 키워드를 이용하여 병렬화를 하게 된다. #progma는 컴파일러에게 특정한 지시 사항을 전달하는 것인데, #progma를 통해서 loop를 병렬적으로 처리하게 된다. 또한 Section을 통해서 소스 코드를 병렬화 시킬 수도 있다. === Loop 병렬화 === <syntaxhighlight lang=c> #progma omp parallel for for (i=1; i < n; i++) /* i is private by default */ /* Compiler notice that this can be parallel */ Do Something </syntaxhighlight> === Section 병렬화 === === 예시 === <syntaxhighlight lang=c> #include <omp.h> #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int th_id, nthreads; #pragma omp parallel private(th_id) { th_id = omp_get_thread_num(); printf("Hello World : 스레드 %d\n", th_id); #pragma omp barrier if ( th_id == 0 ) { nthreads = omp_get_num_threads(); printf("모두 %d 개의 스레드가 있습니다\n",nthreads); } } return EXIT_SUCCESS; } </syntaxhighlight> OpenMP 문서로 돌아갑니다.