Changeset 1426 for trunk


Ignore:
Timestamp:
03/07/18 16:10:33 (6 years ago)
Author:
aclsce
Message:
  • Added the use of NOD parameter in config.card. This functionality is only available on Curie and for XIOS component (in order to assign XIOS servers on different nodes).

Example :
IOS= (xios_server.exe, xios.x, 4MPI, 2NOD)
means 4 XIOS servers use 2 computing nodes (i.e 2 XIOS servers per node).

Location:
trunk/libIGCM
Files:
2 edited

Legend:

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

    r1421 r1426  
    705705        exit 
    706706      fi 
     707      if [ ${comp}_PROC_NOD -gt 1 ] ; then 
     708            if ( [ ${comp}_PROC_MPI -gt 1 ] && [ ${comp}_PROC_OMP -gt 1 ] ) ; then  
     709              IGCM_debug_Print 2 "Error using MPI/OMP/NOD parameters !!!" 
     710              IGCM_debug_Exit "It is not allowed to use MPI and OMP and NOD parameters for the same component" 
     711              IGCM_debug_Exit "Check your config.card. Exit now" 
     712              IGCM_debug_Verif_Exit 
     713            fi 
     714            if [ "${comp}" != "IOS" ] ; then 
     715              IGCM_debug_Print 2 "Error using NOD parameter !!!" 
     716              IGCM_debug_Exit "NOD parameter is only available for IOS component " 
     717              IGCM_debug_Exit "Check your config.card. Exit now" 
     718              IGCM_debug_Verif_Exit 
     719            fi 
     720      fi 
     721 
    707722      eval tempvarMPI=\${${comp}_PROC_MPI} 
    708723      eval tempvarNOD=\${${comp}_PROC_NOD} 
     
    716731 
    717732      # SUM UP NUMBER OF CORES 
    718       (( coreNumber = coreNumber + tempvarMPI * tempvarNOD * tempvarOMP )) 
    719  
     733      if [ ${comp}_PROC_NOD -gt 1 ] ; then  
     734          (( coreNumber = coreNumber + tempvarNOD * NB_CORE_PER_NODE )) 
     735      else 
     736          (( coreNumber = coreNumber + tempvarMPI * tempvarNOD * tempvarOMP )) 
     737      fi 
    720738      # SUM UP NUMBER OF MPI TASKS 
    721739      (( mpiTasks = mpiTasks + tempvarMPI * tempvarNOD )) 
  • trunk/libIGCM/libIGCM_sys/libIGCM_sys_curie.ksh

    r1413 r1426  
    193193DEFAULT_NUM_PROC_CPL=1 
    194194(( DEFAULT_NUM_PROC_ATM = BATCH_NUM_PROC_TOT - DEFAULT_NUM_PROC_OCE - DEFAULT_NUM_PROC_CPL )) 
     195 
     196#==================================================== 
     197#- Number of computing cores per node  
     198#- 
     199NB_CORE_PER_NODE=16 
    195200 
    196201#D-#================================================== 
     
    12981303      rank=0 
    12991304      current_core=0 
    1300       core_per_node=16 
    13011305      init_exec=n 
    13021306 
     
    13191323          eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 
    13201324          eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 
     1325          eval comp_proc_nod_loc=\${${comp}_PROC_NOD} 
    13211326 
    13221327          echo "#!/bin/ksh" > script_${ExeNameOut}.ksh 
     
    13681373          #OMP_NUM_THREADS=4 
    13691374          #./lmdz.x 
    1370  
     1375          if [ ${comp_proc_nod_loc} -gt 1 ] ; then 
     1376              (( offset_comp_proc_loc =  NB_CORE_PER_NODE / comp_proc_mpi_loc * comp_proc_nod_loc )) 
     1377          else 
     1378              (( offset_comp_proc_loc =  comp_proc_omp_loc )) 
     1379          fi 
    13711380          for nb_proc_mpi in `seq 0 $(($comp_proc_mpi_loc-1))`; do 
    1372             (( index_host = current_core / core_per_node )) 
    1373             host_value=${host[${index_host}]} 
    1374             (( slot =  current_core % core_per_node )) 
    1375             virg="," 
    1376             string_final="" 
    1377             for index in `seq $slot $(($slot+$comp_proc_omp_loc-1))`; do 
    1378               string=$index$virg 
    1379               string_final=$string_final$string 
    1380             done 
    1381             string_final=$( echo $string_final | sed "s/.$//" ) 
    1382             echo "rank $rank=$host_value slot=$string_final" >> rankfile 
    1383             (( rank = rank + 1 )) 
    1384             (( current_core = current_core + comp_proc_omp_loc )) 
     1381             (( index_host = current_core / NB_CORE_PER_NODE )) 
     1382             host_value=${host[${index_host}]} 
     1383             (( slot =  current_core % NB_CORE_PER_NODE )) 
     1384             virg="," 
     1385             string_final="" 
     1386             for index in `seq $slot $(($slot+$comp_proc_omp_loc-1))`; do 
     1387                 string=$index$virg 
     1388                 string_final=$string_final$string 
     1389             done 
     1390             string_final=$( echo $string_final | sed "s/.$//" ) 
     1391             echo "rank $rank=$host_value slot=$string_final" >> rankfile 
     1392             (( rank = rank + 1 )) 
     1393             (( current_core = current_core + offset_comp_proc_loc )) 
    13851394          done 
    13861395        fi 
Note: See TracChangeset for help on using the changeset viewer.