next up previous contents
Next: JOB simple: script and Up: Job Examples Previous: JOB hnam: JDL file   Contents

Overview of JDL Basic Commands

After the first simple example, it is time to have a more detailed look at the JDL (Job Description Language) files. To submit jobs to the grid the user must describe the job requirements in the form of a list of expressions defining requirements as attributes with the following syntax:
attribute = value
where value may be a single value, a list of values or a complex expression. Each attribute definition must end with semicolon. Each value is embedded in double quotes. List of values are enclosed in curly braces and separated by commas:

InputSandbox = {"","conv.C","stdin.conv"};

Attributes are described in the Attribute Manual (see [15]). The minimal set of attributes are the name of the image/script we want to run (Executable), the standard output files (StdOutput, StdError) and the files that the user wants to retrieve (OutputSandbox). This is the case of the hnam.jdl example of Section 5.1.

The executable must exist in the default path of every Grid WN, if not the image/script must be sent to the WN as an item of the InputSandbox attribute, as shown in simple.jdl (Section 5.3).

For more complex jobs, the user may choose the shell as executable image and define the executable script as shell argument. The important point is the definition of all input and output files in the sandbox attributes. If the files are missing edg-job-submit complains and aborts, but it is the user responsability to specifiy the correct files. As an example, if the user submits the same job several times using different input files, and edg-job-submit finds the files in the current directory, the job is submitted but will fail at execution time if the user specifies the wrong file names.

Attribute specification allows expressions created from attribute definitions as shown in the following JDL fragment.

AliceSoftware = Member("ALICE-3.09.06",other.GlueHostApplicationSoftwareRunTimeEnvironment);
MaxCPUTime = other.GlueCEPolicyMaxCPUTime>86400;
MaxMemory = other.GlueHostMainMemoryRAMSize>400;
CEStatus = other.GlueCEStateStatus == "Production";
OutboundIP = other.GlueHostNetworkAdapterOutboundIP ;
CEId = other.GlueCEUniqueID == "";
Requirements = CEId && AliceSoftware && MaxCPUTime && MaxMemory && CEStatus && OutboundIP;

In this fragment, are set attributes to specify required software (AliceSoftware), CPU time limit (MaxCPUTime), maximum job required memory (MaxMemory), production CE type with SE connectivity (CEStatus and OutboundIP) and user defined queue (CEId). Then all the attribute definitions are combined to create the Requirements attribute and pilot the match making process selection according to job needs.

As users can see a JDL file may become very complex and need debugging depending on attribute complexity. A more detailed description of JDL language is beyond the scope of the present report as JDL jobs are application dependent, therefore users are invited to contact the experiment supporters for complex JDL working examples.

next up previous contents
Next: JOB simple: script and Up: Job Examples Previous: JOB hnam: JDL file   Contents
luvisetto 2003-12-17