Presentation is loading. Please wait.

Presentation is loading. Please wait.

gLite Advanced Job Management

Similar presentations


Presentation on theme: "gLite Advanced Job Management"— Presentation transcript:

1 gLite Advanced Job Management
Africa Joint EUMEDGRID-Support/EPIKH School for Application Porting Hassina Beggar – CERIST Rabat, 6-15 June 2011

2 Outline Long Lifetime Proxy Special Jobs MPI Jobs Collection jobs
DAG jobs Parametric jobs MPI Jobs

3 Long Lifetime Proxy Do you need a long lifetime proxy for your application? Use MyProxy! How?! Create a long proxy ( myproxy-init -d -n -s changeme-myproxyserver) -d Use the proxy certificate subject (DN) as the default username -n Don't prompt for passphrase -s <hostname> Hostname of the myproxy-server In jdl file specify myproxy server name (MyProxyServer = “changeme-myproxyserver";) Submit your job NB: For this tutorial you can use myproxy.ct.infn.it as MyProxyServer

4 Outline Special Jobs Collection Jobs DAG Job Parametric jobs

5 Job Collection A job Collection is a set of independent jobs that for some reasons (known to the user) have to be submitted, monitored and controlled as a single request. Upon submission, the collection is associated with a jobId that can be used as the unique handle for the whole set of jobs. In this case, the Type is Collection instead of job. A collection is a special DAG without dependencies. In this case you have to set the Type attribute to collection. The node attribute is the same of the node attr. of the dag job but without the dependencies attribute. Type ="collection";

6 JDL file: Collection example
[ Type = "collection"; VirtualOrganisation = “eumed”; InputSandbox = {"myinput.txt"}; nodes = { JobType = ”Normal”; NodeName = "node1"; Executable = “my_prog1.exe”; InputSandbox = { root.InputSandbox[0], “node1_input”}; StdOutput = "myoutput1"; StdError = "myerror1"; OutputSandbox = {"myoutput1","myerror1"}; ] NodeName = "node2"; Executable = “my_prog2.exe”; InputSandbox = { root.InputSandbox[1], “node2_input”}; StdOutput = "myoutput1"; StdError = "myerror1"; OutputSandbox = {"myoutput1","myerror1"}; [ <job descr 3 >] ... }; jobdesc

7 Attribute: VirtualOrganisation
Is a string representing the name of the VO the submitting user is currently working for. The value for this attribute has to match with the VO specified within the credentials issued by VOMS. VirtualOrganisation ="eumed";

8 Attribute: Nodes The Nodes attribute is the core of the Collection description and it is used for specifying the jobs the collection is made of. NodeName is a string representing the name that the user wants to associate to the job of a collection so that the job can be easily identified at job monitoring time

