#! /bin/bash -l #MSUB -A pa5772 #MSUB -q rome #MSUB -Q normal #MSUB -n 1024 #MSUB -c 1 #MSUB -T 5000 #MSUB -r GPAWbench # inputfile=../input.py boundsfile=../bounds.sh benchmark_size='large' csv_summary="TGCC_${benchmark_size}_${SLURM_JOB_ID}_${SLURM_NTASKS}.csv" module_20_1=GPAW-UEABS/20.1.0-Python38-FFTW-icc module_20_10=GPAW-UEABS/20.10.0-Python39-FFTW-icc cd ${BRIDGE_MSUB_PWD} module purge # UEABS/2.2 is not a system module but one of our own to basically do some settings # needed for the project (and to adjust the MODULEPATH). It is not needed if # $module_20_1 (generated by the build scripts) is in the MODULEPATH module load UEABS/2.2 echo -e "\nWorking in: $(pwd)\n" echo -e "Modules loaded:\n" module list echo -e "Slurm environment:\n$(env | grep SLURM_)\n" echo -e "\nJob script:\n" cat $0 echo -e "\n\n" # # Check the results # function print_header { echo '"Module", "python/gpaw/ase/numpy/scipy", "tasks", "time", "iterations", "dipole", "fermi", "energy", "check", "Job ID"' >$1 } function print_results { output="$1" summary="$2" module="$3" bounds="$4" . $bounds python_version=$(python -V | awk '{print $2}') gpaw_version=$(srun -n 1 -c 1 python -c "import gpaw ; print( gpaw.__version__ )") ase_version=$(python -c "import ase ; print( ase.__version__ )") numpy_version=$(python -c "import numpy ; print( numpy.__version__ )") scipy_version=$(python -c "import scipy ; print( scipy.__version__ )") # Extract some data to report form the output file. bmtime=$(grep "Total:" $output | sed -e 's/Total: *//' | cut -d " " -f 1) iterations=$(grep "Converged after" $output | cut -d " " -f 3) dipole=$(grep "Dipole" $output | cut -d " " -f 5 | sed -e 's/)//') fermi=$(grep "Fermi level:" $output | cut -d ":" -f 2 | sed -e 's/ //g') energy=$(grep "Extrapolated: " $output | cut -d ":" -f 2 | sed -e 's/ //g') # Check the bounds if (( $(bc -l <<< "(($iterations-0) >= $lower_iterations) && (($iterations-0) <= $upper_iterations)") == 1 )); then iterations_ok="OK"; else iterations_ok="not OK"; fi if (( $(bc -l <<< "(($dipole-0) >= $lower_dipole) && (($dipole-0) <= $upper_dipole)") == 1 )); then dipole_ok="OK"; else dipole_ok="not OK"; fi if (( $(bc -l <<< "(($fermi-0) >= $lower_fermi) && (($fermi-0) <= $upper_fermi)") == 1 )); then fermi_ok="OK"; else fermi_ok="not OK"; fi if (( $(bc -l <<< "(($energy-0) >= $lower_energy) && (($energy-0) <= $upper_energy)") == 1 )); then energy_ok="OK"; else energy_ok="not OK"; fi compare="" compare+="(($iterations-0) >= $lower_iterations) && (($iterations-0) <= $upper_iterations) && " compare+="(($dipole-0) >= $lower_dipole) && (($dipole-0) <= $upper_dipole) && " compare+="(($fermi-0) >= $lower_fermi) && (($fermi-0) <= $upper_fermi) && " compare+="(($energy-0) >= $lower_energy) && (($energy-0) <= $upper_energy)" if (( $(bc -l <<< "$compare") )); then bounds_check="OK"; else bounds_check="not OK" fi # Output to the slurm.out file echo -e "\nResult information:\n" \ " * Time: $bmtime s\n" \ " * Number of iterations: $iterations (lower: $lower_iterations, upper: $upper_iterations, $iterations_ok)\n" \ " * Dipole (3rd component): $dipole (lower: $lower_dipole, upper: $upper_dipole, $dipole_ok)\n" \ " * Fermi level: $fermi (lower: $lower_fermi, upper: $upper_fermi, $fermi_ok)\n" \ " * Extrapolated energy: $energy (lower: $lower_energy, upper: $upper_energy, $energy_ok)\n" \ " * Boundary check: $bounds_check" # Output to the summary spreadsheet echo "\"$module\", \"$python_version/$gpaw_version/$ase_version/$numpy_version/$scipy_version\"," \ "\"$SLURM_NTASKS\", \"$bmtime\", \"$iterations\", \"$dipole\", \"$fermi\", \"$energy\", \"$bounds_check\", \"$SLURM_JOB_ID\"" >> $summary } # # Running with GPAW 20.1.0 # print_header $csv_summary module load $module_20_1 echo -e "\n\nStarting GPAW for $module_20_1\n" ccc_mprun gpaw python $inputfile echo -e "\n\nGPAW terminated\n" print_results output.txt $csv_summary $module_20_1 $boundsfile mv output.txt TGCC_${benchmark_size}_${SLURM_JOB_ID}_${SLURM_NTASKS}_20.1.0.txt # # Running with GPAW 20.10.0 # module load $module_20_10 echo -e "\n\n" echo -e "\n\nStarting GPAW for $module_20_10\n" ccc_mprun gpaw python $inputfile echo -e "\n\nGPAW terminated\n" print_results output.txt $csv_summary $module_20_10 $boundsfile mv output.txt TGCC_${benchmark_size}_${SLURM_JOB_ID}_${SLURM_NTASKS}_20.10.0.txt