수색…


통사론

  • #pragma omp parallel 은 모든 스레드가 다음 블록을 실행해야 함을 나타냅니다.

  • int omp_get_num_threads (void) : 병렬 영역에서 작업하는 쓰레드의 수를 반환합니다 (일명 스레드 그룹).

  • int omp_get_thread_num (void) : 호출 스레드의 식별자를 반환합니다 (0에서 N-1까지의 범위, 여기서 N은 omp_get_num_threads() 한정됩니다).

비고

#pragma parallel 내에서 OMP_NUM_THREADS 환경 변수 또는 num_threads 지시문을 사용하여 전체 응용 프로그램 또는 지정된 영역 각각에 대해 실행중인 스레드 수를 나타낼 수 있습니다.

OpenMP를 사용한 병렬 안녕 세상

다음 C 코드는 OpenMP 병렬 프로그래밍 모델을 사용하여 다중 스레드를 사용하여 stdout 에 스레드 ID와 스레드 수를 씁니다.

#include <omp.h>
#include <stdio.h>

int main ()
{
    #pragma omp parallel
    {   
        // ID of the thread in the current team
        int thread_id = omp_get_thread_num();
        // Number of threads in the current team
        int nthreads = omp_get_num_threads();

        printf("I'm thread %d out of %d threads.\n", thread_id, nthreads);
    }
    return 0;
}

Fortran 90+에서 이와 동등한 프로그램은 다음과 같습니다 :

program Hello
  use omp_lib, only: omp_get_thread_num, omp_get_num_threads

  implicit none

  integer :: thread_id
  integer :: nthreads

  !$omp parallel private( thread_id, nthreads )

  ! ID of the thread in the current team
  thread_id = omp_get_thread_num()
  ! Number of threads in the current team
  nthreads = omp_get_num_threads()

  print *, "I'm thread", thread_id, "out of", nthreads, "threads."
  !$omp end parallel
end program Hello


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow