Example of basic OpenMP usage

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

Autres langues :anglais 100% • ‎français 100%

This example shows how to use some basic OpenMP directives.


File : omp1.f90
! Description : Example of basic OpenMP usage
! Langage :     Fortran 95
! Auteur :      Carol Gauthier, CACPUS, Université de Sherbrooke
! Date :        September 2000
!
!****************************************************************
 Program omp1
!****************************************************************
! Declaration of 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)
 
  !---------------------------------------------------------------
  ! Return the thread number (0 being the master thread).
  ThNum = OMP_GET_THREAD_NUM()
 
  !---------------------------------------------------------------
  ! Each thread displays the number of processors and threads.
  write(6,*)ThNum,': ','Number of processeurs = ',OMP_GET_NUM_PROCS()
  write(6,*)ThNum,': ','Number of threads = ',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,*)'Computation time = ',global_timef()-tinit
 
! Program ends
 end



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