Changeset 1305 for trunk/libIGCM/libIGCM_sys/libIGCM_sys_ada.ksh
- Timestamp:
- 03/22/16 17:24:25 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libIGCM/libIGCM_sys/libIGCM_sys_ada.ksh
r1297 r1305 93 93 #==================================================== 94 94 source /smplocal/pub/Modules/default/init/ksh 95 . /smphome/rech/psl/rpsl035/.atlas_env_ada_intel_2013_0_bash > /dev/null 2>&1 95 if ( [ "X${LOADL_STEP_TYPE}" = "XPARALLEL" ] || [ "X${LOADL_STEP_TYPE}" = "XSERIAL" ] ) ; then 96 . /smphome/rech/psl/rpsl035/.atlas_env_ada_intel_2013_0_bash > /dev/null 2>&1 97 else 98 module load intel/2016.2 > /dev/null 2>&1 99 . /smphome/rech/psl/rpsl035/.atlas_env_ada_bash > /dev/null 2>&1 100 fi 96 101 [ ! X${TaskType} = Xchecking ] && IGCM_debug_Print 1 "List of loaded modules:" 97 102 [ ! X${TaskType} = Xchecking ] && module list … … 136 141 #==================================================== 137 142 #- HOST_MPIRUN_COMMAND 138 typeset -r HOST_MPIRUN_COMMAND=${HOST_MPIRUN_COMMAND:="/usr/bin/time poe"} 139 143 if ( [ "X${LOADL_STEP_TYPE}" = "XPARALLEL" ] || [ "X${LOADL_STEP_TYPE}" = "XSERIAL" ] ) ; then 144 typeset -r HOST_MPIRUN_COMMAND=${HOST_MPIRUN_COMMAND:="/usr/bin/time poe"} 145 else 146 typeset -r HOST_MPIRUN_COMMAND=${HOST_MPIRUN_COMMAND:="/usr/bin/time mpirun"} 147 fi 140 148 #==================================================== 141 149 #- Max number of arguments passed to nco operator or demigration command … … 145 153 #- set PackDefault to true on ada 146 154 PackDefault=true 155 156 #==================================================== 157 #- Number of cores per node 158 core_per_node=32 147 159 148 160 #==================================================== … … 401 413 [ ${#@} = 2 ] && REP_FOR_JOB=${2} 402 414 sed -e "s:\# \@ output *= .*:\# \@ output = ${Script_Output}:" \ 403 404 415 -e "s:\# \@ error *= .*:\# \@ error = ${Script_Output}:" \ 416 $1 > ${REP_FOR_JOB}/JOB_FOR_IGCM 405 417 cd $REP_FOR_JOB ; /usr/bin/llsubmit JOB_FOR_IGCM > ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$ 2>&1 ; status=$? ; cd - ; 406 418 … … 433 445 434 446 sed -e "s:\# \@ output *= .*:\# \@ output = ${Script_Post_Output}.out:" \ 435 436 447 -e "s:\# \@ error *= .*:\# \@ error = ${Script_Post_Output}.out:" \ 448 ${libIGCM_POST}/$1.job > ${REP_FOR_JOB}/JOB_FOR_IGCM_$$ 437 449 438 450 cd $REP_FOR_JOB ; /usr/bin/llsubmit JOB_FOR_IGCM_$$ > ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$ 2>&1 ; status=$? ; cd - ; … … 858 870 function IGCM_sys_activ_variables { 859 871 IGCM_debug_PushStack "IGCM_sys_activ_variables" 872 if ( [ ! "X${LOADL_STEP_TYPE}" = "XPARALLEL" ] && [ ! "X${LOADL_STEP_TYPE}" = "XSERIAL" ] ) ; then 873 # Temporary modifications for Intel MPI Environment 874 # To use DAPL Provider instead of OFA for inter-node communications 875 # and shm for intra-node communications 876 export I_MPI_FABRICS=shm:dapl 877 # To use UD protocol instead of RC (default with DAPL) 878 export I_MPI_DAPL_UD=1 879 # Some optimizations 880 export DAPL_UCM_REP_TIME=2000 # REQUEST timer, waiting for REPLY in millisecs 881 export DAPL_UCM_RTU_TIME=2000 # REPLY timer, waiting for RTU in millisecs 882 export DAPL_UCM_CQ_SIZE=2000 # CM completion queue 883 export DAPL_UCM_QP_SIZE=2000 # CM message queue 884 export DAPL_UCM_RETRY=7 # REQUEST and REPLY retries 885 export DAPL_ACK_RETRY=7 # IB RC Ack retry count 886 export DAPL_ACK_TIMER=20 # IB RC Ack retry timer 887 # To enable RDMA 888 export I_MPI_DAPL_UD_RDMA_MIXED=enable 889 # To use DAPL 2.1.7 890 export DAT_OVERRIDE=/smplocal/pub/DAPL/2.1.7/etc/dat.conf 891 export LD_LIBRARY_PATH=/smplocal/pub/DAPL/2.1.7/lib:${LD_LIBRARY_PATH} 892 fi 860 893 if ( $DEBUG_sys ) ; then 861 894 echo "IGCM_sys_activ_variables" … … 928 961 if [ ${executionType} -eq 1 ] ; then 929 962 # MPMD + MPI 930 sed -e "/::openMPthreads::/d" \ 963 if [ X${MPIEnvironment} = XIBM ] ; then 964 sed -e "/::openMPthreads::/d" \ 931 965 -e "s/::JobNumProcTot::/${coreNumber}/" \ 932 ${file} > ${file}.tmp 966 ${file} > ${file}.tmp 967 else 968 sed -e "/::openMPthreads::/d" \ 969 -e "s/@ job_type = parallel/@ job_type = mpich/" \ 970 -e "s/::JobNumProcTot::/${coreNumber}/" \ 971 ${file} > ${file}.tmp 972 fi 933 973 934 974 elif [ ${executionType} -eq 2 ] ; then 935 975 # MPMD + MPI + OMP 936 sed -e "s/::openMPthreads::/${openMPthreads}/" \ 976 if [ X${MPIEnvironment} = XIBM ] ; then 977 sed -e "s/::openMPthreads::/${openMPthreads}/" \ 937 978 -e "s/::JobNumProcTot::/${mpiTasks}/" \ 938 ${file} > ${file}.tmp 979 ${file} > ${file}.tmp 980 else 981 (( nodeNumber = coreNumber / core_per_node )) 982 [ $(( ${coreNumber} % ${core_per_node} )) -ne 0 ] && (( nodeNumber = nodeNumber + 1 )) 983 sed -e "/::openMPthreads::/d" \ 984 -e "s/@ job_type = parallel/@ job_type = mpich/" \ 985 -e "s/@ total_tasks = ::JobNumProcTot::/@ node = ${nodeNumber} /" \ 986 -e "/@ as_limit = 3.5gb/d" \ 987 -e "s/::JobNumProcTot::/${mpiTasks}/" \ 988 ${file} > ${file}.tmp 989 fi 939 990 940 991 elif [ ${executionType} -eq 3 ] ; then 941 992 # SPMD + MPI/OMP 942 sed -e "s/::openMPthreads::/${openMPthreads}/" \ 993 if [ X${MPIEnvironment} = XIBM ] ; then 994 sed -e "s/::openMPthreads::/${openMPthreads}/" \ 943 995 -e "s/::JobNumProcTot::/${mpiTasks}/" \ 944 ${file} > ${file}.tmp 996 ${file} > ${file}.tmp 997 else 998 sed -e "s/::openMPthreads::/${openMPthreads}/" \ 999 -e "s/@ job_type = parallel/@ job_type = mpich/" \ 1000 -e "s/::JobNumProcTot::/${mpiTasks}/" \ 1001 ${file} > ${file}.tmp 1002 fi 945 1003 946 1004 elif [ ${executionType} -eq 4 ] ; then 947 1005 # SPMD + MPI only 948 sed -e "s/::JobNumProcTot::/${mpiTasks}/" \ 1006 if [ X${MPIEnvironment} = XIBM ] ; then 1007 sed -e "s/::JobNumProcTot::/${mpiTasks}/" \ 949 1008 -e "/::openMPthreads::/d" \ 950 ${file} > ${file}.tmp 1009 ${file} > ${file}.tmp 1010 else 1011 sed -e "s/::JobNumProcTot::/${mpiTasks}/" \ 1012 -e "s/@ job_type = parallel/@ job_type = mpich/" \ 1013 -e "/::openMPthreads::/d" \ 1014 ${file} > ${file}.tmp 1015 fi 951 1016 952 1017 elif [ ${executionType} -eq 5 ] ; then … … 1005 1070 if ( ${OK_PARA_MPMD} ) ; then 1006 1071 1007 if [ -f run_file ] ; then 1008 IGCM_sys_Rm -f run_file 1009 fi 1010 touch run_file 1011 1012 # Build run_file 1013 1014 # First loop on the components for the coupler ie oasis (only if oasis3) 1015 # the coupler ie oasis3 must be the first one 1016 for comp in ${config_ListOfComponents[*]} ; do 1017 1018 eval ExeNameIn=\${config_Executable_${comp}[0]} 1019 eval ExeNameOut=\${config_Executable_${comp}[1]} 1020 1021 # for CPL component only 1022 if [ "X${comp}" = "XCPL" ] ; then 1023 1024 eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 1025 eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 1026 1027 if ( ${OK_PARA_MPI} ) ; then 1028 (( mpi_count = 1 )) 1029 until [ ${mpi_count} -gt ${comp_proc_mpi_loc} ] ; do 1030 echo "./${ExeNameOut}" >> run_file 1031 (( mpi_count = mpi_count + 1 )) 1032 done 1033 else 1034 echo "./${ExeNameOut} " >> run_file 1072 # MPI IBM Environment 1073 if ( [ "X${LOADL_STEP_TYPE}" = "XPARALLEL" ] || [ "X${LOADL_STEP_TYPE}" = "XSERIAL" ] ) ; then 1074 IGCM_debug_Print 1 "You use IBM MPI environment" 1075 if [ -f run_file ] ; then 1076 IGCM_sys_Rm -f run_file 1077 fi 1078 touch run_file 1079 1080 # Build run_file 1081 1082 # First loop on the components for the coupler ie oasis (only if oasis3) 1083 # the coupler ie oasis3 must be the first one 1084 for comp in ${config_ListOfComponents[*]} ; do 1085 1086 eval ExeNameIn=\${config_Executable_${comp}[0]} 1087 eval ExeNameOut=\${config_Executable_${comp}[1]} 1088 1089 # for CPL component only 1090 if [ "X${comp}" = "XCPL" ] ; then 1091 1092 eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 1093 eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 1094 1095 if ( ${OK_PARA_MPI} ) ; then 1096 (( mpi_count = 1 )) 1097 until [ ${mpi_count} -gt ${comp_proc_mpi_loc} ] ; do 1098 echo "./${ExeNameOut}" >> run_file 1099 (( mpi_count = mpi_count + 1 )) 1100 done 1101 else 1102 echo "./${ExeNameOut} " >> run_file 1103 fi 1104 fi 1105 1106 done 1107 1108 # Then second loop on the components 1109 for comp in ${config_ListOfComponents[*]} ; do 1110 1111 eval ExeNameIn=\${config_Executable_${comp}[0]} 1112 eval ExeNameOut=\${config_Executable_${comp}[1]} 1113 1114 # Only if we really have an executable for the component and not the coupler ie oasis: 1115 if ( [ "X${ExeNameOut}" != X\"\" ] && [ "X${comp}" != "XCPL" ] ) ; then 1116 1117 eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 1118 eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 1119 1120 if ( ${OK_PARA_OMP} ) ; then 1121 # Check if the number of threads is correct 1122 case ${comp_proc_omp_loc} in 1123 1|2|4) 1124 IGCM_debug_Print 1 "You run ${ExeNameOut} on ${comp_proc_omp_loc} OMP threads on IBM MPI Environment" 1125 IGCM_debug_Print 1 "Beware : it may you use more CPU than needed." 1126 IGCM_debug_Print 1 "Think to the Intel MPI Environment to do what you want to do !" 1127 ;; 1128 8|16) 1129 IGCM_debug_Exit "ERROR with OMP parameters !" 1130 IGCM_debug_Print 2 "Beware : ${comp_proc_omp_loc} is too much for MPMD mode" 1131 IGCM_debug_Print 2 "You will use more CPU than needed : try to use Intel-MPI environment to do such a thing !" 1132 IGCM_debug_Verif_Exit 1133 ;; 1134 *) 1135 IGCM_debug_Exit "ERROR with OMP parameters !" 1136 IGCM_debug_Print 2 "${comp_proc_omp_loc} is not possible as number of OMP threads" 1137 IGCM_debug_Print 2 "Only 1,2,4,8,16 as number of OMP threads are possible " 1138 IGCM_debug_Verif_Exit 1139 ;; 1140 esac 1141 1142 fi 1143 1144 if ( ${OK_PARA_MPI} ) ; then 1145 (( mpi_count = 1 )) 1146 until [ ${mpi_count} -gt ${comp_proc_mpi_loc} ] ; do 1147 if ( ${OK_PARA_OMP} ) ; then 1148 echo "env OMP_NUM_THREADS=$comp_proc_omp_loc ./${ExeNameOut}" >> run_file 1149 else 1150 echo "./${ExeNameOut}" >> run_file 1151 fi 1152 (( mpi_count = mpi_count + 1 )) 1153 done 1154 else 1155 echo "./${ExeNameOut} " >> run_file 1156 fi 1157 fi 1158 done 1159 if ( ${OK_PARA_OMP} ) ; then 1160 export KMP_STACKSIZE=200m 1161 fi 1162 1163 EXECUTION="${HOST_MPIRUN_COMMAND} -pgmmodel mpmd -cmdfile ./run_file" 1164 1165 IGCM_sys_Chmod u+x run_file 1166 if ( $DEBUG_sys ) ; then 1167 echo "run_file contains : " 1168 cat run_file 1169 fi 1170 1171 1172 # MPI Intel Environment 1173 else 1174 IGCM_debug_Print 1 "You use Intel MPI environment" 1175 1176 # Only MPI (MPMD) 1177 if ( ! ${OK_PARA_OMP} ) ; then 1178 init_exec=n 1179 1180 # First loop on the components for the coupler ie oasis (only if oasis3) 1181 # the coupler ie oasis3 must be the first one 1182 for comp in ${config_ListOfComponents[*]} ; do 1183 1184 eval ExeNameIn=\${config_Executable_${comp}[0]} 1185 eval ExeNameOut=\${config_Executable_${comp}[1]} 1186 1187 # for CPL component only 1188 if [ "X${comp}" = "XCPL" ] && [ "X${ExeNameOut}" != X\"\" ] ; then 1189 1190 eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 1191 eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 1192 1193 echo "#!/bin/ksh" > script_${ExeNameOut}.ksh 1194 echo "" >> script_${ExeNameOut}.ksh 1195 echo "./${ExeNameOut}" >> script_${ExeNameOut}.ksh 1196 IGCM_sys_Chmod u+x script_${ExeNameOut}.ksh 1197 EXECUTION="${EXECUTION} -np ${comp_proc_mpi_loc} ./script_${ExeNameOut}.ksh" 1198 init_exec=y 1199 fi 1200 done 1201 # Then second loop on the components 1202 for comp in ${config_ListOfComponents[*]} ; do 1203 1204 eval ExeNameIn=\${config_Executable_${comp}[0]} 1205 eval ExeNameOut=\${config_Executable_${comp}[1]} 1206 1207 # Only if we really have an executable for the component and not the coupler ie oasis: 1208 if ( [ "X${ExeNameOut}" != X\"\" ] && [ "X${comp}" != "XCPL" ] ) ; then 1209 1210 eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 1211 eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 1212 1213 echo "#!/bin/ksh" > script_${ExeNameOut}.ksh 1214 echo "" >> script_${ExeNameOut}.ksh 1215 echo "./${ExeNameOut}" >> script_${ExeNameOut}.ksh 1216 IGCM_sys_Chmod u+x script_${ExeNameOut}.ksh 1217 1218 if [ ${init_exec} = y ] ; then 1219 EXECUTION="${EXECUTION} : -np ${comp_proc_mpi_loc} ./script_${ExeNameOut}.ksh" 1220 else 1221 EXECUTION="${EXECUTION} -np ${comp_proc_mpi_loc} ./script_${ExeNameOut}.ksh" 1222 init_exec=y 1223 fi 1224 fi 1225 done 1226 # MPI-OpenMP (MPMD) 1227 else 1228 1229 # Execution specifications 1230 EXECUTION="${EXECUTION} -configfile run_file" 1231 export KMP_STACKSIZE=200m 1232 if [ -f run_file ] ; then 1233 IGCM_sys_Rm -f run_file 1234 fi 1235 touch run_file 1236 1237 # Initialisation of variables 1238 string_final="" 1239 string_final_hexa="" 1240 current_core=0 1241 executable_nb=1 1242 1243 # Hosts treatment 1244 for nodes in `echo $LOADL_PROCESSOR_LIST` 1245 do 1246 host[$i]=$nodes 1247 i=$((i+1)) 1248 done 1249 1250 # Loop on the components 1251 for comp in ${config_ListOfComponents[*]} ; do 1252 1253 eval ExeNameIn=\${config_Executable_${comp}[0]} 1254 eval ExeNameOut=\${config_Executable_${comp}[1]} 1255 1256 # Not possible if oasis has an executable (i.e old version of oasis3) 1257 if ( [ "X${ExeNameOut}" != X\"\" ] && [ "X${comp}" = "XCPL" ] ) ; then 1258 IGCM_debug_Exit "ERROR MPMD with hybrid MPI-OpenMP is not available with oasis3 version" 1259 IGCM_debug_Print 2 "Only available with oasis3-MCT version coupler" 1260 IGCM_debug_Verif_Exit 1261 fi 1262 1263 # Only if we really have an executable for the component : 1264 if [ "X${ExeNameOut}" != X\"\" ] ; then 1265 1266 eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 1267 eval comp_proc_omp_loc=\${${comp}_PROC_OMP} 1268 1269 # Check if the number of threads is correct 1270 case ${comp_proc_omp_loc} in 1271 1|2|4|8|16) 1272 IGCM_debug_Print 1 "You run ${ExeNameOut} on ${comp_proc_omp_loc} OMP threads" 1273 ;; 1274 *) 1275 IGCM_debug_Exit "ERROR with OMP parameters !" 1276 IGCM_debug_Print 2 "${comp_proc_omp_loc} is not possible as number of OMP threads" 1277 IGCM_debug_Print 2 "Only 1,2,4,8,16 as number of OMP threads are possible " 1278 IGCM_debug_Verif_Exit 1279 ;; 1280 esac 1281 1282 1283 # Build run_file for Ada Intel-MPI environment : method used to assign cores and nodes for the MPI process by using hexadecimal mask 1284 # Example of run_file : 1285 #-host host0 -n 4 -env I_MPI_PIN_DOMAIN=[ff,ff00,ff0000,ff000000] ./a.out 1286 #-host host1 -n 4 -env I_MPI_PIN_DOMAIN=[ff,ff00,ff0000,ff000000] ./a.out 1287 #-host host2 -n 10 -env I_MPI_PIN_DOMAIN=[3,c,30,c0,300,c00,3000,c000,30000,c0000,100000,200000,400000,800000,1000000,2000000,4000000,8000000,10000000,20000000] ./b.out 1288 #-host host2 -n 10 ./c.out 1289 # Example of final command : 1290 # mpirun -configfile run_file 1291 1292 rank=0 1293 # For one specific executable, loop on mpi process 1294 for nb_proc_mpi in `seq 0 $(($comp_proc_mpi_loc-1))`; do 1295 (( index_host = current_core / core_per_node )) 1296 host_value=${host[${index_host}]} 1297 (( slot = current_core % core_per_node )) 1298 # loop on omp threads for each mpi process (set the appropriate bit to 1 and append it to previous one) 1299 for index in `seq $slot $(($slot+$comp_proc_omp_loc-1))`; do 1300 string_final="1"$string_final 1301 done 1302 # convert binary mask to hexadecimal mask 1303 if [ $rank -ne 0 ] ; then 1304 string_final_hexa=$string_final_hexa","$( printf '%x\n' "$((2#$string_final))" ) 1305 else 1306 string_final_hexa=$( printf '%x\n' "$((2#$string_final))" ) 1307 fi 1308 # replace bit 1 by bit 0 in order to append next one (next one wil be 1) 1309 string_final=$( echo $string_final | sed "s/1/0/g" ) 1310 # mpi rank = mpi_rank + 1 1311 (( rank = rank + 1 )) 1312 # current core takes into account the number of omp threads which was previously append 1313 (( current_core = current_core + comp_proc_omp_loc )) 1314 # We write to the configuration file either we switch to the next node or we switch to the next executable 1315 if ( [ $(( current_core / core_per_node )) -ne $index_host ] || [ $nb_proc_mpi -eq $(($comp_proc_mpi_loc-1)) ] ) ; then 1316 # I_MPI_PIN_DOMAIN variable must be given once per node 1317 if [ $executable_nb -eq 1 ] ; then 1318 echo "-host $host_value -n $rank -env I_MPI_PIN_DOMAIN=[$string_final_hexa] ./$ExeNameOut" >> run_file 1319 else 1320 sed -i "/$host_value/s/\]/\,$string_final_hexa\]/g" run_file 1321 echo "-host $host_value -n $rank ./$ExeNameOut" >> run_file 1322 fi 1323 # +1 for the number of executbale on the same node 1324 if [ $nb_proc_mpi -eq $(($comp_proc_mpi_loc-1)) ] ; then 1325 (( executable_nb = executable_nb + 1 )) 1326 fi 1327 # Some initializations if we switch to the next node 1328 if [ $(( current_core / core_per_node )) -ne $index_host ] ; then 1329 string_final="" 1330 string_final_hexa="" 1331 rank=0 1332 executable_nb=1 1333 fi 1334 fi 1335 done 1336 1337 fi 1338 done 1339 IGCM_sys_Chmod u+x run_file 1340 if ( $DEBUG_sys ) ; then 1341 echo "run_file contains : " 1342 cat run_file 1035 1343 fi 1036 1344 fi 1037 done1038 1039 # Then second loop on the components1040 for comp in ${config_ListOfComponents[*]} ; do1041 1042 eval ExeNameIn=\${config_Executable_${comp}[0]}1043 eval ExeNameOut=\${config_Executable_${comp}[1]}1044 1045 # Only if we really have an executable for the component and not the coupler ie oasis:1046 if ( [ "X${ExeNameOut}" != X\"\" ] && [ "X${comp}" != "XCPL" ] ) ; then1047 1048 eval comp_proc_mpi_loc=\${${comp}_PROC_MPI}1049 eval comp_proc_omp_loc=\${${comp}_PROC_OMP}1050 1051 if ( ${OK_PARA_MPI} ) ; then1052 (( mpi_count = 1 ))1053 until [ ${mpi_count} -gt ${comp_proc_mpi_loc} ] ; do1054 if ( ${OK_PARA_OMP} ) ; then1055 # Check if the number of threads is correct1056 case ${comp_proc_omp_loc} in1057 1|2|4)1058 IGCM_debug_Print 1 "You run ${ExeNameOut} on ${comp_proc_omp_loc} OMP threads"1059 ;;1060 8|16)1061 IGCM_debug_Exit "ERROR with OMP parameters !"1062 IGCM_debug_Print 2 "Beware : ${comp_proc_omp_loc} is too much for MPMD mode"1063 IGCM_debug_Print 2 "You will use more CPU than needed"1064 IGCM_debug_Verif_Exit1065 ;;1066 *)1067 IGCM_debug_Exit "ERROR with OMP parameters !"1068 IGCM_debug_Print 2 "${comp_proc_omp_loc} is not possible as number of OMP threads"1069 IGCM_debug_Print 2 "Only 2,4,8,16 as number of OMP threads are possible "1070 IGCM_debug_Verif_Exit1071 ;;1072 esac1073 echo "env OMP_NUM_THREADS=$comp_proc_omp_loc ./${ExeNameOut}" >> run_file1074 else1075 echo "./${ExeNameOut}" >> run_file1076 fi1077 (( mpi_count = mpi_count + 1 ))1078 done1079 else1080 echo "./${ExeNameOut} " >> run_file1081 fi1082 if ( ${OK_PARA_OMP} ) ; then1083 export KMP_STACKSIZE=200m1084 fi1085 fi1086 done1087 1088 EXECUTION="${HOST_MPIRUN_COMMAND} -pgmmodel mpmd -cmdfile ./run_file"1089 1090 IGCM_sys_Chmod u+x run_file1091 if ( $DEBUG_sys ) ; then1092 echo "run_file contains : "1093 cat run_file1094 1345 fi 1095 1346 … … 1111 1362 #echo "export MKL_SERIAL=YES" >> script_${ExeNameOut}.ksh 1112 1363 fi 1113 EXECUTION="${HOST_MPIRUN_COMMAND} ./${ExeNameOut}" 1364 if ( ${OK_PARA_MPI} ) ; then 1365 if ( [ "X${LOADL_STEP_TYPE}" = "XPARALLEL" ] || [ "X${LOADL_STEP_TYPE}" = "XSERIAL" ] ) ; then 1366 EXECUTION="${HOST_MPIRUN_COMMAND} ./${ExeNameOut}" 1367 else 1368 eval comp_proc_mpi_loc=\${${comp}_PROC_MPI} 1369 EXECUTION="${HOST_MPIRUN_COMMAND} -np ${comp_proc_mpi_loc} ./${ExeNameOut}" 1370 fi 1371 else 1372 EXECUTION="/usr/bin/time ./${ExeNameOut}" 1373 fi 1114 1374 fi 1115 1375 … … 1220 1480 # Print only the full (-W) JobID (%id) and JobName (%jn) 1221 1481 ID=$( llq -u $2 -W -f %id %jn | \ 1222 1482 gawk -v JobName=$1 '( $NF ~ JobName ) { print $1 }' ) 1223 1483 1224 1484 eval ${3}=${ID} … … 1258 1518 # With -W option, column width is as large as necessary 1259 1519 set -A JobList $( llq -u $1 -W -f %jn | head -n -2 | tail -n +3 | \ 1260 1520 gawk '( $1 != /TS/ && \ 1261 1521 $1 !~ /PACK/ && \ 1262 1522 $1 !~ /REBUILD/ && \ … … 1286 1546 if [ ${status} -gt 0 ] ; then 1287 1547 echo "IGCM_sys_atlas : error code ${status}" 1288 1289 cat ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$1290 \rm ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$1291 IGCM_debug_PopStack "IGCM_sys_atlas"1292 return 1 1293 else1294 IGCM_debug_PopStack "IGCM_sys_atlas"1295 return 0 1296 fi 1297 1298 IGCM_debug_PopStack "IGCM_sys_atlas" 1299 } 1548 cat ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$ 1549 \rm ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$ 1550 IGCM_debug_PopStack "IGCM_sys_atlas" 1551 return 1 1552 else 1553 IGCM_debug_PopStack "IGCM_sys_atlas" 1554 return 0 1555 fi 1556 1557 IGCM_debug_PopStack "IGCM_sys_atlas" 1558 } 1559
Note: See TracChangeset
for help on using the changeset viewer.