Rungen: Difference between revisions

From Wiki
Jump to navigation Jump to search
modified it to remove MN4 and add MN5
Undo revision 8540 by Rseemakurthi (Talk)
 
Line 10: Line 10:
*Queues c (or c0) and q (or q0) are part of [[tekla]].
*Queues c (or c0) and q (or q0) are part of [[tekla]].
*Queues 4 8 and 12 are interpreted as c4m8... etc, on [[tekla2]].
*Queues 4 8 and 12 are interpreted as c4m8... etc, on [[tekla2]].
*Queues 112a are interpreted as ''gp_resa'' on [[MareNostrum]].   
*Queues 16a 16b and 16c are interpreted as ''class_a'', ''class_b'' and ''class_c'' on [[MareNostrum]].   
*This script has a security control to avoid sending a calculation with the wrong number of processors.
*This script has a security control to avoid sending a calculation with the wrong number of processors.
*Please verify the default version of VASP that you want to use on each queue.
*Please verify the default version of VASP that you want to use on each queue.
*By default I use Infiniband in the c12m128ib queue, with 24 or more processors.
*By default I use Infiniband in the c12m28ib queue, with 24 or more processors.
*I put another security control, named [[savecalc]] that is run before VASP, in case you need to do a long optimization.
*I put another security control, named [[savecalc]] that is run before VASP, in case you need to do a long optimization.
*You have two quickly accesible log files: o_* that is the standard output and e_* that contains the errors.
*You have two quickly accesible log files: o_* that is the standard output and e_* that contains the errors.
Line 35: Line 35:
  rungen neb 12 48 5.3.5-IB_VTST_GAMMA
  rungen neb 12 48 5.3.5-IB_VTST_GAMMA


* In MareNostrum, use 112a for gpresa, and debug queues:  
* In MareNostrum, use 48a, 48b, 48c, and 48d for class_a, class_b, class_c, and debug queues:  
  rungen neb 48 96  
  rungen neb 48 96  


Line 51: Line 51:


  #!/bin/bash
  #!/bin/bash
 
##########################################
##########################################
# Rodrigo García-Muelas @ iciq-Tgn      #
# Rodrigo García-Muelas @ iciq-Tgn      #
# Created: Jan 11, 2013                  #
# Created: Jan 11, 2013                  #
# Edit 2 : Nov 17, 2017                  #
# Edit N : Apr 30, 2024                #
##########################################
##########################################
 
# Input ##################################   
# Input ##################################   
# 1 # name
# 1 # name
# 2 # queue id
# 2 # queue id
# 3 # number of processors
# 3 # number of processors
# 4 # version
# 4 # version
##########################################
##########################################
 
# To run in local, write on command line: mpirun -np 2 vasp                                       
# To run in local, write on command line: mpirun -np 2 vasp                                       
 
# tekla1, tekla2 or marenostrum ##########
# tekla1, tekla2 or marenostrum ##########
tk1=0 ; tk2=0 ; mar=0 ; csc=0 ;  
tk1=0 ; tk2=0 ; mar=0 ; csc=0 ;  
case $2 in
case $2 in
  c|c0) queue=c0      ; tk1=1 ; procqueue=1  ;;
c|c0) queue=c0      ; tk1=1 ; procqueue=1  ;;
  q|q0) queue=q0      ; tk1=1 ; procqueue=4  ;;
q|q0) queue=q0      ; tk1=1 ; procqueue=4  ;;
  4)    queue=c4m8    ; tk2=1 ; procqueue=4  ;;
4)    queue=c4m8    ; tk2=1 ; procqueue=4  ;;
  8)    queue=c8m24    ; tk2=1 ; procqueue=8  ;;
8)    queue=c8m24    ; tk2=1 ; procqueue=8  ;;
  12)  queue=c12m48ib ; tk2=1 ; procqueue=12 ;;
12)  queue=c12m48ib ; tk2=1 ; procqueue=12 ;;
  24)  queue=c24m128ib; tk2=1 ; procqueue=24 ;;
