Basit paralel örnek
Bu sayfada
Sözdizimi
-
#pragma omp parallel
aşağıdaki bloğun tüm threadler tarafından yürütüleceğini belirtir. -
int omp_get_num_threads (void)
: paralel bölgede çalışan iş parçacıklarının sayısını döndürür (diğer bir deyişle iş parçacıkları takımı). -
int omp_get_thread_num (void)
: çağıran iş parçacığının tanımlayıcısını döndürür (0 ile N-1 arasında değişir, burada Nomp_get_num_threads()
ile sınırlıdır).
Sırasıyla, tüm uygulama veya belirtilen bölge için yürütülen iş parçacıklarının sayısını belirtmek için ‘#pragma parallel’ içindeki ‘OMP_NUM_THREADS’ ortam değişkenini veya ’num_threads’ yönergesini kullanabilirsiniz.
OpenMP kullanarak paralel merhaba dünya
Aşağıdaki C kodu, birden çok iş parçacığı kullanarak stdout’a iş parçacığı kimliğini ve iş parçacığı sayısını yazmak için OpenMP paralel programlama modelini kullanır.
#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+ sürümünde eşdeğer program şöyle görünür:
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