2010-08-19 2 views
3

OpenMP에 대한 높은 수준의 설명은 무엇입니까?OpenMP 란 무엇입니까?

Wikipedia article은 "OpenMP (Open Multi-Processing)는 Unix 및 Microsoft Windows 플랫폼을 포함한 여러 아키텍처의 C, C++ 및 Fortran에서 다중 플랫폼 공유 메모리 다중 처리 프로그래밍을 지원하는 API (Application Programming Interface)입니다. 이는 런타임 동작에 영향을주는 컴파일러 지시문, 라이브러리 루틴 및 환경 변수로 구성됩니다. " 뭐?

스레드, 스레드 풀 및 작업 도용과 같은 동시성에 대한 다른 접근 방식과 어떻게 비교합니까?

답변

2

명시 적으로 스레드를 관리 (생성, 소멸, 할당)하지 않고도 코드의 특정 부분을 병렬로 실행할 수있는 기능을 C/C++에 제공하는 확장 세트입니다.

기본적으로 병렬로 코드의 특정 부분을 선언적으로 실행할 수있게하여 스레드 자체를 관리하는 복잡성에서 벗어나게됩니다. 코드 샘플은 항상 도움이됩니다.

# pragma omp parallel \ 
    shared (n, x, y) \ 
    private (i) \ 
    reduction (+ : xdoty) 

# pragma omp for 

    for (i = 0; i < n; i++) 
    { 
    xdoty = xdoty + x[i] * y[i]; 
    } 
+0

마지막 pragma에는 'parallel'이 없습니다. – tur1ng

+0

그렇게 생각하지 마십시오. 그러나 확실하지 않습니다. –