OpenMP in FORTRAN läuft nicht die erwartete Anzahl von threads

Ich bin neu in der parallelen Programmierung, und habe Probleme damit, eine einfache parallele Fortran-Programm für die Verwendung von mehreren threads bei OpenMP. Das folgende Programm:

   Program Hello
   Use omp_lib
   Implicit None

   INTEGER        nthreads
   nthreads = 4

   CALL OMP_SET_NUM_THREADS(nthreads)

   write(*,*) omp_get_num_procs()
   write(*,*) omp_get_max_threads()
   write(*,*) omp_get_num_threads()

   !$OMP PARALLEL
     Write(*,*) 'Hello'
     Write(*,*) omp_get_num_threads()
   !%OMP END PARALLEL

   End Program Hello

Erzeugt das Ergebnis:

      32
       4
       1
   Hello
       1

Was ist der Grund dafür, dass die Anzahl der threads, die innerhalb der parallelen region ist nicht das gleiche wie nthreads, die ich oben gesetzt? Ich bin kompilieren Sie das Programm mit gfortran -f openmp Hallo.f auf einem Windows Rechner mit cygwin.

InformationsquelleAutor | 2013-04-30
Schreibe einen Kommentar