Requesting specific resources using ClassAds

Introduction to ClassAds

In general ClassAds (short for Classified Advertisements) is a mechanism used by Condor to represent characteristics and constraints of machines and jobs. Therefore ClassAds can be used to select machines with necessary properties for your work, e.g. to request:

  • specific software
  • a certain amount of memory
  • the amount of hard drive storage available
  • whole machines instead of a single CPU core
  • and more…..

ClassAd expressions can be built up using numbers, strings, relational operators and boolean expressions to define job requirements. For example, we recommend you include the following requirements line in your Condor submit files

Requirements = (OpSys == "LINUX" && Arch == "X86_64")

to request that your jobs run on machines with a 64 bit Linux operating system, i.e. machines for which the OpSys ClassAd is equal to the string LINUX and Arch is equal to X86_64. Note: == is the EQUAL TO operator and && is the logical AND operator.

More information on the Boolean/relational operators used with ClassAds can be found in the Condor manuals. In general Condor ClassAds expressions are similar to those in the C programming language, with two new relational operators, i.e. =?= and =!=. These have similar behaviour to == and != but == would evaluate to UNDEFINED on machines for which a ClassAd is undefined (e.g. missing ClassAd values) whereas =?= would evaluate to FALSE. Likewise =!= evaluates to TRUE for undefined ClassAds. The =?= and =!= operators are useful in avoiding undesirable behaviour when ClassAds are undefined. For example to use dynamic slots requires adding (&& HAS_DYNAMIC =?= True) to the requirements line, i.e.

Requirements = (OpSys == "LINUX" && Arch == "X86_64" && HAS_DYNAMIC =?= True)

because of the possibility that some machines in the pool do not have a HAS_DYNAMIC ClassAd.

ClassAds defining software

  • has_gaussian_03 or has_gaussian_09
  • has_geant4_10_2 i.e. GEANT4 version 10.2
  • has_java_1_8 i.e. java version 8 update 92
  • has_mathematica_8 or has_mathematica_9 i.e. Mathematica versions 8.0.4 and 9.0.1
  • has_matlab_2013 or has_matlab_2015 i.e. Matlab versions 2013a and 2015a
  • has_python_2_7
  • has_r_3_2 or has_r_3_4 i.e. R versions 3.2.0 and 3.4.0

ClassAds relating to dynamic slots

  • has_dynamic i.e. PC uses dynamic slots
  • has_dynamic2 i.e. dynamic with 2 slots
  • has_dynamic4 i.e. dynamic with 4 slots
  • has_dynamic8 i.e. dynamic with 8 slots
  • has_dynamic16 i.e. dynamic with 16 slots

Other ClassAds

  • has_checkpointing i.e. supports user-level/ application-level checkpointing
  • has_standard_image i.e. Linux and Condor image is maintained and managed by us (the local Condor support group)
  • has_backbone i.e. such nodes are up 24/7
  • has_avx i.e. such nodes have the Intel CPU extension instructions
  • has_intel_11_1 i.e. has version 11.1.075 of the Intel compilers and Intel Math Kernel shared libraries
  • has_intel_13_0 i.e. has version 13.0.1 of the Intel compilers and Intel Math Kernel shared libraries
  • has_intel_15_0 i.e. has version 15.0.3 of the Intel compilers and Intel Math Kernel shared libraries

Listing all ClassAds available on the pool

It is possible to list all available ClassAds on the pool that start with HAS by executing the following command on submitter

condor_status -l | grep '^HAS_' | sort -u

The output of the above command will vary according to the machines currently available.

Last modified on February 5, 2020 at 1:48 pm by Chris Paul