Exemple pour l'utilisation de base d'OpenMP

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

Cet exemple illustre l'utilisation de quelques directives de base pour OpenMP.


Fichier : omp1.f90
! Description : Exemple d'utilisation de directives de base d'OpenMP
! Langage :     Fortran 95
! Auteur :      Carol Gauthier, CACPUS, Université de Sherbrooke
! Date :        septembre 2000
!
!****************************************************************
 Program omp1
!****************************************************************
! Déclaration des variables
 
 integer OMP_GET_NUM_PROCS,OMP_GET_NUM_THREADS,OMP_GET_THREAD_NUM
 integer ThNum
 real(8)tinit,global_timef
 
 integer i,j,vecdim
 parameter(vecdim=500)
 
 complex(8),allocatable,dimension(:,:) :: a
 
 allocate( a(vecdim,vecdim) )
 
 tinit = global_timef()    
 
 !---------------------------------------------------------------
 !$OMP PARALLEL PRIVATE(ThNum)
 
  !---------------------------------------------------------------
  ! Retourne le numéro du fil (0 étant le fil maître).
  ThNum = OMP_GET_THREAD_NUM()
 
  !---------------------------------------------------------------
  ! Chaque fil affiche le nombre de processeurs et de fils.
  write(6,*)ThNum,': ','Nombre de processeurs = ',OMP_GET_NUM_PROCS()
  write(6,*)ThNum,': ','Nombre de fils = ',OMP_GET_NUM_THREADS()
 
  !---------------------------------------------------------------
  !$OMP DO
  do j=1, vecdim
   do i=1,vecdim
    a(i,j) = exp( (cos(float(i)),sin(float(j))) )
   end do
  end do
  !$OMP END DO
  !---------------------------------------------------------------
 
 !$OMP END PARALLEL
 !---------------------------------------------------------------
 
 write(6,*)'Temps de calcul = ',global_timef()-tinit
 
! Fin du programme
 end



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


Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager