Advanced gLite job management Paschalis Korosoglou, AUTH/GRNET EPIKH Application Porting School 2011 Beijing, China Paschalis Korosoglou,

Slides:



Advertisements
Similar presentations
EGEE is a project funded by the European Union under contract IST EGEE Tutorial Turin, January Hands on Job Services.
Advertisements

Chapter 3. MPI MPI = Message Passing Interface Specification of message passing libraries for developers and users –Not a library by itself, but specifies.
SEE-GRID-SCI User Interface (UI) Installation and Configuration Branimir Ackovic Institute of Physics Serbia The SEE-GRID-SCI.
Reference: / MPI Program Structure.
MPI support in gLite Enol Fernández CSIC. EMI INFSO-RI CREAM/WMS MPI-Start MPI on the Grid Submission/Allocation – Definition of job characteristics.
EGI-InSPIRE RI EGI-InSPIRE EGI-InSPIRE RI Ejecución con MPI e interactividad en el Grid Ejercicios Prácticos 1.
Special Jobs Claudio Cherubino INFN - Catania. 2 MPI jobs on gLite DAG Job Collection Parametric jobs Outline.
Introduction to MPI. What is Message Passing Interface (MPI)?  Portable standard for communication  Processes can communicate through messages.  Each.
Message-Passing Programming and MPI CS 524 – High-Performance Computing.
Parallel Programming Using Basic MPI Presented by Timothy H. Kaiser, Ph.D. San Diego Supercomputer Center Presented by Timothy H. Kaiser, Ph.D. San Diego.
FP6−2004−Infrastructures−6-SSA E-infrastructure shared between Europe and Latin America Special Jobs Matias Zabaljauregui UNLP.
The EPIKH Project (Exchange Programme to advance e-Infrastructure Know-How) WMPROXY API Python & C++ Diego Scardaci
The EPIKH Project (Exchange Programme to advance e-Infrastructure Know-How) MPI Applications with the Grid Engine Riccardo Rotondo
INFSO-RI Enabling Grids for E-sciencE GILDA Praticals GILDA Tutors INFN Catania ICTP/INFM-Democritos Workshop on Porting Scientific.
Part I MPI from scratch. Part I By: Camilo A. SilvaBIOinformatics Summer 2008 PIRE :: REU :: Cyberbridges.
INFSO-RI Enabling Grids for E-sciencE Workload Management System Mike Mineter
The EPIKH Project (Exchange Programme to advance e-Infrastructure Know-How) GISELA Additional Services Diego Scardaci
Message Passing Programming Model AMANO, Hideharu Textbook pp. 140-147.
E-science grid facility for Europe and Latin America gLite MPI Tutorial for Grid School Daniel Alberto Burbano Sefair, Universidad de Los.
EGEE-III INFSO-RI Enabling Grids for E-sciencE Feb. 06, Introduction to High Performance and Grid Computing Faculty of Sciences,
CS 591 x I/O in MPI. MPI exists as many different implementations MPI implementations are based on MPI standards MPI standards are developed and maintained.
PP Lab MPI programming II. Program#1 Write a program that prints hello from every created process. Like: Hello World from process 0 of 5 Hello World from.
Job Management DIRAC Project. Overview  DIRAC JDL  DIRAC Commands  Tutorial Exercises  What do you have learned? KEK 10/2012DIRAC Tutorial.
Chapter 4 Message-Passing Programming. The Message-Passing Model.
FP7-INFRA Enabling Grids for E-sciencE EGEE Induction Grid training for users, Institute of Physics Belgrade, Serbia Sep. 19, 2008.
INFSO-RI Enabling Grids for E-sciencE Claudio Cherubino, INFN Catania Grid Tutorial for users Merida, April 2006 Special jobs.
INFSO-RI Enabling Grids for E-sciencE Job Workflows with gLite Emidio Giorgio INFN NA4 Generic Applications Meeting 10 January 2006.
Parallel Computing in Numerical Simulation of Laser Deposition The objective of this proposed project is to research and develop an effective prediction.
EGEE-II INFSO-RI Enabling Grids for E-sciencE Workload management in gLite 3.x - MPI P. Nenkova, IPP-BAS, Sofia, Bulgaria Some of.
1 HPCI Presentation Kulathep Charoenpornwattana. March 12, Outline Parallel programming with MPI Running MPI applications on Azul & Itanium Running.
INFSO-RI Enabling Grids for E-sciencE Job Submission Tutorial (material from INFN Catania)
Project18 Communication Design + Parallelization Camilo A Silva BIOinformatics Summer 2008.
INFSO-RI Enabling Grids for E-sciencE GILDA Praticals Giuseppe La Rocca INFN – Catania gLite Tutorial at the EGEE User Forum CERN.
E-infrastructure shared between Europe and Latin America FP6−2004−Infrastructures−6-SSA Special Jobs Valeria Ardizzone INFN - Catania.
3/12/2013Computer Engg, IIT(BHU)1 MPI-1. MESSAGE PASSING INTERFACE A message passing library specification Extended message-passing model Not a language.
Implementing Processes and Threads CS550 Operating Systems.
June 24-25, 2008 Regional Grid Training, University of Belgrade, Serbia Hands-on: Compiling MPI codes with PGI Dušan Vudragović SCL,
MPI-Message Passing Interface. What is MPI?  MPI is a specification for the developers and users of message passing libraries. By itself, it is NOT a.
EGI-InSPIRE RI EGI-InSPIRE EGI-InSPIRE RI Parallel jobs with MPI Hands-on tutorial Enol Fernández del Castillo Instituto.
Job Management Beijing, 13-15/11/2013. Overview Beijing, /11/2013 DIRAC Tutorial2  DIRAC JDL  DIRAC Commands  Tutorial Exercises  What do you.
Workload Management Status DIRAC User Meeting Marseille, Oct 2012.
The Finite Difference Time Domain Method FDTD By Dr. Haythem H. Abdullah Researcher at ERI, Electronics Research Institute, Microwave Engineering Dept.
The EPIKH Project (Exchange Programme to advance e-Infrastructure Know-How) Advanced Job Riccardo Rotondo
LA 4 CHAIN GISELA EPIKH School SPECFEM3D on Science Gateway.
Enabling Grids for E-sciencE Work Load Management & Simple Job Submission Practical Shu-Ting Liao APROC, ASGC EGEE Tutorial.
EGI-InSPIRE RI EGI Hands On Training for AEGIS Users EGI-InSPIRE N G I A E G I S EGI Hands On Training for AEGIS Users Institute of Physics.
Parallel jobs with MPI and hands on tutorial Enol Fernández del Castillo Instituto de Física de Cantabria.
The EPIKH Project (Exchange Programme to advance e-Infrastructure Know-How) Special Topics: MPI jobs Maha Dessokey (
The EPIKH Project (Exchange Programme to advance e-Infrastructure Know-How) Indian Institute of Technology Kharagpur EPIKH Workshop Kolkata,
The EPIKH Project (Exchange Programme to advance e-Infrastructure Know-How) How to Run MPI-enabled Applications on the EUMEDGRID Infrastructure.
MPI Applications with the Grid Engine
Advanced Topics: MPI jobs
Introduction to parallel computing concepts and technics
gLite MPI Job Amina KHEDIMI CERIST
Special jobs with the gLite WMS
The gLite Workload Management System
Command Line Arguments
Alexandre Duarte CERN Fifth EELA Tutorial Santiago, 06/09-07/09,2006
Introduction to MPI.
MPI Applications with the Grid Engine
Special Topics: MPI jobs
Special Jobs: MPI Alessandro Costa INAF Catania
gLite Advanced Job Management
Introduction to parallelism and the Message Passing Interface
gLite Job Management Christos Theodosiou
MPI MPI = Message Passing Interface
GENIUS Grid portal Hands on
Job Description Language (JDL)
Hands on Session: DAG Job Submission
CS 584 Lecture 8 Assignment?.
Presentation transcript:

Advanced gLite job management Paschalis Korosoglou, AUTH/GRNET EPIKH Application Porting School 2011 Beijing, China Paschalis Korosoglou, AUTH/GRNET EPIKH Application Porting School 2011 Beijing, China

EPIKH Application Porting School, May 2011, Beijing, China Workload Management System 2

EPIKH Application Porting School, May 2011, Beijing, China For the hands-on session you will need 3 $ svn co $ svn update $ svn co $ svn update

EPIKH Application Porting School, May 2011, Beijing, China 4 Job collection Simultaneous submission Asynchronous execution As many jobs as we like $ glite-wms-job-submit -a --collection -o JobID JDLs/

EPIKH Application Porting School, May 2011, Beijing, China Parametric jobs Submission of multiple jobs each time varying the value of a parameter Parameter values defined either through an incremental process or through a predefined list Parameters may be integers, floats, characters or character strings 5

EPIKH Application Porting School, May 2011, Beijing, China Examples of parametric JDL files Example bash script: 6 JobType = "Parametric"; Executable = ”run.sh"; Arguments = "_PARAM_"; InputSandbox = ”run.sh"; Parameters = 8; ParameterStep = 2; ParameterStart = 0; StdOutput = "std_PARAM_.out”; StdError = "std.err"; OutputSandbox = {"std_PARAM_.out", "std.err”}; JobType = "Parametric"; Executable = ”run.sh"; Arguments = "_PARAM_"; InputSandbox = ”run.sh"; Parameters = 8; ParameterStep = 2; ParameterStart = 0; StdOutput = "std_PARAM_.out”; StdError = "std.err"; OutputSandbox = {"std_PARAM_.out", "std.err”}; JobType = "Parametric"; Executable = ”run.sh"; Arguments = "_PARAM_"; InputSandbox = ”run.sh"; Parameters = {0,2,4,6,8,10,12,14}; StdOutput = "std_PARAM_.out”; StdError = "std.err"; OutputSandbox = {"std_PARAM_.out", "std.err”}; JobType = "Parametric"; Executable = ”run.sh"; Arguments = "_PARAM_"; InputSandbox = ”run.sh"; Parameters = {0,2,4,6,8,10,12,14}; StdOutput = "std_PARAM_.out”; StdError = "std.err"; OutputSandbox = {"std_PARAM_.out", "std.err”}; #!/bin/bash param=$1 sleep $param echo $param #!/bin/bash param=$1 sleep $param echo $param Incremental switchVariables list