9 Attribute: InputSandbox
A general InputSandbox outside nodes attribute is accessible from each node specifying in the own InputSandbox attribute the file it want to access by referring the general one like an Index Array InputSandbox = {"in1", "in2", "in3"}; nodes = { [ NodeName = "node1"; InputSandbox = { root.InputSandbox[0],“node1_input”}; ... NodeName = "node2"; InputSandbox = { root.InputSandbox[1]}; NodeName = "node3"; InputSandbox = { root.InputSandbox[2]};

10 Attribute: InputSandbox
All nodes that do not contain the InputSandbox attribute in their descriptions inherit the value of these attributes from the one specified for the collection Nodes representing jobs without InputSandbox have to contain the following specification in their description (empy InputSandbox list): [ ……………. InputSandbox = {}; …………… ]

11 Attribute: Output Sandboxes
The JDL description of a collection must not contain any OutputSandbox attribute occurrence only the ones in the descriptions of the nodes. The OutputSandbox of the collection has to be considered as the sum of the output sandboxes of all its nodes.

12 DAG jobs A DAG job is a set of jobs where input, output, or execution of one or more jobs can depend on other jobs Dependencies are represented through Directed Acyclic Graphs, where the nodes are jobs, and the edges identify the dependencies A Unique ID is used to control all of the sub jobs Type = "dag";

13 DAG jobs Relationships between jobs are written as a list of pairs
Example: dependencies = { {nodeA,NodeB}, {nodeA,NodeC}, {nodeA,mynode}, {nodeB,NodeD}, {nodeC,NodeD}, {mynode,NodeD}}; OR dependencies = {{nodeA, {NodeB, NodeC, mynode}}, {{NodeB, NodeC, mynode}, nodeD}};

14 JDL file: DAG example [ Type = “dag”; max_nodes_running = 2; nodes = [
nodeA = [ description = [ JobType = "Normal"; .... nodeB = [ ]; Dependencies = { { nodeA, nodeB } }; ]

15 JDL file: Another DAG example
[ type = "dag"; max_nodes_running = 4; nodes = [ nodeA = [ file ="nodes/nodeA.jdl" ; ]; nodeB = [ file ="nodes/nodeB.jdl" ; nodeC = [ file ="nodes/nodeC.jdl" ; nodeD = [ file ="nodes/nodeD.jdl"; dependencies = {{nodeA, nodeB}, {nodeA, nodeC}, { {nodeB,nodeC}, nodeD }} ]

16 Attributes: Description and File
The Description attribute is a classad representing the JDL description of the job representing the node of the DAG The File attribute is a string representing the path on the local file system of a file containing the JDL description of a Job. It is important to note that this kind of representation can only be used when submitting to the WMS through a client (glite-wms-job-submit) able to resolve the path locally and to expand the JDL with the full description before passing it to the WMS. The File attribute cannot be specified together with the Description attribute within the same node description! The nodes attribute is composed by a set of attributes where you specify the jdl of the sub-job. You can specify the jdl of a sub-job or with a reference to a file or with a explicit description as in this case.

17 Attribute: Dependencies
The Dependencies attribute is a list of lists representing the dependencies between the nodes of the DAG described in the nodes attribute. The dependencies specification must be read as follows: { nodeA, nodeB } means that nodeB cannot start before nodeA has completed its execution successfully.

18 Parametric Job Often, a program (simulation, analysis) must be run several times changing only one parameter. gLite offers the Parametric Job to simplify this task The advantage is that the parametrised jobs are treated with a unique JobID 􃱺easier to keep track of them Parameters can be integers or strings Parametric jobs have the attribute JobType with value Parametric JobType = "Parametric";

19 Parameters = {"param_1", "param_2" ...};
If parameters are string the attribute Parameters contains all the strings If parameters are integers three attributes are required: - Parameter, contains the number of parameters - ParameterStart, contains the first parameter - ParameterStep, contains the step to the next parameter Both kinds of parameter take the place of a special keyword called _PARAM_ in the JDL file Input Sandbox (if present) has to be coherent with parameters Parameters = {"param_1", "param_2" ...};

20 The parameter is a number
Parametric job Example [ JobType = "Parametric"; Executable = "myjob.exe"; StdInput = "input_PARAM_.txt"; StdOutput = "output_PARAM_.txt"; StdError = "error_PARAM_.txt"; Parameters = 100; ParameterStart = 1; ParameterStep = 1; InputSandbox = {"myjob.exe", "input_PARAM_.txt"; OutputSandbox = {"output_PARAM_.txt", "error_PARAM_.txt"}; ] The parameter is a number the initial number of the running paramenter, the increment of the running parameter between consecutive jobs. Both attributes, ParameterStart and ParameterStep, can be set only if Parameters is a number.

21 MPI Overview Execution of parallel jobs is an essential issue for modern informatics and applications. Most used library for parallel jobs support is MPI (Message Passing Interface) At the state of the art, parallel jobs can run inside single Computing Elements (CE) only; several projects are involved into studies concerning the possibility of executing parallel jobs on Worker Nodes (WNs) belonging to different CEs. The source code must have been compiled with mpicc libraries

22 MPI JDL Type = "Job"; #Mandatory JobType = "MPICH";
> $ cat mpi.jdl [ Type = "Job"; #Mandatory JobType = "MPICH"; #The number of CPU that will be used NodeNumber = 2; Executable = "cpi"; StdOutput = "cpi.out"; StdError = "cpi.err"; InputSandbox = {"cpi"}; OutputSandbox = {"cpi.err","cpi.out"}; RetryCount = 3; ]

23 Practice... Compound jobs LongProxy creation More on jdl attributes
LongProxy creation More on jdl attributes Jdl and data management (Is your input file>10 MB? ) A Grid application case

24 References https://edms.cern.ch/file/722398/1.2/gLite-3-UserGuide.pdf
gLite 3 User Guide (pdf, html) WMProxy and JDL Guide Attributes-v0-9.pdf Documentation p/index.html Examples MPI

25 Questions….


Download ppt "gLite Advanced Job Management"

Similar presentations


Ads by Google