24)  queue=c24m128ib; tk2=1 ; procqueue=24 ;;
  16a) queue=class_a  ; mar=3 ; procqueue=16 ; maxhours=71 ;;  
  28)  queue=c28m128ib; tk2=1 ; procqueue=28 ;;
  16b) queue=class_b ; mar=3 ; procqueue=16 ; maxhours=47 ;;  
  112a) queue=gp_resa ; mar=5 ; procqueue=112 ; maxhours=24 ;; # maxhours: 71   
  16c) queue=class_c  ; mar=3 ; procqueue=16 ; maxhours=23 ;;  
  *)    echo "Error in queue name!!! " ; exit ;;
  16d)  queue=debug    ; mar=3 ; procqueue=16 ; maxhours=00 ;;
esac
  48a)  queue=class_a  ; mar=4 ; procqueue=48 ; maxhours=71 ;;
 
  48b)  queue=class_b  ; mar=4 ; procqueue=48 ; maxhours=47 ;;  
# MOD should be 0 ########################
  48c)  queue=class_c  ; mar=4 ; procqueue=48 ; maxhours=23 ;;
let AAA=`expr $3 % $procqueue`
  48d)  queue=debug    ; mar=4 ; procqueue=48 ; maxhours=01 ;; 
#echo $AAA
   *)    echo "Error in queue name!!! " ; exit ;;  
if [ 0 -ne $AAA ] ; then echo "Error in number of processors" ; exit ; fi
  esac
##########################################
   
 
  # MOD should be 0 ########################
# version
let AAA=`expr $3 % $procqueue`
 
  #echo $AAA
if [ -z $4 ] ; then
if [ 0 -ne $AAA ] ; then echo "Error in number of processors" ; exit ; fi
  if  [ $mar = 5 ] ; then vaspversion="5.4.4"
##########################################
   elif [  $2 =  4 ] ; then vaspversion="5.3.5"
  elif [ $2 = 8 ] ; then vaspversion="5.3.5"
# version
  elif [ $2 = 12 ] ; then if [ $3 -gt 12 ] ; then vaspversion="5.3.5-IB" ; else vaspversion="5.4.4" ; fi
  elif [ $2 = 24 ] ; then if [ $3 -gt 24 ] ; then vaspversion="5.3.5-IB" ; else vaspversion="5.4.4" ; fi
if [ -z $4 ] ; then
elif [  $2 = 28 ] ; then if [ $3 -gt 28 ] ; then vaspversion="5.3.5-IB" ; else vaspversion="5.4.4" ; fi
  if   [ $mar = 1 ] ; then vaspversion="5.3.3"
   elif [ $tk1 = 1 ] ; then vaspversion="4.6"     
   elif [  $2 =  4 ] ; then vaspversion="5.4.4"
  fi
  elif [  $2 =  8 ] ; then vaspversion="5.4.4"
else vaspversion=$4 ; fi
  elif [  $2 = 12 ] ; then if [ $3 -gt 12 ] ; then vaspversion="5.3.5-IB" ; else vaspversion="5.4.4" ; fi
 
  elif [  $2 = 24 ] ; then if [ $3 -gt 24 ] ; then vaspversion="5.3.5-IB" ; else vaspversion="5.4.4" ; fi
# queues of tekla1 #######################
  elif [ $tk1 = 1 ] ; then vaspversion="4.6" 
if [ $tk1 = 1 ] ; then mpi=_mpi ;  
  elif [ $mar = 4 ] ; then vaspversion="vasp_std" 
E=`pwd`; ofile=`echo $E/o_\\$JOB_NAME.\\$JOB_ID` ; efile=`echo $E/e_\\$JOB_NAME.\\$JOB_ID` ;  
  fi
cat >run.sh<<!
else vaspversion=$4 ; fi
#!/bin/bash
 
# echo $1
#$ -N $1
# echo $2
 
# echo $3
#   pe request
# echo $queue
#$ -pe $queue $3
# echo "hola"
#$ -M rseemakurthi@iciq.es
# echo $AAA
#$ -o $ofile
# echo $tk1
#$ -e $efile
# echo $tk2
 
# echo $mar
cd $E ; /home/rseemakurthi/bin/savecalc  
# echo $version
/usr/bin/mpirun -np $3 -machinefile \$TMPDIR/machines /usr/local/bin/vasp ; rm -f CHG
   
 
##########################################
!
fi
##########################################
# queues of tekla1 #######################
 
if [ $tk1 = 1 ] ; then mpi=_mpi ;  
 