EPIKH Application Porting School, May 2011, Beijing, China Parametric jobs Simultaneous submission Asynchronous execution Excellent for 1 dimensional parametric studies 7 $ glite-wms-job-submit -a -o JobID param.jdl

EPIKH Application Porting School, May 2011, Beijing, China DAG jobs 8 DAG is an acronym for Directed Acyclic Graph In terms of job management DAG is used for defining interdependencies among jobs Characteristics: Job submission is asynchronous Job execution is asynchronous

EPIKH Application Porting School, May 2011, Beijing, China A dag job example 9 [ Type = "dag"; Nodes = [ peter = [ description = [ JobType="Normal"; Executable = "/bin/echo"; Arguments = "Hi! My name is Peter"; StdOutput = "peter.out"; StdError = "peter.err"; OutputSandbox = {"peter.out", "peter.err"}; ]; anna = [ description = [ JobType="Normal"; Executable = "reply.sh"; InputSandbox = {"reply.sh”,root.Nodes.peter.description.OutputSandbox[0]}; StdOutput = "anna.out"; StdError = "anna.err"; OutputSandbox = {"anna.out", "anna.err"}; ]; Dependencies = { { peter, anna } }; ] [ Type = "dag"; Nodes = [ peter = [ description = [ JobType="Normal"; Executable = "/bin/echo"; Arguments = "Hi! My name is Peter"; StdOutput = "peter.out"; StdError = "peter.err"; OutputSandbox = {"peter.out", "peter.err"}; ]; anna = [ description = [ JobType="Normal"; Executable = "reply.sh"; InputSandbox = {"reply.sh”,root.Nodes.peter.description.OutputSandbox[0]}; StdOutput = "anna.out"; StdError = "anna.err"; OutputSandbox = {"anna.out", "anna.err"}; ]; Dependencies = { { peter, anna } }; ] $ glite-wms-job-submit -a -o JobID dag.jdl

EPIKH Application Porting School, May 2011, Beijing, China MPI Jobs MPI is an acronym for Message Passing Interface MPI has become a very popular approach for writing parallel software/applications especially in the HPC realm In MPI parallel processes are synced or communicate through messages There are two types of messages One process to/from one process (point-to-point) One/all process to/from all/one processes (collective) 10

EPIKH Application Porting School, May 2011, Beijing, China Hello worlds example 11 #include using namespace std; int main(int argc, char* argv[]) { int rank,size; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); cout << "Hello World! I am process " << rank << " out of " << size << "." << endl; MPI_Finalize(); return 0; } #include using namespace std; int main(int argc, char* argv[]) { int rank,size; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); cout << "Hello World! I am process " << rank << " out of " << size << "." << endl; MPI_Finalize(); return 0; } Mpi library functions definitions are included MPI_Comm_rank assigns to each process a unique ID MPI_Comm_size assigns to each process the total number of processes Each process prints the values of its rank and size variables Notice that in an MPI programme variables are not shared. They are unique per process (distributed memory scheme).

EPIKH Application Porting School, May 2011, Beijing, China MPI in gLite There are more than one MPI implementations to choose from mpich, mpich2, lam-mpi, openmpi, mvapich etc gLite supports several MPI implementations through MPI-START Bootstrapping of mpi processes is done via a wrapper script (usually mpi-start.sh) An additional wrapper (mpi-hooks.sh) may be used for pre and post processing within the same job Within the JDL file clearly state mpi-start mechanism will be used by the job 12

EPIKH Application Porting School, May 2011, Beijing, China Hello worlds using gLite (wrappers) 13 #!/bin/bash MY_EXECUTABLE=`pwd`/$1 MPI_FLAVOR=$2 MPI_FLAVOR_LOWER=`echo $MPI_FLAVOR | tr '[:upper:]' '[:lower:]'` eval MPI_PATH=`printenv MPI_${MPI_FLAVOR}_PATH` eval I2G_${MPI_FLAVOR}_PREFIX=$MPI_PATH export I2G_${MPI_FLAVOR}_PREFIX touch $MY_EXECUTABLE export I2G_MPI_APPLICATION=$MY_EXECUTABLE export I2G_MPI_APPLICATION_ARGS= export I2G_MPI_TYPE=$MPI_FLAVOR_LOWER export I2G_MPI_PRE_RUN_HOOK=mpi-hooks.sh export I2G_MPI_POST_RUN_HOOK=mpi-hooks.sh chmod +x $MY_EXECUTABLE $I2G_MPI_START #!/bin/bash MY_EXECUTABLE=`pwd`/$1 MPI_FLAVOR=$2 MPI_FLAVOR_LOWER=`echo $MPI_FLAVOR | tr '[:upper:]' '[:lower:]'` eval MPI_PATH=`printenv MPI_${MPI_FLAVOR}_PATH` eval I2G_${MPI_FLAVOR}_PREFIX=$MPI_PATH export I2G_${MPI_FLAVOR}_PREFIX touch $MY_EXECUTABLE export I2G_MPI_APPLICATION=$MY_EXECUTABLE export I2G_MPI_APPLICATION_ARGS= export I2G_MPI_TYPE=$MPI_FLAVOR_LOWER export I2G_MPI_PRE_RUN_HOOK=mpi-hooks.sh export I2G_MPI_POST_RUN_HOOK=mpi-hooks.sh chmod +x $MY_EXECUTABLE $I2G_MPI_START pre_run_hook () { mpicxx -o ${I2G_MPI_APPLICATION} ${I2G_MPI_APPLICATION}.cpp return 0 } pre_run_hook () { mpicxx -o ${I2G_MPI_APPLICATION} ${I2G_MPI_APPLICATION}.cpp return 0 }

EPIKH Application Porting School, May 2011, Beijing, China Hello worlds using gLite (JDL file) 14 JobType = "Normal"; CpuNumber = 4; Executable = "mpi-start.sh"; Arguments = "hello MPICH2"; StdOutput = "std.out"; StdError = "std.err"; InputSandbox = {"mpi-start.sh","mpi-hooks.sh","src/hello.cpp"}; OutputSandbox = {"std.err","std.out"}; Requirements = Member("MPI-START", other.GlueHostApplicationSoftwareRunTimeEnvironment) && Member("MPICH2", other.GlueHostApplicationSoftwareRunTimeEnvironment); JobType = "Normal"; CpuNumber = 4; Executable = "mpi-start.sh"; Arguments = "hello MPICH2"; StdOutput = "std.out"; StdError = "std.err"; InputSandbox = {"mpi-start.sh","mpi-hooks.sh","src/hello.cpp"}; OutputSandbox = {"std.err","std.out"}; Requirements = Member("MPI-START", other.GlueHostApplicationSoftwareRunTimeEnvironment) && Member("MPICH2", other.GlueHostApplicationSoftwareRunTimeEnvironment); JobType is Normal A new attribute (CpuNumber) must be defined Arguments are picked up by the wrapper script(s) Clearly state that we need mpi-start at runtime and the mpi implementation of our choice

EPIKH Application Porting School, May 2011, Beijing, China That’s all folks… 15