| Attachment 1: |
multithread_shelfmc.sh
#!/bin/bash
#Jude Rajasekera 3/20/2017
shelfmcDir=/users/PCON0003/cond0091/ShelfMC #put your shelfmc directory address here
runName='TestRun' #name of run
NNU=500000 #total NNU per run
seed=42 #initial seed for every run,each processor will recieve a different seed (42,43,44,45...)
NNU="$(($NNU / 20))" #calculating NNU per processor, change 20 to however many processor your cluster has per node
ppn=20 #processors per node
########################### make changes for input.txt file here #####################################################
input1="#inputs for ARIANNA simulation, do not change order unless you change ReadInput()"
input2="$NNU #NNU, setting to 1 for unique neutrino"
input3="$seed #seed Seed for Rand3"
input4="18.0 #EXPONENT, !should be exclusive with SPECTRUM"
input5="1000 #ATGap, m, distance between stations"
input6="4 #ST_TYPE, !restrict to 4 now!"
input7="4 #N_Ant_perST, not to be confused with ST_TYPE above"
input8="2 #N_Ant_Trigger, this is the minimum number of AT to trigger"
input9="30 #Z for ST_TYPE=2"
input10="575 #ICETHICK, thickness of ice including firn, 575m at Moore's Bay"
input11="1 #FIRN, KD: ensure DEPTH_DEPENDENT is off if FIRN is 0"
input12="1.30 #NFIRN 1.30"
input13="$122 #FIRNDEPTH in meters"
input14="1 #NROWS 12 initially, set to 3 for HEXAGONAL"
input15="1 #NCOLS 12 initially, set to 5 for HEXAGONAL"
input16="0 #SCATTER"
input17="1 #SCATTER_WIDTH,how many times wider after scattering"
input18="0 #SPECTRUM, use spectrum, ! was 1 initially!"
input19="0 #DIPOLE, add a dipole to the station, useful for st_type=0 and 2"
input20="0 #CONST_ATTENLENGTH, use constant attenuation length if ==1"
input21="1000 #ATTEN_UP, this is the conjuction of the plot attenlength_up and attlength_down when setting REFLECT_RATE=0.5(3dB)"
input22="250 #ATTEN_DOWN, this is the average attenlength_down before Minna Bluff measurement(not used anymore except for CONST_ATTENLENGTH)"
input23="4 #NSIGMA, threshold of trigger"
input24="1 #ATTEN_FACTOR, change of the attenuation length"
input25="1 #REFLECT_RATE,power reflection rate at the ice bottom"
input26="0 #GZK, 1 means using GZK flux, 0 means E-2 flux"
input27="0 #FANFLUX, use fenfang's flux which only covers from 10^17 eV to 10^20 eV"
input28="0 #WIDESPECTRUM, use 10^16 eV to 10^21.5 eV as the energy spectrum, otherwise use 17-20"
input29="1 #SHADOWING"
input30="1 #DEPTH_DEPENDENT_N;0 means uniform firn, 1 means n_firn is a function of depth"
input31="0 #HEXAGONAL"
input32="1 #SIGNAL_FLUCT 1=add noise fluctuation to signal or 0=do not"
input33="4.0 #GAINV gain dependency"
input34="1 #TAUREGENERATION if 1=tau regeneration effect, if 0=original"
input35="3.0 #ST4_R radius in meters between center of station and antenna"
input36="350 #TNOISE noise temperature in Kelvin"
input37="80 #FREQ_LOW low frequency of LPDA Response MHz #was 100"
input38="1000 #FREQ_HIGH high frequency of LPDA Response MHz"
input39="/users/PCON0003/cond0091/ShelfMC/temp/LP_gain_manual.txt #GAINFILENAME"
###########################################################################################
cd $shelfmcDir #cd to dir containing shelfmc
mkdir $runName #make a folder for run
cd $runName #cd into run folder
initSeed=$seed
for (( i=1; i<=$ppn;i++)) #make 20 setup files for 20 processors
do
mkdir Setup$i #make setup folder i
cd Setup$i #go into setup folder i
seed="$(($initSeed+$i-1))" #calculate seed for this iteration
input3="$seed #seed Seed for Rand3" #save new input line
for j in {1..40} #print all input.txt lines
do
lineName=input$j
echo "${!lineName}" >> input.txt #print line to input.txt file
done
cd ..
done
pwd=`pwd`
#create job file
echo '#!/bin/bash' >> run_shelfmc_multithread.sh
echo '#PBS -l nodes=1:ppn='$ppn >> run_shelfmc_multithread.sh #change depending on processors per node
echo '#PBS -l walltime=00:05:00' >> run_shelfmc_multithread.sh #change walltime depending on run size, will be 20x shorter than single processor run time
echo '#PBS -N shelfmc_'$runName'_job' >> run_shelfmc_multithread.sh
echo '#PBS -j oe' >> run_shelfmc_multithread.sh
echo '#PBS -A PCON0003' >> run_shelfmc_multithread.sh #change to specify group
echo 'cd ' $shelfmcDir >> run_shelfmc_multithread.sh
echo 'runName='$runName >> run_shelfmc_multithread.sh
for (( k=1; k<=$ppn;k++))
do
echo './shelfmc_stripped.exe $runName/Setup'$k' _'$k'$runName &' >> run_shelfmc_multithread.sh #execute commands for 20 setup files
done
echo 'wait' >> run_shelfmc_multithread.sh #wait until all runs are finished
echo 'cd $runName' >> run_shelfmc_multithread.sh #go into run folder
echo 'for (( i=1; i<='$ppn';i++)) #20 iterations' >> run_shelfmc_multithread.sh
echo 'do' >> run_shelfmc_multithread.sh
echo ' cd Setup$i #cd into setup dir' >> run_shelfmc_multithread.sh
echo ' mv *.root ..' >> run_shelfmc_multithread.sh #move root files to runDir
echo ' cd ..' >> run_shelfmc_multithread.sh
echo 'done' >> run_shelfmc_multithread.sh
echo 'hadd Result_'$runName'.root *.root' >> run_shelfmc_multithread.sh #add all root files
echo 'rm *ShelfMCTrees*' >> run_shelfmc_multithread.sh #delete all partial root files
chmod u+x run_shelfmc_multithread.sh
echo "Run files created"
echo "cd into run folder and do $ qsub run_shelfmc_multithread.sh"
|
| Attachment 2: |
multithread_shelfmc_walkthrough.txt
This document will explain how to dowload, configure, and run multithread_shelfmc.sh in order to do large runs on computing clusters.
####DOWNLOAD####
1.Download multithread_shelfmc.sh
2.Move multithread_shelfmc.sh into ShelfMC directory
3.Do $chmod u+x multithread_shelfmc.sh
####CONFIGURE###
1.Open multithread_shelfmc.sh
2.On line 3, modify shelfmcDir to your ShelfMC dir
3.On line 6, add your run name
4.On line 7, add the total NNU
5.On line 8, add an intial seed
6.On line 10, specify number of processors per node for your cluster
7.On lines 12-49, edit the input.txt parameters
8.On line 50, add the location of your LP_gain_manual.txt
9.On line 80, specify a wall time for each run, remember this will be about 20x shorter than ShelfMC on a single processor
10.On line 83, Specify the group name for your cluster if needed
11.Save file
####RUN####
1.Do $./multithread_shelfmc.sh
2.There should now be a new directory in the ShelfMC dir with 20 setup files and a run_shelfmc_multithread.sh script
3.Do $qsub run_shelfmc_multithread.sh
###RESULT####
1.After the run has completed, there will be a result .root file in the run directory
|