Changeset 72


Ignore:
Timestamp:
06/21/16 11:42:45 (8 years ago)
Author:
dumas
Message:

OpenMP parallelization in diagno-L2_mod.f90, eq_ellipt_sgbsv_mod-0.2.f90 and flottab2-0.7.f90

Location:
trunk/SOURCES
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/SOURCES/Fichiers-parametres/Makefile.tof-lsce3130.inc

    r71 r72  
    3939        IFORT= ifort 
    4040 
    41         ARITHMi    = -O2 -fp-model precise  -heap-arrays -traceback -mcmodel=medium #  -warn -traceback   -CB  -g  # options pour une meilleure arithmetique 
     41        ARITHMi    = -O2 -fp-model precise  -heap-arrays -traceback -mcmodel=medium  #-openmp #  -warn -traceback   -CB  -g  # options pour une meilleure arithmetique 
    4242                                                                      # (normalement reproductible) 
    4343    ifeq ($(debug), 1) 
  • trunk/SOURCES/New-remplimat/diagno-L2_mod.f90

    r71 r72  
    110110  call calc_pvi                    ! calcule les viscosites integrees 
    111111 
     112!$OMP PARALLEL 
     113!$OMP WORKSHARE 
    112114   where (flot(:,:).and.(H.gt.1))  ! valeur analytique pour les shelfs 
    113115      pvi(:,:) = (4./coef_Sflot/rog)**2/btt(:,:,1,1)/H(:,:) 
    114116   end where 
    115  
     117!$OMP END WORKSHARE 
     118!$OMP END PARALLEL 
    116119  ! avec couplage thermomecanique 
    117120!  write(166,*) ' apres call calc_pvi',itour_pvi 
     
    178181 
    179182  !      nouvelles vitesses          
    180  
     183  !$OMP PARALLEL 
     184  !$OMP WORKSHARE 
    181185  uxbar(:,:)=uxb1(:,:) 
    182186  uybar(:,:)=uyb1(:,:) 
    183  
     187  !$OMP END WORKSHARE 
    184188 
    185189 
    186190  !    calcul de tobmx et tobmy (frottement basal) apres calcul des vitesses 
    187191  !    --------------------------------------------------------------------- 
     192  !$OMP DO 
    188193  do j=1,ny 
    189194     do i=1,nx 
     
    192197     enddo 
    193198  enddo 
     199  !$OMP END DO 
    194200 
    195201  ! Mise ne réserve des vitesses flgzmx et flgzmy 
     202  !$OMP WORKSHARE 
    196203  where (flgzmx(:,:)) 
    197204     uxflgz(:,:)=uxbar(:,:) 
     
    205212     uyflgz(:,:)=0. 
    206213  endwhere 
    207  
     214  !$OMP END WORKSHARE 
     215  !$OMP END PARALLEL 
    208216  !i=92 
    209217  !j=152 
  • trunk/SOURCES/New-remplimat/eq_ellipt_sgbsv_mod-0.2.f90

    r4 r72  
    88 
    99! declaration des variables 
    10  
     10!$ USE OMP_LIB 
    1111use remplimat_declar   ! toutes les routines de ce module connaissent les Tuij.... 
    1212 
     
    154154      !   write(6,*) 'sortie ok de sgbsv' 
    155155      !   write(6,*)'-----------------------' 
    156  
     156      !$OMP PARALLEL 
     157      !$OMP DO 
    157158      do j = ny1,ny2 
    158159         do i = nx1,nx2 
     
    171172         end do 
    172173      end do 
    173  
    174  
     174      !$OMP END DO 
     175      !$OMP END PARALLEL 
    175176 
    176177   else 
     
    181182 
    182183else                 ! nblig=0, pas de passage par sgbsv 
     184   !$OMP PARALLEL 
     185   !$OMP WORKSHARE 
    183186   uxnew(nx1:nx2,ny1:ny2)=uxprec(nx1:nx2,ny1:ny2) 
    184187   uynew(nx1:nx2,ny1:ny2)=uyprec(nx1:nx2,ny1:ny2) 
     188   !$OMP END WORKSHARE 
     189   !$OMP END PARALLEL 
    185190end if 
    186191 
     
    209214! numerotation des lignes  
    210215!-------------------------- 
    211  
     216!$OMP PARALLEL 
     217!$OMP WORKSHARE 
    212218ligu_L2(:,:) = -9999 
    213219ligv_L2(:,:) = -9999 
    214220pos_ligu(:,:) = -9999 
    215221pos_ligv(:,:) = -9999 
    216  
     222!$OMP END WORKSHARE 
     223!$OMP END PARALLEL 
    217224! Boucle sur les noeuds avec la dimension la plus grande a l'interieur 
    218225 
     
    248255end do count 
    249256 
     257 
    250258nblig = count_line-1 
    251259 
     
    253261! calcul de la largeur de bande. depend de la numerotation des lignes 
    254262!-------------------------------------------------------------------- 
     263!$OMP PARALLEL 
     264!$OMP WORKSHARE 
    255265lu_band(:) = 0 
    256266ll_band(:) = 0 
     267!$OMP END WORKSHARE 
     268!$OMP END PARALLEL 
    257269 
    258270larg_band: do j = ny1,ny2 
     
    367379! ecriture de la matrice proprement dite et du vecteur bdr 
    368380!------------------------------------------------------------ 
     381!$OMP PARALLEL 
     382!$OMP WORKSHARE 
    369383mmat(:,:) = 0. 
    370384bdr(:,:) = 0. 
    371  
    372  
     385!$OMP END WORKSHARE 
     386 
     387!$OMP DO PRIVATE(ligne,ilmin,ilmax,jlmin,jlmax,colonne) 
    373388ij_loop : do j = ny1,ny2         ! attention, on rempli 2 lignes par 2 lignes (u,v) 
    374389   do i = nx1,nx2 
     
    481496 end do 
    482497end do ij_loop 
     498!$OMP END DO 
     499!$OMP END PARALLEL 
    483500 
    484501 
  • trunk/SOURCES/flottab2-0.7.f90

    r71 r72  
    630630 
    631631!On compte comme englacé uniquement les calottes dont une partie est posée       
    632 !$OMP PARALLEL PRIVATE(smax_,smax_coord,smax_i,smax_j) 
     632!$OMP PARALLEL PRIVATE(smax_,smax_coord,smax_i,smax_j,mask_tache_ij) 
    633633!$OMP DO 
    634 do i=3,nx-2 
    635    do j=3,ny-2 
     634do j=3,ny-2 
     635   do i=3,nx-2 
    636636test1:  if (.not.iceberg(table_out(i,j))) then ! on est pas sur un iceberg  
    637637         if (nb_pts_tache(table_out(i,j)).ge.1) then 
     
    748748subroutine determin_tache 
    749749 
    750 !!$ USE OMP_LIB 
     750!$ USE OMP_LIB 
    751751 
    752752implicit none 
     
    769769enddo 
    770770!      table_in  = .false. 
    771 !!$OMP PARALLEL 
    772 !!$OMP WORKSHARE 
     771!$OMP PARALLEL 
     772!$OMP WORKSHARE 
    773773table_out(:,:) = 0 
    774774iceberg(:)  = .true. 
    775775icetrim (:) = .true. 
    776776nb_pts_tache(:) = 0 
    777 !!$OMP END WORKSHARE 
    778 !!$OMP END PARALLEL 
     777!$OMP END WORKSHARE 
     778!$OMP END PARALLEL 
    779779!    open(unit=100,file="tache.data",status='replace') 
    780780 
    781781! 2-reperage des taches 
    782782!---------------------- 
    783 !!$OMP PARALLEL PRIVATE(mask,label,indice) 
    784 !!$OMP DO 
    785 do i=2,nx-1 
    786   do j=2,ny-1 
     783 
     784do j=2,ny-1 
     785  do i=2,nx-1 
    787786 
    788787 
     
    852851  enddo 
    853852enddo 
    854 !!$OMP END DO 
    855 !!$OMP END PARALLEL 
     853 
    856854 
    857855 
     
    869867enddo 
    870868 
    871 !!$OMP PARALLEL 
    872 !!$OMP DO REDUCTION(+:nb_pts_tache) 
    873 do i=1,nx 
    874    do j=1,ny 
     869!$OMP PARALLEL 
     870!$OMP DO REDUCTION(+:nb_pts_tache) 
     871do j=1,ny 
     872   do i=1,nx 
    875873      if (table_out(i,j).ne.0) then 
    876874         table_out(i,j)=compt(table_out(i,j))   
     
    879877   enddo 
    880878enddo 
    881 !!$OMP END DO 
    882 !!$OMP END PARALLEL 
     879!$OMP END DO 
     880!$OMP END PARALLEL 
    883881 
    884882 
     
    915913integer :: j_moins1,j_plus1,j_plus2 
    916914       
    917       !!$OMP PARALLEL 
    918       !!$OMP DO 
     915      !$OMP PARALLEL 
     916      !$OMP DO 
    919917      do j=3,ny-2 
    920918        do i=3,nx-2 
     
    970968       end do 
    971969      end do 
    972       !!$OMP END DO 
     970      !$OMP END DO 
     971      !$OMP ENd PARALLEL 
    973972 
    974973!!$call detect_assym(nx,ny,0,41,1,0,1,0,H,itestf) 
     
    985984        
    986985baies: do k=1,2 
    987 !!$OMP DO PRIVATE(i_moins1,j_moins1,i_plus1,j_plus1,i_plus2,j_plus2) 
     986!$OMP PARALLEL 
     987!$OMP DO PRIVATE(i_moins1,j_moins1,i_plus1,j_plus1,i_plus2,j_plus2) 
    988988do j=1,ny 
    989989   do i=1,nx 
     
    10201020   end do 
    10211021end do 
    1022 !!$OMP END DO 
     1022!$OMP END DO 
     1023!$OMP END PARALLEL 
    10231024end do baies 
    10241025 
     
    10321033!!$end if 
    10331034 
    1034 !!$OMP DO 
     1035!$OMP PARALLEL 
     1036!$OMP DO 
    10351037do j=2,ny-1 
    10361038   do i=2,nx-1 
     
    10461048   end do 
    10471049end do 
    1048 !!$OMP END DO 
     1050!$OMP END DO 
    10491051 
    10501052! traitement des bords. On considere que l'exterieur n'a pas de glace 
    10511053! attention ce n'est vrai que sur la grande grille 
    10521054 
    1053 !!$OMP DO PRIVATE(i) 
     1055!$OMP DO PRIVATE(i) 
    10541056do j=2,ny-1 
    10551057   i=1 
     
    10581060   front(i,j)=(ice(i-1,j)+ice(i,j+1)+ice(i,j-1)) 
    10591061end do 
    1060 !!$OMP END DO  
    1061  
    1062 !!$OMP DO PRIVATE(j) 
     1062!$OMP END DO  
     1063 
     1064!$OMP DO PRIVATE(j) 
    10631065do i=2,nx-1 
    10641066   j=1  
     
    10671069   front(i,j)=(ice(i-1,j)+ice(i+1,j)+ice(i,j-1)) 
    10681070end do 
    1069 !!$OMP END DO  
     1071!$OMP END DO  
     1072 
    10701073! traitement des coins 
    10711074 
     
    10891092!   si ces deux taches sont posées (ou une des deux), il n'y a pas assez de conditions aux limites 
    10901093 
    1091 !!$OMP DO  
     1094!$OMP DO  
    10921095do j=1,ny 
    10931096   do i=1,nx-1 
     
    11021105   end do 
    11031106end do 
    1104 !!$OMP END DO 
    1105  
    1106 !!$OMP DO  
     1107!$OMP END DO 
     1108 
     1109!$OMP DO  
    11071110do j=1,ny-1 
    11081111   do i=1,nx 
     
    11171120   end do 
    11181121end do 
    1119 !!$OMP END DO 
     1122!$OMP END DO 
    11201123 
    11211124!isolx signifie pas de voisins en x 
     
    11251128 
    11261129! calcul de frontfacex et isolx 
    1127 !!$OMP DO 
     1130!$OMP DO 
    11281131do j=1,ny 
    11291132   do i=2,nx-1 
     
    11451148   end do 
    11461149end do 
    1147 !!$OMP END DO 
     1150!$OMP END DO 
    11481151 
    11491152! calcul de frontfacey et isoly 
    1150 !!$OMP DO 
     1153!$OMP DO 
    11511154do j=2,ny-1 
    11521155   do i=1,nx 
     
    11681171   end do 
    11691172end do 
    1170 !!$OMP END DO 
     1173!$OMP END DO 
    11711174 
    11721175 
     
    11741177! attention ce n'est vrai que sur la grande grille 
    11751178 
    1176 !!$OMP DO PRIVATE(i) 
     1179!$OMP DO PRIVATE(i) 
    11771180do j=2,ny-1 
    11781181   i=1 
     
    11931196   end if 
    11941197end do 
    1195 !!$OMP END DO 
    1196  
    1197 !!$OMP DO PRIVATE(j) 
     1198!$OMP END DO 
     1199 
     1200!$OMP DO PRIVATE(j) 
    11981201do i=2,nx-1 
    11991202   j=1  
     
    12141217   end if 
    12151218end do 
    1216 !!$OMP END DO 
    1217 !!OMP END PARALLEL 
     1219!$OMP END DO 
     1220!$OMP END PARALLEL 
    12181221 
    12191222return 
  • trunk/SOURCES/velocities-polyn-0.3.f90

    r4 r72  
    2323!     Attention la vitesse verticale est "super reduite" 
    2424! ========================================================================== 
    25  
     25!$ USE OMP_LIB 
    2626use module3d_phy 
    2727!use deform_declar  
     
    3232if (itracebug.eq.1)  call tracebug(' Entree dans routine SIA_velocity') 
    3333 
    34      
     34!$OMP PARALLEL 
     35!$OMP DO COLLAPSE(2)     
    3536do k=1,nz 
    3637   do j=2,ny-1 
     
    101102   end do 
    102103end do 
    103  
     104!$OMP END DO 
    104105 
    105106!       *************************** Z VELOCITIES ****************** 
    106107 
    107  
     108!$OMP DO 
    108109do j=2,ny-1 
    109110   do i=2,nx-1 
     
    144145     end do 
    145146 end do 
     147!$OMP END DO 
    146148 
     149!$OMP DO 
    147150  do j=2,ny-1 
    148151     do i=2,nx-1   
     
    151154     end do 
    152155  end do 
    153  
     156!$OMP END DO 
     157!$OMP END PARALLEL 
    154158 
    155159end subroutine SIA_velocities 
Note: See TracChangeset for help on using the changeset viewer.