OpenMP 는 병렬 컴퓨팅 환경을 이용하기 위해 사용되는 표준화 된 기초. OpenMP는 주로 공유 메모리 형 병렬 컴퓨터에서 사용된다.
MPI 는 명시 적으로 메시지를 교환 프로그램 에 넣해야하지만, OpenMP는 OpenMP를 사용할 수없는 환경에서는 무시되는 지시문 을 삽입하여 병렬화한다. 따라서 PE 및 병렬이 아닌 환경에서 거의 동일한 소스 코드 를 사용할 수 있다는 장점이있다.
MPI와 비교는 OpenMP는 다른 스레드 가 동일한 데이터를 동일한 주소에서 참조 할 수있는 반면 MPI는 명시 적으로 메시지 교환을해야한다. 따라서 SMP 환경에서 대용량 데이터의 이동을 행하지 않고 낮추기 때문에 높은 효율을 기대할 수있다. 그러나 병렬화의 효율은 컴파일러 에 의존하기 때문에 튜닝을 통한 성능 개선 MPI만큼 높아지지 않는 문제가있다. 또한 OpenMP는 MPI에 비해 메모리 액세스 로컬 특성이 낮아지는 경향이 있기 때문에, 빈번한 메모리 액세스가있는 프로그램은 MPI의 더 빠른 경우가 많다.
현재 FORTRAN 및 C / C + + 에 대한 표준화가 진행되고있다.
OpenMP를 이용한 예제 [ 편집 ]
다음은 C 언어의 for 루프를 병렬 처리하는 예이다.
int Main ( int argc , char * argv [ ] ) { int I ; # pragma omp Parallel for for ( i = 0 ; i <= 10000 ; i + + ) { / / (병렬 처리하려는 프로그램) } }
관련 항목 [ 편집 ]
외부 링크 [ 편집 ]
|
출처 - http://ja.wikipedia.org/wiki/OpenMP
'Computer Science > Parallel Computing' 카테고리의 다른 글
CUDA(Compute Unified Device Architecture) (0) | 2013.03.25 |
---|---|
CUDA - Host Memory와 Device Memory의 사이의 데이터 전송 (0) | 2013.03.25 |
병렬 컴퓨팅 (0) | 2012.11.03 |
메시지 전달 인터페이스(Message Passing Interface, MPI) (0) | 2012.11.03 |