E=`pwd`; ofile=`echo $E/o_\\$JOB_NAME.\\$JOB_ID` ; efile=`echo $E/e_\\$JOB_NAME.\\$JOB_ID` ;
# queues of tekla2 #######################
cat >run.sh<<!
if [ $tk2 = 1 ] ; then mpi=_mpi ; cat >run.sh<<!
#!/bin/bash
#!/bin/bash
### SGE Parameters #######################
#$ -N $1
#$ -S /bin/bash
#$ -N $1
#   pe request
#$ -cwd
#$ -pe $queue $3
#$ -masterq $queue.q
#$ -M rgarcia@iciq.es
#$ -pe $queue$mpi $3
#$ -o $ofile
#$ -m ae
#$ -e $efile
#$ -M rseemakurthi@iciq.es
#$ -o o_\$JOB_NAME.\$JOB_ID
cd $E ; /home/rgarcia/bin/savecalc 
#$ -e e_\$JOB_NAME.\$JOB_ID
/usr/bin/mpirun -np $3 -machinefile \$TMPDIR/machines /usr/local/bin/vasp ; rm CHG
### Load Environment Variables ###########
. /etc/profile.d/modules.sh
!
module load vasp/$vaspversion
fi
### Run Job ##############################
##########################################
export OMP_NUM_THREADS=1
echo \$PWD >> o_\$JOB_NAME.\$JOB_ID
echo \$TMP >> o_\$JOB_NAME.\$JOB_ID
# queues of tekla2 #######################
~/bin/savecalc ; mpirun -np \$NSLOTS vasp_std ; # rm -f CHG
if [ $tk2 = 1 ] ; then mpi=_mpi ; cat >run.sh<<!
!
#!/bin/bash
fi
### SGE Parameters #######################
##########################################
#$ -S /bin/bash
 
#$ -N $1
# queues of Marenostrum 5 ################
#$ -cwd
if [ $mar = 5 ] ; then cat >run.sh<<!
#$ -masterq $queue.q
#!/bin/bash   
#$ -pe $queue$mpi $3
#SBATCH --account=iciq72
#$ -m ae
#SBATCH --qos=$queue
#$ -M rgarcia@iciq.es
#SBATCH --time=$maxhours:00:00 
#$ -o o_\$JOB_NAME.\$JOB_ID
#SBATCH --job-name=$1 
#$ -e e_\$JOB_NAME.\$JOB_ID
#SBATCH --cpus-per-task=1 
### Load Environment Variables ###########
#SBATCH --tasks-per-node=112 
. /etc/profile.d/modules.sh
#SBATCH --ntasks=$3 
module load vasp/$vaspversion
#SBATCH --output=o_$1.%j
### Run Job ##############################
#SBATCH --error=e_$1.%j
export OMP_NUM_THREADS=1
 
echo \$PWD >> o_\$JOB_NAME.\$JOB_ID
module load hdf5
echo \$TMP >> o_\$JOB_NAME.\$JOB_ID
module load vasp/$vaspversion
~/bin/savecalc ; mpirun -np \$NSLOTS vasp ; rm CHG
#module load mkl
!
~/bin/savecalc ;srun /apps/GPP/VASP/$vaspversion/INTEL/IMPI/bin/vasp_std  
fi
 
##########################################
!
fi
##########################################
# queues of Marenostrum 3 ################
if [ $mar = 3 ] ; then cat >run.sh<<!
#!/bin/bash
#BSUB -J $1
#BSUB -q $queue
#BSUB -n $3
#BSUB -W $maxhours:59
#BSUB -o o_$1.%J
#BSUB -e e_$1.%J
#BSUB -u rgarcia@iciq.es
#BSUB -R"span[ptile=16]"
### Load environment variables ###########
module load VASP/$vaspversion
### Run job ##############################
~/bin/savecalc ; mpirun vasp.complex ; rm CHG
!
fi
##########################################
# queues of Marenostrum 4 ################
if [ $mar = 4 ] ; then cat >run.sh<<!
#!/bin/bash   
#SBATCH --qos=$queue 
#SBATCH --time=$maxhours:59:00 
#SBATCH --job-name=$1 
#SBATCH --cpus-per-task=1 
#SBATCH --tasks-per-node=48 
#SBATCH --ntasks=$3 
#SBATCH --output=o_$1.%j
#SBATCH --error=e_$1.%j
   
module load vasp/5.4.4
srun  /apps/VASP/5.4.4/INTEL/IMPI/bin/$vaspversion 
!
fi
  ##########################################

Latest revision as of 15:08, 2 May 2024

