Example using the PRIVATE and FIRSTPRIVATE clauses

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Cette page est une traduction de la page Exemple pour l'utilisation des clauses PRIVATE et FIRSTPRIVATE et la traduction est complétée à 100 % et à jour.

Autres langues :anglais 100% • ‎français 100%
File : omp2.f90
! Description:
!   Example using the PRIVATE and THREADPRIVATE clauses.
!
!   In the first parallel region, none of the variables is
!   private to a thread, so there is only one copy of the
!   ia variable (at one address).
!
!   In the second parallel region, the ia variable is declared
!   to be private, so each thread has its own copy, at different
!   memory addresses (and different from the address of ia outside
!   the parallel region).
!
!   For the third parallel region, each copy of ia is initialized
!   with ia's value before entering this region.
!
! Language: Fortran 95
! Author:   Carol Gauthier, CACPUS, Université de Sherbrooke
! Date:     September 2000
!****************************************************************
 Program omp2
!****************************************************************
! Declaration of variables
 
 integer OMP_GET_THREAD_NUM
 integer i
 integer,dimension(3) :: ia
 
!****************************************************************
! Initialization of variables
 
 do i=1,3
  ia(i)=i
 end do
 
 write(6,*)
 write(6,*)'-------------------------INITIALIZATION----------------------------'
 write(6,*)'ia = ',ia
 write(6,*)
 
 write(6,*)'-----------------------------PARALLEL------------------------------'  
 !================================================================
 !$OMP PARALLEL
 
  write(6,*)OMP_GET_THREAD_NUM(),':', 'ia = ',ia
 
 !$OMP END PARALLEL
 !================================================================
 write(6,*)
 
 write(6,*)'-----------------------PARALLEL PRIVATE(ia)-----------------------'  
 !================================================================
 !$OMP PARALLEL PRIVATE(ia)
 
  write(6,*)OMP_GET_THREAD_NUM(),':', 'ia = ',ia
 
 !$OMP END PARALLEL
 !================================================================
 write(6,*)  
 
 write(6,*)'-------------------PARALLEL FIRSTPRIVATE(ia)----------------------'  
 !================================================================
 !$OMP PARALLEL FIRSTPRIVATE(ia)
 
  write(6,*)OMP_GET_THREAD_NUM(),':', 'ia = ',ia
 
 !$OMP END PARALLEL
 !================================================================
 write(6,*)  
 
 
! Program end
end



File : makefile
#####################################################
# makefile
 
FFLAGS= -qsmp=omp -bmaxdata:2000000000 -u
 
OBJS = omp2.o
 
 
omp1: $(OBJS)
	xlf95_r $(OBJS) $(FFLAGS) -o omp2
 
.f.o: 
	xlf95_r $(FFLAGS) -c $*.f
 
cl:
	rm -f $(OBJS) omp2


Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager