E. OpenMP C/C++에서 구현이 정의된 동작
이 부록은 이 API에서 "구현 정의"로 설명되는 동작을 요약합니다. 각 동작은 기본 사양에서 해당 설명으로 다시 상호 참조됩니다.
설명
이러한 경우 해당 동작을 정의하고 문서화하려면 구현이 필요하지만 이 목록은 불완전할 수 있습니다.
스레드 수: 스레드 수를 동적으로 조정할 수 없는 동안 병렬 영역이 발생하고 병렬 영역에 대해 요청된 스레드 수가 런타임 시스템에서 제공할 수 있는 수보다 많으면 프로그램의 동작이 구현 정의됩니다(페이지 9 참조).
Visual C++에서 중첩되지 않은 병렬 영역의 경우 64개의 스레드(최대값)가 제공됩니다.
프로세서 수: 지정된 시간에 스레드를 실제로 호스팅하는 실제 프로세서의 수는 구현 정의입니다(10페이지 참조).
Visual C++에서 이 숫자는 상수가 아니며 운영 체제에 의해 제어됩니다.
스레드 팀 만들기: 중첩된 병렬 지역을 실행하는 팀의 스레드 수는 구현에 정의되어 있습니다(10페이지 참조).
Visual C++에서 이 숫자는 운영 체제에 의해 결정됩니다.
schedule(런타임): 예약에 대한 결정은 런타임까지 지연됩니다. 일정 유형 및 청크 크기는 환경 변수를 설정
OMP_SCHEDULE
하여 런타임에 선택할 수 있습니다. 이 환경 변수가 설정되지 않은 경우 결과 일정은 구현 정의됩니다(13페이지 참조).Visual C++에서 일정 유형은 청크 크기가
static
없습니다.기본 일정: schedule 절이 없으면 기본 일정이 구현 정의됩니다(13페이지 참조).
Visual C++에서 기본 일정 유형은 청크 크기가
static
없습니다.ATOMIC: 구현이 모든
atomic
지시문을 동일한 고유 이름을 가진 지시문으로critical
바꾸는지 여부를 구현에서 정의합니다(20페이지 참조).Visual C++에서 원자성으로 수정된 데이터가 자연 맞춤에 있지 않거나 1~2바이트 길이의 경우 해당 속성을 충족하는 모든 원자성 작업은 하나의 중요한 섹션을 사용합니다. 그렇지 않으면 중요한 섹션이 사용되지 않습니다.
omp_get_num_threads: 사용자가 스레드 수를 명시적으로 설정하지 않은 경우 기본값은 구현 정의입니다(9페이지 참조).
Visual C++에서 기본 스레드 수는 프로세서 수와 같습니다.
omp_set_dynamic: 동적 스레드 조정의 기본값은 구현 정의입니다.
Visual C++에서 기본값은 .입니다
FALSE
.omp_set_nested: 중첩 병렬 처리를 사용하도록 설정하면 중첩된 병렬 영역을 실행하는 데 사용되는 스레드 수가 구현에서 정의됩니다.
Visual C++에서 스레드 수는 운영 체제에 의해 결정됩니다.
OMP_SCHEDULE 환경 변수: 이 환경 변수의 기본값은 구현 정의입니다.
Visual C++에서 일정 유형은 청크 크기가
static
없습니다.OMP_NUM_THREADS 환경 변수: 환경 변수에 대해
OMP_NUM_THREADS
값이 지정되지 않았거나 지정된 값이 양의 정수가 아니거나 값이 시스템에서 지원할 수 있는 최대 스레드 수보다 큰 경우 사용할 스레드 수는 구현 정의됩니다.Visual C++에서 지정된 값이 0 이하이면 스레드 수는 프로세서 수와 같습니다. 값이 64보다 크면 스레드 수는 64입니다.
OMP_DYNAMIC 환경 변수: 기본값은 구현 정의입니다.
Visual C++에서 기본값은 .입니다
FALSE
.