• No results found

Advanced PBS Workflow Example Bill Brouwer 05/01/12 Research Computing and Cyberinfrastructure Unit, PSU

N/A
N/A
Protected

Academic year: 2021

Share "Advanced PBS Workflow Example Bill Brouwer 05/01/12 Research Computing and Cyberinfrastructure Unit, PSU"

Copied!
5
0
0

Loading.... (view fulltext now)

Full text

(1)

Advanced PBS Workflow Example Bill Brouwer

05/01/12

Research Computing and Cyberinfrastructure Unit, PSU [email protected]

0.0 An elementary workflow

All jobs consuming significant cycles need to be submitted to RCC clusters for execution via a

submission script like the following, a simple example. Many applications are fairly naïve with respect to which devices are made available by the scheduler eg., GPU's; you may find the need to experiment with the PBS topology to get your application's expectations to match the resources allocated by the scheduler. At a bare minimum one must have the first line of the submission script, as well as required walltime; default memory allocation at the time of writing is 1G.

#desired nodes, procs per node and gpus #PBS -l nodes=4:ppn=1:gpus=1

#maximum memory per process (can also using mem for total, all procs) #PBS -l pmem=4Gb

#desired walltime

#PBS -l walltime=00:10:00

#export current environment variables #PBS -V

#force topology ie., only execute with this configuration #PBS -W x=nmatchpolicy:exactnode

#email me when beginning (b) ending (e) or aborting (a) #PBS -m bea

#PBS -M [email protected]

#write output to file foo.out (if omitted stderr/stdout goes to file #with jobid and submission script name in title

#PBS -o foo.out

#put stderr and stdout in same file #PBS -j oe

#use a queue we have access too (albeit temp in this case) #PBS -q lionga-seminar

#move to the working directory

cd /gpfs/home/wjb19/work/ti_ml_project

#load all modules required by the application

#this will setup PATH and LD_LIBRARY_PATH correctly module load openmpi/intel/1.4.3

module load mkl

module load fftw3/3.3/intel

(2)

mpirun /usr/global/qe/4.3.2/bin/pw.x < anatase.in > anatase_test.out mpirun ../qe_old/espresso-4.2/bin/gipaw.x < nmr_anatase_test.in > nmr_anatase_test.out

1.0 A more complicated PBS workflow

One has the liberty to use regular bash scripting constructs in a PBS submission script for performing more complicated processing, or you could simply call a bash script from your PBS script. This is particularly helpful in pipelined workflows or those requiring the same applications each step but different data or conditions. The following example is a templated input file for Quantum Espresso, where each iteration, input parameters will be changed within the submission script, to follow. &control calculation='scf' restart_mode='from_scratch', prefix='anatase_tmp', pseudo_dir = '/gpfs/home/wjb19/work/ti_ml_project', outdir='/gpfs/home/wjb19/tmp/' / &system

ibrav= @IBRAV@, a=@A@,c=@C@, nat= 2, ntyp= 2, ecutwfc =130.0, occupations='smearing', smearing='methfessel-paxton', degauss=0.05 / &electrons conv_thr = 1.0d-8 mixing_beta = 0.7 / ATOMIC_SPECIES Ti 46.952 Ti.tpbe-sp-rrkj.UPF O 15.999 O_pbe-20071002.UPF ATOMIC_POSITIONS Ti 0 0 0

O @Ox@ @Oy@ @Oz@ K_POINTS {automatic} 4 4 4 0 0 0

In this template file anatase_batch.in, we will be changing the symmetry (IBRAV) and several unit cell parameters each iteration, generating a new input file anatase_tmp.in for the Quantum Espresso executable pw.x. After the application completes, we run a second application gipaw.x to determine NMR (experimental) parameters we can expect to measure for the system, on the basis of the input structure and DFT performed just prior by pw.x. Rather than keep the entire gipaw.x output, we filter it using awk, creating an input file for the simulation of the measurable NMR spectra using a custom application sim_mas.x. We finally save some data for another process to be carried out later, and iterate our cell parameters for the next step.

(3)

#!/bin/bash #PBS -l nodes=4:ppn=1:gpus=1 #PBS -l mem=10Gb #PBS -l walltime=12:00:00 #PBS -V cd /gpfs/home/wjb19/work/ti_ml_project module load cuda/4.0

module load openmpi/intel/1.4.3 module load mkl

