CondorSubmit

/!\Note that condor is CPU-scavenging from systems in the department. The needs of research group which *purchased* the computer will always come first.

/!\ Note the condor pool is increasingly heterogenous

# To run on SL7 with newer compiler and libraries
requirements = OPSYSMAJORVER == 7
# To run on old SL6 with older libraries
requirements = OPSYSMAJORVER == 6

Super good intro HTCondor User Tutorial

The Departments compute systems participate in a campus wide condor grid. To run on the grid, processes must not require any user interaction. For Physics dept. users, you should first ssh into condor.internal.phy.duke.edu to submit jobs. If you are on a department workstation, ssh condor will get you there.

To run jobs on the grid, you must create a submit file. The first major choice is if you want your jobs to run only in the Physics department, which has access to your NFS project space, or do you want your job to run all over campus.

This first example runs ten instances of my executable in Physics and uses local NFS space. Output is written to files with a numerical suffix.

executable=/home/jdorff/tmp/condor/foo
output=foo-output.$(Process)
error=foo-error.$(Process)
log=foo-log.$(Process)
notification=always
notify_user=jdorff@phy.duke.edu
universe=vanilla
+Department = Physics
should_transfer_files=NO
requirements = OpSys == "LINUX" && Arch =="X86_64"
queue 10

One would save the above info a plain text file and submit it via the condor_submit command. For example condor_submit myjob.submit. You can monitor the status of your job with the condor_q command.

Here is a second example submit file using a program I've compiled. This time we are not going to use the local NFS, but instead run across campus.

executable=/xtmp/jdorff/condor/foo
output=foo-output.$(Process)
error=foo-error.$(Process)
log=foo-log.$(Process)
notification=always
notify_user=jdorff@phy.duke.edu
universe=vanilla
+Department = Physics
should_transfer_files=YES
when_to_transfer_output=ON_EXIT
queue 5

Here is an example which uses matlab rather than a binary. Note the requirement check for MATLAB. Also this one uses different directories rather than process numbers:

executable=/usr/bin/matlab
arguments= -nodisplay -nojvm
input=mat.m
output=matlab-output
error=matlab-error
log=matlab-log
notification=always
notify_user=jdorff@phy.duke.edu
universe=vanilla
+Department = Physics
should_transfer_files=NO
Requirements = (TARGET.HAS_MATLAB =?= True)

Initialdir = alpha
queue 1
Initialdir = beta
queue 1