Exemple pour l'utilisation des clauses PRIVATE et FIRSTPRIVATE

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%
Fichier : omp2.f90
! Description :
!   Exemple d'utilisation des clauses PRIVATE et THREADPRIVATE.
!
!   Dans la première région parallèle, aucune variable n'est
!   privée à chaque fil, donc il n'existe qu'une seule
!   copie de la variable ia (à une adresse).
!
!   Dans la deuxième région parallèle, la variable ia est 
!   déclarée privée, donc chaque fil en possède une copie située
!   à des adresses différentes (et distinctes de l'adresse de ia
!   en dehors de la région parallèle).
!
!   Dans la troisième région parallèle, chaque copie de ia est
!   initialisée avec la valeur de ia avant d'entrer dans la région.
!
! Langage : Fortran 95
! Auteur :  Carol Gauthier, CACPUS, Université de Sherbrooke
! Date :    septembre 2000
!****************************************************************
 Program omp2
!****************************************************************
! Déclaration des variables
 
 integer OMP_GET_THREAD_NUM
 integer i
 integer,dimension(3) :: ia
 
!****************************************************************
! Initialisation des variables
 
 do i=1,3
  ia(i)=i
 end do
 
 write(6,*)
 write(6,*)'-------------------------INITIALISATION----------------------------'
 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,*)  
 
 
! Fin du programme
 end



Fichier : 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