OpenMP: OpenMP 환경 변수
표 2–1 OpenMP 환경 변수
환경 변수
기능
OMP_SCHEDULE
RUNTIME 스케줄링 유형을 지정한 DO,PARALLEL DO, for,parallel for 명령/pragma에 스케줄링 유형을 설정합니다.정의되지 않은 경우 기본값 STATIC이 사용됩니다.예: setenv OMPSCHEDULE 'GUIDED,4'
OMP_NUM_THREADS 또는 PARALLEL
병렬 영역을 실행하는 동안 사용할 라인 수를 설정합니다.NUM 사용THREADS 자구 또는 OMP 호출SET_NUM_THREADS()는 이 값을 덮어쓸 수 있습니다.설정하지 않으면 기본값 1이 사용됩니다.value는 정수입니다.일반 프로그램과 호환하기 위해 PARALLEL 환경 변수 설정 효과 및 OMPNUM_THREADS의 효과는 동일합니다.그러나 이 두 환경 변수를 모두 다른 값으로 설정하면 라이브러리에서 오류 메시지가 발생합니다.예: setenv OMPNUM_THREADS 16
OMP_DYNAMIC
병렬 영역을 실행할 수 있는 스레드 수의 동적 조정을 사용하거나 사용하지 않습니다.설정하지 않으면 기본값 TRUE가 사용됩니다.값은 TRUE 또는 FALSE입니다.예: setenv OMPDYNAMIC FALSE
OMP_NESTED
네스트된 병렬 작업을 사용 또는 사용 안 함으로 설정합니다.값은 TRUE 또는 FALSE입니다.기본값은 FALSE입니다.예: setenv OMPNESTED FALSE
다른 다중 처리 환경 변수도 OpenMP 프로그램의 실행에 영향을 줄 수 있지만, 이것은 OpenMP 규범의 일부분이 아니다.다음 표는 그것들을 개괄하였다.
표 2–2 다중 처리 환경 변수
환경 변수
기능
SUNW_MP_WARN
OpenMP 런타임 라이브러리에서 경고 메시지를 제어합니다.TRUE로 설정하면 런타임 라이브러리에서 stderr에 경고 메시지를 보냅니다.FALSE로 설정하면 경고 메시지가 비활성화됩니다.기본값은 FALSE입니다.OpenMP가 실행될 때 라이브러리는 잘못된 끼워넣기와 잠금 해제 등 흔히 볼 수 있는 OpenMP 위반 행위를 검사할 수 있습니다.실행할 때 검사하면 프로그램 실행 비용이 증가합니다.정의된 행동을 수행하려면 3장을 참조하십시오.SUNWMP_WARN이 TRUE로 설정되면 런타임 라이브러리에서 stderr에 경고 메시지가 표시됩니다.프로그램이 경고 메시지를 받아들이기 위해 리셋 함수를 등록하면 실행 시 라이브러리에서도 경고 메시지를 보냅니다.프로그램에서 다음 함수를 호출하여 사용자 콜백 함수를 등록할 수 있습니다.
int sunw_mp_register_warn (void (*func)(void *));
리셋 함수의 주소는sunw 에 매개 변수로 전달됩니다mp_register_warn().콜백 함수를 성공적으로 등록하면 이 함수는 0을, 등록에 실패하면 1을 반환합니다.만약 프로그램이 리셋 함수를 등록했다면libmtsk는 이 등록된 함수를 호출하여 오류 메시지를 포함하는 로컬 문자열에 바늘을 전달할 것입니다.리셋 함수에서 리셋하면 가리키는 메모리가 더 이상 유효하지 않습니다.예: setenv SUNWMP_WARN TRUE
SUNW_MP_THR_IDLE
OpenMP 프로그램의 빈 라인의 상태를 제어합니다. 이 라인들은 어떤 장벽에서 기다리거나 처리할 새로운 병렬 영역을 기다리고 있습니다.이 값을 SPIN, SLEEP, SLEEP(times), SLEEP(timems), SLEEP(timems), SLEEP(timemc)로 설정할 수 있다. 그 중에서 time는 정수이고 시간량을 지정한다. s, ms와 mc는 시간 단위(초, 밀리초와 미초)를 지정한다.SPIN은 유휴 스레드가 장벽에서 대기하거나 처리할 새 병렬 영역을 기다리는 동안 회전하도록 지정합니다.시간 매개 변수가 없는 SLEEP 는 유휴 스레드를 즉시 일시 중지하도록 지정합니다.시간 매개 변수가 있는 SLEEP는 스레드가 휴면 상태에 들어가기 전에 회전 대기 시간을 지정합니다.절약하지 않은 경우, 빈 라인은 일정 시간의 회전 기다림을 거친 후 휴면 상태로 들어간다.SLEEP, SLEEP(0), SLEEP(0s), SLEEP(0ms)와 SLEEP(0mc)는 모두 같은 효과이다.예:
setenv SUNW_MP_THR_IDLE SPIN setenv SUNW_MP_THR_IDLE SLEEP setenv SUNW_MP_THR_IDLE SLEEP(2s) setenv SUNW_MP_THR_IDLE SLEEP(20ms) setenv SUNW_MP_THR_IDLE SLEEP(150mc)
SUNW_MP_PROCBIND
환경 변수는 Solaris 시스템에서만 작동합니다.SUNW_MP_PROCBIND 환경 변수는 OpenMP 프로그램의 스레드를 실행 중인 시스템의 가상 프로세서에 연결하는 데 사용할 수 있습니다.프로세서 바인딩을 통해 성능을 향상시킬 수 있지만, 여러 개의 스레드를 같은 가상 프로세서에 바인딩하면 성능이 떨어진다.자세한 내용은 2.4 Solaris의 프로세서 바인딩을 참조하십시오.
SUNW_MP_MAX_POOL_THREADS
스레드 풀의 최대 크기를 지정합니다.스레드 풀은 OpenMP 런타임 라이브러리에서 만든 비사용자 스레드만 포함합니다.이것은 주 루틴이나 사용자 프로그램이 현저하게 만든 루틴을 포함하지 않습니다.이 환경 변수를 0으로 설정하면, 스레드 탱크가 비어 있고, 모든 병렬 영역이 한 스레드로 실행됩니다.지정하지 않으면 기본값 1023이 사용됩니다.자세한 내용은 4.2 중첩 병렬 제어 를 참조하십시오.
SUNW_MP_MAX_NESTED_LEVELS
활성 네스트된 병렬 영역의 최대 깊이를 지정합니다.활성 중첩 깊이가 이 환경 변수 값보다 큰 병렬 영역은 하나의 라인으로만 실행됩니다.병렬 영역이 OpenMP 병렬 영역(IF 자문의 값이false)이면 활성 영역으로 간주되지 않습니다.지정하지 않으면 기본값 4가 사용됩니다.자세한 내용은 4.2 중첩 병렬 제어 를 참조하십시오.
STACKSIZE
각 스레드의 스택 크기를 설정합니다.값은 킬로바이트 단위입니다.기본 스택 크기는 32비트 SPARC V8 및 x86 플랫폼에서 4Mb, 64비트 SPARC V9 및 x86 플랫폼에서 8Mb입니다.예: setenv STACKSIZE 8192는 스레드 스택 크기를 8MbSTACKSIZE 환경 변수로 설정하고 B(바이트 표시), K(천 바이트 표시), M(메가바이트 표시) 또는 G(천 바이트 표시)의 접미사를 받습니다.기본 단위는 킬로바이트입니다.
SUNW_MP_GUIDED_WEIGHT
GUIDED 스케줄링을 사용하는 루프에서 스레드에 할당된 블록의 크기를 결정하는 가중치 비율을 설정합니다.이 값은 양의 부동 소수점 숫자여야 하며 GUIDED 스케줄링을 사용하는 프로그램의 모든 주기에 적용됩니다.설정하지 않으면 기본값 2.0이 사용됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.