module load fftw3/3.3/intel #a complete workflow

#note the use of bash commands to handle intermediate #steps eg., parsing stream output, bc calculator etc #first unit #anatase; ibrav==7 a=3.784 c=9.515 Ox=0.0 Oy=0.0 Oz=0.208 ibrav=7

#last unit cell, or thereabouts #rutile; ibrav==6 #a=4.603 (step += 0.017) #c=2.966 (step -= 0.134) #Ox=0.3045 (step += 0.006) #Oy=0.3045 (step += 0.006) #Oz=0.0 (step -= 0.004)

#nmr magic angle spinning spectral simulation parameters

inpa="25.0 2.5 3 1.5833 50750000 20 1 128 1 40 78.125 00 -1700 1 1" inpb="0.0 00 100 3000000 200000 0.0 10 10 9000000.0"

#create some files with comment fields at the top

echo "# Cq eta a c Ox Oy Oz" > anatase_rutile_runs.txt echo "# training data for Ox" > Ox_svm.txt

echo "# training data for Oy" > Oy_svm.txt echo "# training data for Oz" > Oz_svm.txt echo "# training data for a" > a_svm.txt echo "# training data for c" > c_svm.txt echo " "

echo "Starting job on `hostname` at `date`" echo " "

(4)

#preform a string of processes in batch: # write a qe input file

# perform scf

# calculate nmr parameters # simulate nmr lineshape

# write features/values to text files

# iterate unit cell parameters for next iteration for (( i=1; i<=25; i++ ))

do

#set the symmetry according to unit cell type if [ "$(echo "$a > $c" | bc)" -eq "1" ]

then

ibrav=6 fi

#update the input file

sed 's/@A@/'$a'/g' anatase_batch.in | sed 's/@C@/'$c'/g' |

sed 's/@IBRAV@/'$ibrav'/g'| sed 's/@Ox@/'$Ox'/g' |

sed 's/@Oy@/'$Oy'/g' |

sed 's/@Oz@/'$Oz'/g' > anatase_tmp.in #scf calculation

mpirun /usr/global/qe/4.3.2/bin/pw.x < anatase_tmp.in > anatase_tmp.out

#nmr calculation

efg_vals=$(mpirun ../qe_old/espresso-4.2/bin/gipaw.x < nmr_anatase_tmp.in |awk '/Ti/&&/Cq/{print $8,$11}')

#update parameter file

echo $efg_vals $ibrav $a $c $Ox $Oy $Oz >> anatase_rutile_runs.txt

#simulate magic angle spinning nmr lineshape for this structure tdata=$(echo "$inpa $efg_vals $inpb" | ./sim_mas.x)

#save svm training data echo $a $tdata >> a_svm.txt echo $c $tdata >> c_svm.txt echo $Ox $tdata >> Ox_svm.txt echo $Oy $tdata >> Oy_svm.txt echo $Oz $tdata >> Oz_svm.txt

(5)

c=$(echo "$c - 0.134*2" | bc) Ox=$(echo "$Ox + 0.006*2" | bc) Oy=$(echo "$Oy + 0.006*2" | bc) Oz=$(echo "$Oz - 0.004*2" | bc) done echo " "

echo "Completing job on `hostname` at `date`" echo " "

References

Related documents

When a compatible medication is added to the Glucose Intravenous Infusion, the solution must be administered immediately.. Those additives known to be incompatible should not

English: you (with respect) Tamil: neenga Telugu: meeru English: house Tamil: veedu Telugu: illu English: day Tamil: naalu Telugu: roju English: night Tamil: raathiri Telugu:

happens when your time in service ends?  If you do not choose to stay in and reenlist, you attend some classes dubbed Seps and TAPS which stands for Separations and

Therefore diamond seems to be a promising lens material for refractive optics used in third or fourth generation synchrotron sources.. Several studies have been conducted in order

Partner Violence in Cameroon. You have been invited to take part in a research study that is aimed at understanding the experience with social support systems-like courts,

It is important to choose the appropriate method which has been already developed and adapted in other EU countries, thus collecting standardised information on

Plotter is input of three device connected with a card has an optical and output device allows you temporary storage devices are used to be given data into electronic or.. Devices

This study aims at investigating the nature of the causal relationship between immigration and two macroeconomic indicators, GDP per capita and unemployment using Granger