Workflow 2816, Stage 1
Priority | 50 |
Processors | 4 |
Wall seconds | 80000 |
Image | /cvmfs/singularity.opensciencegrid.org/fermilab/fnal-wn-sl7:latest |
RSS bytes | 6815744000 (6500 MiB) |
Max distance for inputs | 100.0 |
Enabled input RSEs |
CERN_PDUNE_EOS, DUNE_CA_SFU, DUNE_CERN_EOS, DUNE_ES_PIC, DUNE_FR_CCIN2P3_DISK, DUNE_IN_TIFR, DUNE_IT_INFN_CNAF, DUNE_UK_GLASGOW, DUNE_UK_LANCASTER_CEPH, DUNE_UK_MANCHESTER_CEPH, DUNE_US_BNL_SDCC, DUNE_US_FNAL_DISK_STAGE, FNAL_DCACHE, FNAL_DCACHE_STAGING, FNAL_DCACHE_TEST, MONTECARLO, NIKHEF, PRAGUE, QMUL, RAL-PP, RAL_ECHO, SURFSARA, T3_US_NERSC |
Enabled output RSEs |
CERN_PDUNE_EOS, DUNE_CA_SFU, DUNE_CERN_EOS, DUNE_ES_PIC, DUNE_FR_CCIN2P3_DISK, DUNE_IN_TIFR, DUNE_IT_INFN_CNAF, DUNE_UK_GLASGOW, DUNE_UK_LANCASTER_CEPH, DUNE_UK_MANCHESTER_CEPH, DUNE_US_BNL_SDCC, DUNE_US_FNAL_DISK_STAGE, FNAL_DCACHE, FNAL_DCACHE_STAGING, FNAL_DCACHE_TEST, NIKHEF, PRAGUE, QMUL, RAL-PP, RAL_ECHO, SURFSARA, T3_US_NERSC |
Enabled sites |
BR_CBPF, CA_SFU, CERN, CH_UNIBE-LHEP, CZ_FZU, ES_CIEMAT, ES_PIC, FR_CCIN2P3, IT_CNAF, NL_NIKHEF, NL_SURFsara, UK_Bristol, UK_Brunel, UK_Durham, UK_Edinburgh, UK_Glasgow, UK_Lancaster, UK_Liverpool, UK_Manchester, UK_Oxford, UK_QMUL, UK_RAL-PPD, UK_RAL-Tier1, UK_Sheffield, US_Colorado, US_FNAL-FermiGrid, US_FNAL-T1, US_Michigan, US_PuertoRico, US_SU-ITS, US_Swan, US_UChicago, US_UConn-HPC, US_UCSD, US_Wisconsin |
Scope | usertests |
Events for this stage |
Output patterns
| Destination | Pattern | Lifetime | For next stage | RSE expression |
---|
1 | Rucio usertests:pdvd-cosmics-pions-test-fnal-w2816s1p1 | prod_*_g4_stage2.* | 2592000 | False | |
2 | Rucio usertests:pdvd-cosmics-pions-test-fnal-w2816s1p2 | prod_*_reco.* | 2592000 | False | |
Environment variables
Name | Value |
---|
CAMPAIGN | pdvd-cosmics-pions-test |
DUNESW_TAR | /cvmfs/fifeuser3.opensciencegrid.org/sw/dune/9fe95b107966c83353f24b197174ff453a109358 |
JSONFILE | pdvd_cosmics_base_meta.json |
MCJob | 1 |
NEVENTS | 10 |
pipyaml | 1 |
UTIL_TAR | /cvmfs/fifeuser3.opensciencegrid.org/sw/dune/11f996b66f72585e6ac762c7b29c12b4d6519e2c |
YAMLFILE | pdvd_cosmics_1GeVpions_gen_nopds.yaml |
File states
Total files | Finding | Unallocated | Allocated | Outputting | Processed | Not found | Failed |
---|
|
10 | 0 | 0 | 0 | 0 | 10 | 0 | 0 |
Job states
Total | Submitted | Started | Processing | Outputting | Finished | Notused | Aborted | Stalled | Jobscript error | Outputting failed | None processed |
---|
26 | 0 | 0 | 0 | 0 | 21 | 0 | 0 | 5 | 0 | 0 | 0 |
RSEs used
Name | Inputs | Outputs |
---|
MONTECARLO | 15 | 0 |
DUNE_US_FNAL_DISK_STAGE | 0 | 40 |
DUNE_US_BNL_SDCC | 0 | 32 |
PRAGUE | 0 | 8 |
Stats of processed input files as CSV or JSON, and of uploaded output files as CSV or JSON (up to 10000 files included)
File reset events, by site
Site | Allocated | Outputting |
---|
US_FNAL-FermiGrid | 3 | 0 |
US_UCSD | 1 | 0 |
US_PuertoRico | 1 | 0 |
Jobscript
#!/bin/bash
#
#These must be defined
#if [ -z $FCL_FILE ]; then
# echo "Fatal Must provide FCL_FILE env var"
# exit 1
#fi
if [ -z $UTIL_TAR ]; then
echo "Fatal must provide UTIL_TAR env var"
exit 1
fi
export PYTHONPATH=$UTIL_TAR:$PYTHONPATH
source /cvmfs/dune.opensciencegrid.org/products/dune/setup_dune.sh
setup metacat
export METACAT_SERVER_URL=https://metacat.fnal.gov:9443/dune_meta_prod/app
export METACAT_AUTH_SERVER_URL=https://metacat.fnal.gov:8143/auth/dune
if [ -z ${JUSTIN_PROCESSORS} ]; then
JUSTIN_PROCESSORS=1
fi
echo "Justin processors: ${JUSTIN_PROCESSORS}"
export TF_NUM_THREADS=${JUSTIN_PROCESSORS}
export OPENBLAS_NUM_THREADS=${JUSTIN_PROCESSORS}
export JULIA_NUM_THREADS=${JUSTIN_PROCESSORS}
export MKL_NUM_THREADS=${JUSTIN_PROCESSORS}
export NUMEXPR_NUM_THREADS=${JUSTIN_PROCESSORS}
export OMP_NUM_THREADS=${JUSTIN_PROCESSORS}
echo "Justin specific env vars"
env | grep JUSTIN
now=$(date -u +"%Y%m%dT%H%M%SZ")
jobid=`echo "${JUSTIN_JOBSUB_ID:-1}" | cut -f1 -d'@' | sed -e "s/\./_/"`
stageid=${JUSTIN_STAGE_ID:-1}
a=1
if [ -n "$DUNESW_TAR" ]; then
stat ${DUNESW_TAR}
if [ $? -ne 0 ]; then
echo "Failed to stat $DUNESW_TAR. Exiting safely"
exit 0
fi
export PRODUCTS=$DUNESW_TAR:$PRODUCTS
echo "Set dunesw to $DUNESW_TAR"
fi
if [ -n "$WIRECELL_TAR" ]; then
stat ${WIRECELL_TAR}
if [ $? -ne 0 ]; then
echo "Failed to stat $WIRECELL_TAR. Exiting safely"
exit 0
fi
export PRODUCTS=$WIRECELL_TAR:$PRODUCTS
echo "Set wirecell to $WIRECELL_TAR"
fi
#Setup recent lar software suite
DUNESW_VERSION=${DUNESW_VERSION:-v10_10_02d00}
setup dunesw \
"${DUNESW_VERSION}" \
-q "${DUNE_QUALIFIER:-e26:prof}"
setup_exit=$?
if [ $? -ne 0 ]; then
echo "Failed to setup dunesw $DUNESW_VERSION $DUNE_QUALIFIER"
exit $setup_exit
fi
echo "DUNESW loc:"
ups active | grep dunesw
echo "WIRECELL loc:"
ups active | grep wirecell
export FHICL_FILE_PATH=${DUNESW_TAR}:${FHICL_FILE_PATH}
export FW_SEARCH_PATH=${DUNESW_TAR}:${FW_SEARCH_PATH}
echo "printing env"
env
echo "DUNE specific env vars"
env | grep DUNE
# User can specify to pip install pyyaml
if [ -n "$pipyaml" ]; then
echo "Installing yaml"
pip install --user pyyaml
echo "Done"
# elif [ -n "${YAML_TAR}" ]; then
# echo "Using venv at ${YAML_TAR}"
# source ${YAML_TAR}/yaml_venv/bin/activate
fi
echo "Will use justin-get-file"
DID_PFN_RSE=`$JUSTIN_PATH/justin-get-file`
if [ "${DID_PFN_RSE}" == "" ] ; then
echo "Could not get file"
exit 0
fi
pfn=`echo ${DID_PFN_RSE} | cut -f2 -d' '`
did=`echo ${DID_PFN_RSE} | cut -f1 -d' '`
input_filename=`echo $did | cut -f2 -d':'`
echo "input file: $input_filename"
echo "jobsub_id: ${JUSTIN_JOBSUB_ID:-1}"
#Get run/subrun from parent if using input -- else from justin job ID/process"
if [ -z "$MCJob" ]; then
echo "Getting run subrun from $did"
run_subrun=`python -m beam_job_utils get_run_subrun -i $did`
get_run_ret=$?
if [ $get_run_ret -ne 0 ]; then
echo "error in get_run_subrun"
fi
echo $run_subrun
run=`echo $run_subrun | cut -f1 -d' '`
subrun=`echo $run_subrun | cut -f2 -d' '`
else
run=`echo $jobid | cut -f1 -d'_'` ##TODO -- check order here
subrun=`echo $jobid | cut -f2 -d'_'`
fi
nevents=${NEVENTS:--1} #Set from env override or -1
NSKIP=${NSKIP:-0}
echo "nevents: $nevents"
overrides="core.data_tier=full-reconstructed \
core.application.version=${DUNESW_VERSION} \
core.application.name=reco \
core.application.family=dunesw \
core.application=dunesw.reco \
"
#User specifies if they'd like to use an input file or not
if [ -n "$MCJob" ]; then
inputflag=""
else
inputflag="-i $pfn --parent $did"
fi
echo "input flag: $inputflag"
starttime=`date +"%s"`.0
# TODO -- metadata file configurable
python -m beam_job_utils run_job \
--json ${UTIL_TAR}/${JSONFILE} \
--overrides ${overrides} \
--run $run \
--subrun $subrun \
--yaml ${UTIL_TAR}/${YAMLFILE} \
--nevents $nevents \
$inputflag
endtime=`date +"%s"`.0
output_g4_files=`ls *_g4_stage2.root`
output_reco_files=`ls *_reco.root`
echo "Forming g4 metadata"
for FILE in ${output_g4_files[@]}
do
echo " G4 file: $FILE"
#Retrieve the key in output filename that corresponds to YAML config. stage
IFS=_ read -ra substrs <<< $(echo ${FILE} | cut -d '.' -f 1)
key_found='false'
KEY='g4_stage2'
iter=0
declare -i nsub=${#substrs[@]}-1
for substr in ${substrs[@]}; do
if [ $key_found == 'true' ]; then
KEY+=$substr
if [ $iter -lt ${nsub} ]; then
KEY+='_'
fi
fi
if [ $substr == 'stage2' ]; then
key_found='true'
fi
let iter=$iter+1
done
echo " KEY: ${KEY}"
#Retrieve the FHICL file that corresponds to the output file key
FCL=$(grep ${UTIL_TAR}/${YAMLFILE} -e "${KEY}:" -A 1 | grep -e "fcl" | cut -d ':' -f 2)
echo " FCL: ${FCL}"
python -m meta_maker --start_time $starttime --end_time $endtime --file_format "artroot" \
--app_family "dunesw" --app_name "reco" --app_version ${DUNESW_VERSION} \
--data_tier "detector-simulated" --get_events \
--campaign $CAMPAIGN \
--runs 1 --subruns ${subrun} --fcl $FCL \
-f "${JUSTIN_SCOPE}:${FILE}" -j "${FILE}.json"
if [ $? -ne 0 ]; then
echo " Error in g4 metadata"
exit 1
fi
echo " Ran successfully"
cat ${FILE}.json
done
echo "Forming reco metadata"
for FILE in ${output_reco_files[@]}
do
echo " subrun: ${subrun} -> reco file: $FILE"
#Retrieve the key in output filename that corresponds to YAML config. stage
IFS=_ read -ra substrs <<< $(echo ${FILE} | cut -d '.' -f 1)
key_found='false'
KEY='reco'
iter=0
declare -i nsub=${#substrs[@]}-1
for substr in ${substrs[@]}; do
if [ $key_found == 'true' ]; then
KEY+=$substr
if [ $iter -lt ${nsub} ]; then
KEY+='_'
fi
fi
if [ $substr == 'reco' ]; then
key_found='true'
fi
let iter=$iter+1
done
echo " KEY: ${KEY}"
#Retrieve the FHICL file that corresponds to the output file key
FCL=$(grep ${UTIL_TAR}/${YAMLFILE} -e "${KEY}:" -A 1 | grep -e "fcl" | cut -d ':' -f 2)
echo " FCL: ${FCL}"
python -m meta_maker --start_time $starttime --end_time $endtime --file_format "artroot" \
--app_family "dunesw" --app_name "reco" --app_version ${DUNESW_VERSION} \
--data_tier "full-reconstructed" --get_events \
--campaign $CAMPAIGN --runs [1] --subruns [${subrun}] \
--fcl $FCL \
-f "${JUSTIN_SCOPE}:${FILE}" -j "${FILE}.json"
if [ $? -ne 0 ]; then
echo " Error in reco metadata"
exit 1
fi
echo " Ran successfully"
cat ${FILE}.json
let subrun=${subrun}+1
done
exitcode=$?
if [ $exitcode -ne 0 ]; then
echo "Error running. Exiting with ${exitcode}"
exit $exitcode
fi
echo "$pfn" > justin-processed-pfns.txt