Changeset 1528 for trunk/libIGCM


Ignore:
Timestamp:
05/11/20 08:37:51 (4 years ago)
Author:
aclsce
Message:

Irene-amd : added 2 functionalities to increase computing performances :

  • increase this number of cores per MPI process (OpenMP thread) by using DEP keyword in config.card
  • use of dedicated nodes for XIOS servers by using DEDICATED keyword in config.card

Example of config.card :
ATM= (gcm.e, lmdz.x, 71MPI, 8OMP, 2DEP)
SRF= ("" ,"" )
SBG= ("" ,"" )
OCE= (opa, opa.xx, 360MPI, 2DEP)
ICE= ("" ,"" )
MBG= ("" ,"" )
CPL= ("", "" )
IOS= (xios_server.exe, xios.x, 12MPI,2DEP, DEDICATED)

Location:
trunk/libIGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/libIGCM_config/libIGCM_config.ksh

    r1527 r1528  
    661661    eval ${comp}_PROC_OMP=0 
    662662 
     663    # DEP is the factor to increase the number of cores per process 
     664    eval ${comp}_PROC_DEP=0 
     665 
     666    # DEDICATED is the flag to activate the use of dedicated node for XIOS server only 
     667    eval ${comp}_OK_DEDICATED=0 
     668 
    663669    # Only if we really have an executable for the component : 
    664670    if ( [ "X${ExeNameIn}" != X\"\" ] && [ "X${ExeNameIn}" != "Xinca.dat" ] ) ; then 
     
    677683      eval ${comp}_PROC_OMP=1 
    678684      eval ${comp}_PROC_NOD=1 
     685      eval ${comp}_PROC_DEP=1 
    679686 
    680687      eval NbElts=\${#config_Executable_${comp}[@]} 
    681  
    682688      if [ ${NbElts} -gt 2 ] ; then 
    683689        # 
     
    710716            OK_PARA_MPI=true 
    711717            ;; 
     718            *[dD][eE][pP]*) 
     719            # Read DEP parameter for composante 
     720            eval ${comp}_PROC_DEP=$( echo ${tempvar} | tr '[a-z]' '[A-Z]' | sed -e "s/DEP//" ) 
     721            ;; 
     722            *[dD][eE][dD][iI][cC][aA][tT][eE][dD]*) 
     723            # Read DEDICATED parameter for composante 
     724            eval ${comp}_OK_DEDICATED=1 
    712725          esac 
    713726          (( i = i + 1 )) 
     
    736749            fi 
    737750      fi 
     751      if ( [ ${comp}_OK_DEDICATED -eq 1 ] && [ "${comp}" != "IOS" ] ) ; then 
     752            IGCM_debug_Print 2 "Error using DEDICATED parameter !!!" 
     753            IGCM_debug_Exit "DEDICATED parameter is only available for IOS component " 
     754            IGCM_debug_Exit "Check your config.card. Exit now" 
     755            IGCM_debug_Verif_Exit 
     756      fi 
    738757 
    739758      eval tempvarMPI=\${${comp}_PROC_MPI} 
    740759      eval tempvarNOD=\${${comp}_PROC_NOD} 
    741760      eval tempvarOMP=\${${comp}_PROC_OMP} 
     761      eval tempvarDEP=\${${comp}_PROC_DEP} 
    742762 
    743763      # set OMP mode if more than 1 OMP thread. 
     
    751771          (( coreNumber = coreNumber + tempvarNOD * NB_CORE_PER_NODE )) 
    752772      else 
    753           (( coreNumber = coreNumber + tempvarMPI * tempvarNOD * tempvarOMP )) 
     773          (( coreNumber = coreNumber + tempvarMPI * tempvarNOD * tempvarOMP * tempvarDEP )) 
    754774      fi 
    755775      # SUM UP NUMBER OF MPI TASKS 
  • trunk/libIGCM/libIGCM_sys/libIGCM_sys_irene-amd.ksh

    r1524 r1528  
    11491149  file=$1 
    11501150 
     1151   # In case of use of DEDICATED option XIOS servers, do not share xios nodes with xios clients 
     1152   # Compute the number of core to add to force the use of a new node for xios servers 
     1153   if [ ${IOS_OK_DEDICATED} -eq 1 ] ; then 
     1154      (( current_core_noxios = coreNumber - IOS_PROC_MPI * IOS_PROC_OMP * IOS_PROC_DEP )) 
     1155      (( first_comp_proc_dep_loc = 1 + NB_CORE_PER_NODE - current_core_noxios % NB_CORE_PER_NODE )) 
     1156      (( second_comp_proc_mpi_loc = IOS_PROC_MPI - 1 )) 
     1157      (( coreNumber = current_core_noxios + first_comp_proc_dep_loc + second_comp_proc_mpi_loc * IOS_PROC_OMP * IOS_PROC_DEP )) 
     1158   fi 
     1159 
    11511160  if [ ${executionType} -eq 1 ] ; then 
    11521161    # MPMD + MPI 
    11531162    sed -e "/::openMPthreads::/d"                  \ 
    11541163        -e "s/::JobNumProcTot::/${coreNumber}/"    \ 
    1155         -e "/#MSUB -x/d"                           \ 
    11561164      ${file} > ${file}.tmp 
    11571165 
     
    12701278          eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 
    12711279          eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 
    1272           echo "${comp_proc_mpi_loc} ./${ExeNameOut}" >> run_file 
     1280          eval comp_proc_dep_loc=\${${comp}_PROC_DEP} 
     1281 
     1282          # In case of use of DEDICATED option XIOS servers, do not share xios nodes with xios clients 
     1283          # Compute the number of core to add to force the use of a new node for xios servers 
     1284         if ( [ "X${ExeNameOut}" != X\"\" ] &&  [ "X${comp}" = "XIOS" ] ) ; then 
     1285            if [ ${IOS_OK_DEDICATED} -eq 1 ] ; then 
     1286              (( current_core_noxios = coreNumber - comp_proc_mpi_loc * comp_proc_dep_loc )) 
     1287              (( first_comp_proc_dep_loc = 1 + NB_CORE_PER_NODE - current_core_noxios % NB_CORE_PER_NODE )) 
     1288              (( second_comp_proc_mpi_loc = comp_proc_mpi_loc - 1 )) 
     1289              if [ ${comp_proc_dep_loc} -lt ${first_comp_proc_dep_loc} ] ; then 
     1290                 echo "1-${first_comp_proc_dep_loc} ./${ExeNameOut}" >>run_file 
     1291                 if [ ${comp_proc_mpi_loc} -gt 1 ] ; then 
     1292                    echo "${second_comp_proc_mpi_loc}-${comp_proc_dep_loc} ./${ExeNameOut}" >>run_file 
     1293                 fi 
     1294              else 
     1295                 echo "${comp_proc_mpi_loc}-${comp_proc_dep_loc} ./${ExeNameOut}" >>run_file 
     1296              fi 
     1297           else 
     1298              echo "${comp_proc_mpi_loc}-${comp_proc_dep_loc} ./${ExeNameOut}" >>run_file 
     1299           fi 
     1300         else 
     1301          echo "${comp_proc_mpi_loc}-${comp_proc_dep_loc} ./${ExeNameOut}" >>run_file 
     1302         fi 
     1303 
     1304 
    12731305        fi 
    12741306      done 
     1307 
     1308      ## module advised by TGCC (instead of 2 variables) 
     1309      module load feature/bridge/heterogenous_mpmd 
    12751310 
    12761311      EXECUTION="${HOST_MPIRUN_COMMAND} -f ./run_file" 
     
    14321467          eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 
    14331468          eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 
     1469          eval comp_proc_dep_loc=\${${comp}_PROC_DEP} 
     1470 
     1471          # Compute number of cores per process 
     1472          (( comp_proc_omp_dep_loc = comp_proc_omp_loc * comp_proc_dep_loc ))  
    14341473 
    14351474          # Build script files 
     
    14671506          # Complete run_file 
    14681507 
    1469           echo "${comp_proc_mpi_loc}-${comp_proc_omp_loc} env OMP_NUM_THREADS=${comp_proc_omp_loc} ./script_${ExeNameOut}.ksh " >>run_file 
     1508          # In case of use of DEDICATED option XIOS servers, do not share xios nodes with xios clients 
     1509          # Compute the number of core to add to force the use of a new node for xios servers 
     1510         if ( [ "X${ExeNameOut}" != X\"\" ] &&  [ "X${comp}" = "XIOS" ] ) ; then 
     1511            if [ ${IOS_OK_DEDICATED} -eq 1 ] ; then 
     1512              (( current_core_noxios = coreNumber - comp_proc_mpi_loc * comp_proc_omp_dep_loc ))  
     1513              (( first_comp_proc_dep_loc = 1 + NB_CORE_PER_NODE - current_core_noxios % NB_CORE_PER_NODE )) 
     1514              (( second_comp_proc_mpi_loc = comp_proc_mpi_loc - 1 )) 
     1515              if [ ${comp_proc_omp_dep_loc} -lt ${first_comp_proc_dep_loc} ] ; then  
     1516                 echo "1-${first_comp_proc_dep_loc} env OMP_NUM_THREADS=1 ./script_${ExeNameOut}.ksh " >>run_file 
     1517                  if [ ${comp_proc_mpi_loc} -gt 1 ] ; then 
     1518                    echo "${second_comp_proc_mpi_loc}-${comp_proc_omp_dep_loc} ./${ExeNameOut}" >>run_file 
     1519                  fi 
     1520              else 
     1521                 echo "${comp_proc_mpi_loc}-${comp_proc_omp_dep_loc} env OMP_NUM_THREADS=1 ./script_${ExeNameOut}.ksh " >>run_file 
     1522              fi 
     1523           else 
     1524              echo "${comp_proc_mpi_loc}-${comp_proc_omp_dep_loc} env OMP_NUM_THREADS=1 ./script_${ExeNameOut}.ksh " >>run_file 
     1525           fi 
     1526         else 
     1527          echo "${comp_proc_mpi_loc}-${comp_proc_omp_dep_loc} env OMP_NUM_THREADS=${comp_proc_omp_loc} ./script_${ExeNameOut}.ksh " >>run_file 
     1528         fi 
    14701529 
    14711530        fi 
Note: See TracChangeset for help on using the changeset viewer.