Suche…


Syntax

  • #pragma omp parallel gibt an, dass der folgende Block von allen Threads ausgeführt werden soll.

  • int omp_get_num_threads (void) : gibt die Anzahl der Threads zurück, die in der parallelen Region arbeiten (auch bekannt als Team von Threads).

  • int omp_get_thread_num (void) : gibt den Bezeichner des aufrufenden Threads zurück (reicht von 0 bis N-1, wobei N an omp_get_num_threads() gebunden ist).

Bemerkungen

Sie können die Umgebungsvariable OMP_NUM_THREADS oder die Direktive num_threads in der #pragma parallel , um die Anzahl der ausgeführten Threads für die gesamte Anwendung bzw. für den angegebenen Bereich anzugeben.

Parallele Hallo Welt mit OpenMP

Der folgende C-Code verwendet das parallele OpenMP-Programmiermodell, um die Thread-ID und die Anzahl der Threads mithilfe mehrerer Threads in stdout zu schreiben.

#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;
}

In Fortran 90+ sieht das entsprechende Programm folgendermaßen aus:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow