1.3 실행 모델
OpenMP 포크 조인 병렬 실행 모델을 사용합니다. 이 포크-조인 모델 다양 한 문제를 해결 하는 데 유용할 수 있지만 큰 배열 기반 응용 프로그램에 대 한 다소 맞게 조정 됩니다. OpenMP 병렬 (여러 스레드 실행 및 전체 OpenMP 지원 라이브러리) 프로그램에 따라 모두 정확 하 게 실행 되는 지원 프로그램 및 순차적 프로그램 (지시문은 무시 하 고 단순 OpenMP 스텁 라이브러리)로 사용 됩니다. 그러나, 불가능 하 고 순차적으로 실행 하는 경우 제대로 작동 하지 않습니다 하는 프로그램을 개발 하는 데 사용할 수 있습니다. 또한 다양 한 수준의 병렬 처리에서 다양 한 숫자 결과 숫자 작업의 연결에 변경 될 수 있습니다. 예를 들어, 직렬 추가 감소 패턴이 추가 연결 보다 병렬 감소가 있을 수 있습니다. 이러한 다른 연결 부동 소수점 덧셈의 결과 변경할 수 있습니다.
OpenMP C/C++ API로 작성 된 프로그램을 호출 하는 실행의 단일 스레드로 실행 시작을 마스터 스레드. 첫 번째 병렬 구문을 발견 될 때까지 직렬 지역에서 마스터 스레드를 실행 합니다. OpenMP C/C++ api에서는 병렬 지시문 병렬 구조를 구성 합니다. 병렬 구문을 발견 한 경우 팀을 스레드, 마스터 스레드를 만들고 팀의 마스터 마스터가 됩니다. 팀의 각 스레드에서 동적 범위 작업 공유 생성자를 제외 하 고는 병렬 영역에 문이 실행 됩니다. 모든 스레드가 동일한 순서로 팀 작업 공유 생성자를 발견 해야 하 고 스레드 중 하나 이상의 관련 된 구조화 된 블록 내의 명령문이 실행 됩니다. 장애물 없이 작업 공유 생성자의 끝에 암시적으로 nowait 절에서 팀의 모든 스레드가 실행 됩니다.
스레드가 공유 개체를 수정 하는 경우 자체 실행 환경 뿐만 아니라 프로그램에 있는 다른 스레드 들에 적용 됩니다. 수정만 개체 일시적으로 선언 된 경우 (기본 언어에서 정의 됨), 다음 시퀀스 지점에 다른 스레드 중 하나의 관점에서 완료할 수 보장 됩니다. 수정 후 먼저 수정 하는 스레드 수 보장 됩니다 그렇지 않으면 및 다음 (또는 동시에) 다른 스레드에서 발생 하는 플러시 개체를 암시적으로 또는 명시적으로 지정 하는 지시문입니다. 참고 시는 플러시 다른 OpenMP 지시문에 의해 암시 된 지시문 부작용의 원하는 순서를 확인 하는 데 충분 하지 않습니다, 추가, 명시적 제공 하는 프로그래머의 책임입니다 플러시 지시문입니다.
완료 된 병렬 구조를 팀에 있는 스레드는 암시적 장벽에 동기화 되 고 마스터 스레드는 계속 실행 됩니다. 단일 프로그램에서 다양 한 병렬 구조를 지정할 수 있습니다. 따라서 프로그램 포크 하 고 여러 번 실행 하는 동안에 참가 합니다.
C/C++ OpenMP API 프로그래머가 지시문에서 병렬 구문에서 호출 되는 함수에서 사용할 수 있습니다. 지시문은 어휘 범위 병렬 구문에 표시 되지 않지만 동적 범위에 있을 수 있습니다 라는 고아 지시문입니다. 분리 된 지시문 프로그래머가 자신의 프로그램의 주요 부분이 순차적 프로그램을 최소한의 변경 내용 병렬로 실행할 수 수가 있습니다. 이 기능을 사용 하면 사용자 프로그램 호출 트리의 맨 위 수준의 병렬 구문 코드 하 고 지시문을 사용 하 여 실행을 호출된 하는 함수를 제어할 수 있습니다.
비동기 호출을 C 및 C++ 다른 스레드를 통해 작성 된 데이터가 확정적이 지 않은 순서로 나타나는 출력 될 수 있습니다 동일한 파일에 기록 되는 함수를 출력 합니다. 마찬가지로, 동일한 파일에서 읽을 함수 입력에 비동기 호출 확정적이 지 않은 순서로 데이터를 읽을 수 있습니다. 다른 파일을 액세스 하는 각 스레드는 비동기 I/O 사용 같은 직렬 I/O 함수 실행 결과 생성 합니다.