Generating LArCV data samples for ICARUS - NuSLAC/ICARUSCookbook GitHub Wiki
- kinit [email protected]
- ssh [email protected]
icarusbuild01 is a physical server with real local space in /scratch unlike all other machines used by the collaboration icarusgpvm0X where X = 1..N. On these machines people use /icarus/data and /icarus/app but the space is small and you can crush the filesystem. We will be using /scratch on icarusbuild01 machine.
-
Create a space under
/scratch/icarus/xxx -
Copy setup scripts:
scp -r /scratch/icarus/ldomine/setup /scratch/icarus/xxx/ -
Modify setup/setup.sh script: EDITOR and MY_LARSOFT_VERSION to latest
-
cd /scratch/icarus/xxx && source setup/setup.shwill create a directorymrbdev_vxx_xx_xxdepending on your larsoft version.
Any time you connect to the machine, begin with source /scratch/icarus/xxx/setup/setup.sh.
cd mrbdev_vXX_XX_XXmrbsetenvmrb g icaruscode- Edit
srcs/icaruscode/ups/product_depsto get the right versions of products (according toups active)
cd srcs/icaruscode/icaruscodegit clone https://github.com/DeepLearnPhysics/Supera.git- Edit CMakeLists in this directory, add
add_subdirectory(Supera)at the end cd Supera && git checkout icarus && sh setup.sh icarus- Create CMakeLists.txt inside
job/and put one lineinstall_fhicl()inside
Try building with mrb i -j12
cd $MRB_TOP/srcs && git clone https://github.com/DeepLearnPhysics/larcv2.gitcd larcv2 && git checkout develop && source configure.sh && make -j4
Then we need to manually copy larcv libraries to the localProducts directory:
scp build/lib/* $MRB_TOP/localProducts_larsoft_vXX_XX_XX_e17_prof/icaruscode/vXX_XX_XX/slf6.x86_64.e17.prof/lib/
Any time you build, make sure you have sourced the larcv2/configure.sh and sh setup.sh icarus in Supera folder.
-
mrb i -j12to build everything
Note: mrb z will clean out the build.
PNFS (dcache disk storage) is exposed and recommended to use for grid jobs. This is where we should put our code in a tarball, and where the logs/output will be created. It is much bigger than /icarus/data. Regular UNIX command like mkdir work but you should learn to use ifdh commands.
Avoid using <tab> completion and ls command on PNFS, it can hammer the filesystem.
The tarball will be copied to the worker node.
/pnfs/icarus/scratch are subject to auto-cleanup for files that haven't been touched in a long time. There is also /pnfs/icarus/permanent but not recommended (space is limited and shared by everyone, you easily forget to remove files).
- Create your directories on PNFS filesystem if needed:
mkdir /pnfs/icarus/scratch/users/xxx && mkdir /pnfs/icarus/scratch/users/xxx/tars - Go back to mrb:
cd $MRB_TOPand copy other useful scripts:scp -r /scratch/icarus/ldomine/v08_30_01/make_tar_uboone.sh $MRB_TOP/scp -r /scratch/icarus/ldomine/v08_30_01/link_maker.py $MRB_TOP/scp -r /scratch/icarus/ldomine/v08_30_01/v08_30_01.xml $MRB_TOP/
- Make tar with all code and put it on PNFS filesystem:
sh make_tar_uboone.sh -d localProducts_larsoft_vXX_XX_XX_e17_prof/ /pnfs/icarus/scratch/users/xxx/tars/vXX_XX_XX.tar - Edit the XML file
$MRB_TOP/vXX_XX_XX.xmlto define your jobs/xml file/output name etc. - Submit jobs:
project.py --xml vXX_XX_XX.xml --stage larcv --submitMonitor jobs:jobsub_q --user=xxxCancel jobs:jobsub_rm --job-id=XXXXX or --user=xxx
- Once the jobs are done, make symbolic links and eliminate bad output files:
python link_maker.py vXX_XX_XX.xml - Download @ local/slac machine:
rsync -e ssh -r -L --update --progress -v [email protected]:/icarus/data/users/xxx/dl_production_symlink_v01/mpv_mpr_YOURNAME ./