Using ifarm Scientific Computing Resources
The JLab computer center manages the various ifarm clusters and data storage. These are some of the resources offered there (general guide):
- To log into the JLab servers first ssh into login.jlab.org, which requires a CUE JLab computer account. Then you can log into another node in the jlab network like the jlabl1 workstations or the ifarm via another ssh directly to those hostnames.
- Standard nuclear physics computing programs and analysis software can be initialized into your coding environment by executing the "production" scripts. To execute these scripts upon logging into the jlab servers place the following code or something similar in a file called .login or any .*rc file you prefer:
source /site/12gev_phys/softenv.csh 2.3
- If you have problems then make sure you are running the /bin/tcsh shell (execute "echo $SHELL" on the command line to see what shell you are running)
- Recently the production scripts have been updated to "softenv" scripts, and the newest version is 2.3
- The swif workflow program can manage running batch jobs on the Auger batch farm system for you.
- See the "job management" section of Ciprian Gal's prexSim simulation readme for specific details on how to get a swif workflow up and running for you.
Getting Account Access Permissions
- Register as a JLab user, undergrad, or grad student (here, or register from the "online" link in here).
- After registration, you have to "Register New Visit" as user group "Remote Access," even though you aren't necessarily visiting, and you will need you to call the JLab helpdesk at some point.
- While filling out the Registration form you can request an account on the JLab Common User Environment (CUE). You must include Bob Michaels (email@example.com) as your JLab sponsor for the account - be sure to request access to a-parity and moller12gev user groups (here is a good starting link).
- To set up your computing environment on the ifarm see above.
- To get access to swif and scientific computing resources follow the instructions here.
- Then to use swif see the guide below or readmes in relevant repositories.
- Jefferson Lab github access - Send an email with the following (and if this doesn't work ask one of the senior members of the collaboration to add you themselves):
Subject: Please add me to the JeffersonLab github organization To: <firstname.lastname@example.org> Hello,
I'm a JLab user and my JLab user name is _______. Could you please add me to the JeffersonLab github organization? My github username is ______ and account id is ______
Introduction to SWIF
- To use swif first you need access to the ifarm, then you need to create a certificate (see above)
- To create a workflow on swif run
swif create -workflow WorkFlowName (where WorkFlowName is an identifier you give to it to monitor its progress)
- To monitor the workflow run
swif status -workflow Name
- To delete a workflow run
swif cancel -workflow Name swif cancel -delete -workflow Name
- To add a job run
swif add-jsub -workflow Name -script jobScript.xml swif run -workflow Name
- To create a script .xml file for running jobs see the description of its function and the python wrapper code included in Ciprian's prexSim code (https://github.com/cipriangal/prexSim) or Cameron's updated one to work with new remoll v2.0.0 data structures (jlabSubmit.py and its relatives)
- A suggested .login file for your ifarm uses (that allows for batch job submission) is:
source /site/env/syslogin source /site/env/sysapps if ( `hostname` !~ "jlabl"* && `hostname` !~ "adaq"* ) then source /site/12gev_phys/softenv.csh 2.3 endif
- A sample .tchsrc file for using the default ifarm tc shell is here:
# ~/.tcshrc: executed by tcsh(1) for non-login shells. setenv PATH $PATH\:/site/bin set savehist = 100000 set histfile = ~/.tcsh_hist alias root root -l alias gits git status alias swif /site/bin/swif alias swifs swif status -workflow
Transferring Huge Files
- Do not scp or copy raw data file (see instruction right below)
- How to copy raw data files from tape
(email from Brad Sawatzky) Do not use 'jget' -- that makes a copy to an arbitrary file system (kind of like 'cp' on regular files).
You want to use 'jcache get ...' which will have the system pull the file to /cache/hallc/spring17/raw/ as you wish. Run 'jcache -h' to get some help text and/or the online docs here: https://scicomp.jlab.org/docs/%20
So, something like this should work: jcache get /mss/hallc/spring17/raw/shms_all_02895.dat The file will show up here as soon as a tape drive is ready to pull the run (can be anywhere from minutes to 24 hours depending on load). /cache/hallc/spring17/raw/shms_all_02895.dat
Wildcards work too: jcache get /mss/hallc/spring17/raw/shms_all_028*.dat (But be careful, don't do 'jcache get /mss/hallc/spring17/raw/*' :-)
You can find the status of your request from: https://scicomp.jlab.org/scicomp/index.html#/cache/request
Example for PREX counting daq data:
ifarm1402.jlab.org> jcache get /mss/halla/happexsp/raw/prexRHRS_20982.dat.0 get request: 21382881 status: pending /cache/halla/happexsp/raw/prexRHRS_20982.dat.0 -> pending
- Brad's CH Tips and Tricks 
A quick and dirty way to copy files from JLab work disks is somethine like the following:
scp -rp email@example.com:/work/halla/triton/yez/file .
Or a better command which sometimes works for me by most of times doesn't (however, I recommend to use rsync to copy from among different locations in the same PC, or ifarm):
rsync -av firstname.lastname@example.org:/work/halla/triton/yez/file .
Globus is a very nice tool to transfer a large number of big data files from JLab to any place with much faster internet connection speed (JLab server allows a maximum of 5GBps speed). It also has an easy web-based interface to perform the work. However, the instruction of how to use Globus is somewhat misleading. I simplified the instruction based on my painful experience of setting up the connections.
Here is the step-by-step How-to:
- 1) Go to https://www.globus.org/, and sign-in your account by choosing Jefferson Lab or your own institution account if there are (I used my Argonne account). I haven't tried personal account. Please let me know how it works.
- 2) If your institution already has an Endoint-sever ready, use them. Here, I chose to create my persional endpoint on an Argonne PC (or can be on your own laptop if you have enough space, or external hard-dirve).
*Find a button "add Globus Connect Personal endpoint Endpoint List", *Type in the name of the endpoint (for you to manage later) *Create the Setup Key and copy it.
- 3) Download the scripts to your local computer (or computer that you want to save the files to)
- 4) *Ignore* the instruction on the webpage unless you want to install a user-interface globus which is not really needed. Simply unpack the zip files: globusconnectpersonal-x.x.x/
- 5) Inside the folder, run the following command:
./globusconnect -setup <key> where <key> is the key-chain you generated and copied from the Globus webpage in step 2)
- 6) Go to the directory ~/.globusonline/lta/, and edit or create a text-file named "config-paths". Inside this file, add lines to specify where you want to let the Globus get access to (so you can save files to or copy files from), e.g:
/data/yez/Tritium,1,1 /home/work/marathon,1,1 where the first "1" means you allow Globus to visit this folder ("0" to turn off). The second "1" mean you allow Globus to write to this folder ("0" to set "read-only"). For more details, see this:https://docs.globus.org/faq/globus-connect-endpoints/#how_do_i_configure_accessible_directories_on_globus_connect_personal_for_linux
- 7) Now you can start the endpoint-server by running:
./globusconnect -start & If you want to make some changes (like add or remove paths, change permission, stop the serve (./globusconnect -stop) and restart it after changing "config-paths")
- 8) Go to the webpage to start transfer files: https://www.globus.org/app/transfer
a) Connect to the JLab endpoint by searching " jlab#scifiles". (see https://scicomp.jlab.org/docs/node/11) b) Specify the endpoint that you just created (under "Administrated by Me"), and it will show your folders that are allowed to show (in config-paths). c) Choose the files or entire folders on JLab-endpoint (e.g., /cache/halla/triton/raw) d) Choose where you want to save these files on your personal endpoint PC. e) Then click the big blue button in between two endpoints. Then just wait for your files to be transfered over.