go back to Main Page, Group Pages, Núria López and Group, Scripts_for_VASP

Instructions: 1) Put this script as executable on your ~/bin/ folder (recomended name: rungen). 2) Put your email instead of youremail@iciq.es. 3) Do the same with savecalc.

To generate a run.sh file, write on a terminal:

$ rungen <name_of_job> <queue> <number_of_processors> <(optional)vasp_version> 

Notes:

  • <<name_of_job>> should start with a letter, not a number or another special character.
  • Queues c (or c0) and q (or q0) are part of tekla.
  • Queues 4 8 and 12 are interpreted as c4m8... etc, on tekla2.
  • Queues 16a 16b and 16c are interpreted as class_a, class_b and class_c on MareNostrum.
  • This script has a security control to avoid sending a calculation with the wrong number of processors.
  • Please verify the default version of VASP that you want to use on each queue.
  • By default I use Infiniband in the c12m28ib queue, with 24 or more processors.
  • I put another security control, named savecalc that is run before VASP, in case you need to do a long optimization.
  • You have two quickly accesible log files: o_* that is the standard output and e_* that contains the errors.


go back to Main Page, Group Pages, Núria López and Group, Scripts_for_VASP

This script allows you to generate run.sh files for tekla2 and MareNostrum4. It also worked for MareNostrum3. If you make a mistake in the number of processors the script will tell to you, so you'd better use this script (or someone similar) every time you prepare a new calculation.

Instructions[edit]

  • Create ~/bin/rungen and put the content below
  • Make it executable
chmod +x ~/bin/rungen
  • To use it in tekla, put the name, the queue (4, 8, 12, or 24), and the number of processors. If you make a mistake in the number of processors the script will tell to you.
rungen nanoparticle 12 60 
  • You can change the VASP version using an additional fourth input variable:
rungen neb 12 48 5.3.5-IB_VTST_GAMMA
  • In MareNostrum, use 48a, 48b, 48c, and 48d for class_a, class_b, class_c, and debug queues:
rungen neb 48 96 
  • If you want to change the VASP version, go to this folder to see what versions do you have available. The default is vasp_std:
/apps/VASP/5.4.4/INTEL/IMPI/bin/ 
rungen neb 48 96 vasp_gam_sol
  • If you want to use an exotic flavour that is not yet compiled for the version you are using, you can request MareNostrum people to compile it. Ask your boss before doing the request. Otherwise, you can use an older version of VASP. Feel free to explore into these MareNostrum folders:
/apps/VASP/
  • Remember to adapt your parallelization to the machine and processors you use each time.[1]


rungen[edit]

#!/bin/bash
##########################################
# Rodrigo García-Muelas @ iciq-Tgn       #
# Created: Jan 11, 2013                  #
# Edit 2 : Nov 17, 2017                  #
##########################################

# Input ##################################   
# 1 # name
# 2 # queue id
# 3 # number of processors
# 4 # version
##########################################

# To run in local, write on command line: mpirun -np 2 vasp                                       

# tekla1, tekla2 or marenostrum ##########
tk1=0 ; tk2=0 ; mar=0 ; csc=0 ; 
case $2 in
 c|c0) queue=c0       ; tk1=1 ; procqueue=1  ;;
 q|q0) queue=q0       ; tk1=1 ; procqueue=4  ;;
 4)    queue=c4m8     ; tk2=1 ; procqueue=4  ;;
 8)    queue=c8m24    ; tk2=1 ; procqueue=8  ;;
 12)   queue=c12m48ib ; tk2=1 ; procqueue=12 ;;
 24)   queue=c24m128ib; tk2=1 ; procqueue=24 ;;
 16a)  queue=class_a  ; mar=3 ; procqueue=16 ; maxhours=71 ;; 
 16b)  queue=class_b  ; mar=3 ; procqueue=16 ; maxhours=47 ;; 
 16c)  queue=class_c  ; mar=3 ; procqueue=16 ; maxhours=23 ;; 
 16d)  queue=debug    ; mar=3 ; procqueue=16 ; maxhours=00 ;; 
 48a)  queue=class_a  ; mar=4 ; procqueue=48 ; maxhours=71 ;; 
 48b)  queue=class_b  ; mar=4 ; procqueue=48 ; maxhours=47 ;; 
 48c)  queue=class_c  ; mar=4 ; procqueue=48 ; maxhours=23 ;; 
 48d)  queue=debug    ; mar=4 ; procqueue=48 ; maxhours=01 ;;  
 *)    echo "Error in queue name!!! " ; exit ;; 
