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








Posted by linuxism
,