esac

# MOD should be 0 ########################
let AAA=`expr $3 % $procqueue`
#echo $AAA
if [ 0 -ne $AAA ] ; then echo "Error in number of processors" ;  exit ; fi
##########################################

# version

if [ -z $4 ] ; then
  if   [ $mar = 1 ] ; then vaspversion="5.3.3"
  elif [  $2 =  4 ] ; then vaspversion="5.4.4"
  elif [  $2 =  8 ] ; then vaspversion="5.4.4"
  elif [  $2 = 12 ] ; then if [ $3 -gt 12 ] ; then vaspversion="5.3.5-IB" ; else vaspversion="5.4.4" ; fi
  elif [  $2 = 24 ] ; then if [ $3 -gt 24 ] ; then vaspversion="5.3.5-IB" ; else vaspversion="5.4.4" ; fi
  elif [ $tk1 = 1 ] ; then vaspversion="4.6"  
  elif [ $mar = 4 ] ; then vaspversion="vasp_std"  
  fi 
else vaspversion=$4 ; fi

# echo $1
# echo $2
# echo $3
# echo $queue
# echo "hola"
# echo $AAA
# echo $tk1
# echo $tk2
# echo $mar
# echo $version

##########################################


# queues of tekla1 #######################
if [ $tk1 = 1 ] ; then mpi=_mpi ; 
E=`pwd`; ofile=`echo $E/o_\\$JOB_NAME.\\$JOB_ID` ; efile=`echo $E/e_\\$JOB_NAME.\\$JOB_ID` ; 
cat >run.sh<<!
#!/bin/bash

#$ -N $1

#   pe request
#$ -pe $queue $3
#$ -M rgarcia@iciq.es
#$ -o $ofile
#$ -e $efile

cd $E ; /home/rgarcia/bin/savecalc  
/usr/bin/mpirun -np $3 -machinefile \$TMPDIR/machines /usr/local/bin/vasp ; rm CHG

!
fi
##########################################


# queues of tekla2 #######################
if [ $tk2 = 1 ] ; then mpi=_mpi ; cat >run.sh<<!
#!/bin/bash
### SGE Parameters #######################
#$ -S /bin/bash
#$ -N $1
#$ -cwd
#$ -masterq $queue.q
#$ -pe $queue$mpi $3
#$ -m ae
#$ -M rgarcia@iciq.es
#$ -o o_\$JOB_NAME.\$JOB_ID
#$ -e e_\$JOB_NAME.\$JOB_ID
### Load Environment Variables ###########
. /etc/profile.d/modules.sh
module load vasp/$vaspversion
### Run Job ##############################
export OMP_NUM_THREADS=1
echo \$PWD >> o_\$JOB_NAME.\$JOB_ID
echo \$TMP >> o_\$JOB_NAME.\$JOB_ID
~/bin/savecalc ; mpirun -np \$NSLOTS vasp ; rm CHG
!
fi
##########################################


# queues of Marenostrum 3 ################
if [ $mar = 3 ] ; then cat >run.sh<<!
#!/bin/bash
#BSUB -J $1
#BSUB -q $queue 
#BSUB -n $3 
#BSUB -W $maxhours:59
#BSUB -o o_$1.%J
#BSUB -e e_$1.%J
#BSUB -u rgarcia@iciq.es
#BSUB -R"span[ptile=16]"
### Load environment variables ###########
module load VASP/$vaspversion
### Run job ##############################
~/bin/savecalc ; mpirun vasp.complex ; rm CHG
!
fi
##########################################

# queues of Marenostrum 4 ################
if [ $mar = 4 ] ; then cat >run.sh<<!
#!/bin/bash    
#SBATCH --qos=$queue   
#SBATCH --time=$maxhours:59:00   
#SBATCH --job-name=$1  
#SBATCH --cpus-per-task=1  
#SBATCH --tasks-per-node=48  
#SBATCH --ntasks=$3   
#SBATCH --output=o_$1.%j 
#SBATCH --error=e_$1.%j 
   
module load vasp/5.4.4 
srun  /apps/VASP/5.4.4/INTEL/IMPI/bin/$vaspversion  

!
fi
##########################################