Distributed computing Grid & HPC services @ AUTH GR-01-AUTH CLUSTER European Grid Infastrure job submission
CPU Cores: 8 RAM: 16GB Storage: 1TB Desktop
CPU Cores: 128 RAM: 512GB Storage: 5TB Cluster
CPU Cores: 6000000 RAM: 20TB Storage: 100PB Grid
GRID Grid Computing -> Electrical Power Grid Accessing computer power would be as simple as accessing electrical power
1999 Μαζική ροή και ανάλυση πειραματικών δεδομένων LHC @ CERN The goal was to provide global computing resources to store, distribute and analyse the ~25Petabytes of data annually generated by the Large Hadron Collider(LHC) at CERN on the Franco-Swiss border. 2001 European DataGrid Project έρευνα και ανάπτυξη τεχνολογιών Grid computing
2004 Enabling Grid for E-sciencE παροχή υπολογιστικών πόρων on demand σε επιστήμονες ανά τον κόσμο και συμμετοχή μεγαλύτερου εύρους υπολογιστικών κλάδων. Στο τέλος του project 13 εκατ. jobs/μήνα σε 300 data centers
2010... European Grid Infastructure - EGI.eu οργανισμός για τη μακροχρόνια ανάπτυξη και διατήρηση της υποδομής και των υπηρεσιών του Grid Η υποδομή επεκτείνεται περιλαμβάνοντας και άλλους οργανισμούς: BalticGrid SEEGrid Nordic DataGrid
...2014 EGI-InSPIRE συνεργασία 50 ιδρυμάτων σε περισσότερες από 40 χώρες συντονισμός και διατήρηση της πανευρωπαϊκής υποδομής για την υποστήριξη επιστημονικών κοινοτήτων και διεθνών συνεργασιών
European Grid Infastructure
HellasGrid - NGI_GRNET
Scientific Computing Office it.auth Data Center
Number of CPUs since 2002
Storage Capacity
MPI benchmark
Desktop
This is where the grid can take us:
Use Cases meteorology & climatology Bio-informatics civil-engineering life sciences astronomy biochemistry computer science mathematics linguistics
Aristotle Racing Team (ART) H φοιτητική ομάδα ART χρησιμοποίησε την Υπολογιστική Συστοιχία του ΑΠΘ κατά τη σχεδίαση του αγωνιστικού μονοθεσίου ART-15 για το διαγωνισμό Formula Student.
ART-14 12 προσομοιώσεις με 16 cores Σχεδιάστηκε υπολογιστικό πλέγμα με 4.500.000 κελιά. Συνολικός πραγματικός χρόνος (walltime): 25.87 ώρες Συνολικός υπολογιστικός χρόνος προσομοίωσης (cpu time): 15 ημέρες+8.4 ώρες.
ART-15 80 προσομοιώσεις με 4-28 cores Σχεδιάστηκε υπολογιστικό πλέγμα με 20 εκατομμύρια κελιά. Συνολικός πραγματικός χρόνος (walltime): 20 ημέρες+16 ώρες Συνολικός υπολογιστικός χρόνος προσομοίωσης (cpu time): 279 ημέρες+5 ώρες.
PARALLEL COMPUTING Embarrassingly parallel (parametric studies)- Independent Parallel tasks Multiple processes concurrently (threads, OpenMP, MPI, Charm++ etc)
attack the computational problem A simple task is slow (+scheduling overhead) Perform many tasks simultaneously
functional partitioning data partitioning (domain decomposition)
Shared Memory architecture OpenMP threads All CPUs access the same memory Multicore programming Very fast
Distributed Memory Message Passing Interface (MPI) Each CPU has its own memory Message Passing Communication overhead limits performance
clone git repository $ git clone https://gitlab.afroditi.hellasgrid.gr/scc helpdesk/thmmy exercises 2014.git show terminal
Use Git for source control create a new local repository $ git init check out a remote repository $ git clone username@host:/path/to/repository $ git add <filename> $ git commit m "Commit message" $ git push $ git pull add files commit changes upload chages to remote repository fetch changes to your working copy
log into User interface $ ssh ui.afroditi.hellasgrid.gr l username
...for Windows use putty manual
batch job A sequence of commands to be executed without manual intervention Submitted for execution as a single unit
submit.sh #PBS N a.out #PBS q auth #PBS j oe #PBS l nodes=1 cd $PBS_O_WORKDIR pwd date hostname
PBS directives #PBS N JobName #PBS j oe directs that the standard output and error streams are to be merged #PBS q auth Specify the queue #PBS l resource_list Defines the resources that are required by the job #PBS l mem=512mb Specify the maximum amount of physical memory required. #PBS l nodes=1:ppn=1 Specify the number of nodes requested and the number of processors per node. man qsub
qsub / qstat #submit batch job $ qsub submit.sh #check job status $ qstat manual show terminal
Job States C Job is completed after having run. E Job is exiting after having run. Q job is queued. R job is running. W job is waiting to be executed. To cancel a job the command qdel is used, followed by the job identifier: $ qdel 3766684
OpenMP hello example
$ g++ fopenmp hello.c o chello compilation place your code in $SCRATCHDIR compile using the fopenmp flag show terminal
job submission submission script hello.pbs #!/bin/bash #PBS q auth #PBS N omp hello #PBS j oe #PBS l nodes=1:ppn=3 # Change directory to the one used to submit the job cd $PBS_O_WORKDIR # Discover from within the job the number of allocated cores export OMP_NUM_THREADS=`cat $PBS_NODEFILE wc l` # Execute/Run./chello submit job $ qsub hello.pbs check job status $ qstat
Matrix Multiplication
serial case compile using the Makefile CXX=g++ CXXFLAGS= O0 TARGETS=direct all: $(TARGETS) direct: direct.cpp $(CXX) $(CXXFLAGS) $^ o $@ clean: rm f $(TARGETS) $ make show terminal Walltime : 8.25 seconds
OpenMP compile using the Makefile 4 OpenMP threads #!/bin/bash #PBS q auth #PBS N omp mm #PBS j oe #PBS l nodes=1:ppn=4 cd $PBS_O_WORKDIR export OMP_NUM_THREADS=$(cat $PBS_NODEFILE wc l)./mm
...OpenMP submit the job using mm.pbs show terminal Walltime : 4.17 seconds
MPI compile using the Makefile submit the job using mm.pbs 5 MPI processes #!/bin/bash #PBS q auth #PBS N mpi mm #PBS j oe #PBS l nodes=1:ppn=5 cd $PBS_O_WORKDIR export NP=$(cat $PBS_NODEFILE wc l) export I2G_MPI_TYPE=mpich2 export I2G_MPI_APPLICATION=mm $I2G_MPI_START show terminal Walltime : 2.06 seconds
#PBS l nodes=2:ppn=4 8 MPI processes (4procs per node) show terminal Walltime : 14.40 seconds
Use the cluster for Matlab Ansys Cadence Octave
CUDA Tesla C2075 (14) Multiprocessors x ( 32) CUDA Cores/MP: 448 CUDA Cores
OpenACC GPU programming with a more simple, fast and portable way! #pragma acc kernels copyin(a,b) copyout(c) for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) { for (k = 0; k < SIZE; k++) { c[i][j] += a[i][k] * b[k][j]; } } } OpenACC API provides describes a collection of compiler directives that allow you to accelarate your scientific code.
Using the Grid...for even more jobs!
Grid components User Interface or UI Workload management system or WMS Compute element or CE Worker node or WN Storage element or SE
User Interface (UI) διεπαφή για πρόσβαση στους πόρους του Grid
Workload Management System (WMS) διαμοιράζει και διευθύνει τις διεργασίες στους υπολογιστικούς και αποθηκευτικούς πόρους που είναι διαθέσιμοι στο Grid εύρεση των κατάλληλων πόρων για τις εργασίες υποβολή εργασιών στους υπολογιστικούς πόρους Logging και book keeping διαχείριση των αντιπροσωπευτικών στοιχείων ταυτοποίησης
Compute Element (CE) Αναλαμβάνει την διαχείριση ενός cluster μέσω ενός scheduler και χρήση job queues.
Computing Resource Execution and Management (CREAM) Service που αναλαμβάνει την λειτουργία της διαχείρισης εργασιών σε ένα CE. Δέχεται αιτήματα για υποβολή εργασιών και άλλες εντολές διαχείρισης εργασιών ( ακύρωση, επίβλεψη κατάστασης...) Μπορεί να δέχεται αιτήματα από τον WMS ή απευθείας από έναν χρήστη.
Portable Batch System (PBS/Torque) Κατανέμει τις εργασίες στους διαθέσιμους υπολογιστικούς πόρους.
Scheduler - MAUI Policy mechanism για την διαχείριση των διαθέσιμων πόρων του συστήματος. Συνεργάζεται με το batch system για να ελέγξει την διανομή των πόρων και να επιβάλει policies όσον αφορά στην χρήση του.
Worker Node (WN) Υπολογιστικός κόμβος όπου τελικά τρέχουν οι εργασίες που έχουν υποβληθεί και δρομολογηθεί σε ένα site.
Storage Element (SE) Αποτελούν τους αποθηκευτικούς πόρους του Grid. Απλοί servers - διαχείριση δεδομένων μέσω GridFTP (Μία Grid έκδοση του FTP που υποστηρίζει Grid authentication) Σύνθετα συστήματα μαζικού αποθηκευτικού χώρου - διαχείρισή δεδομένων μέσω του Storage Resource Manager (SRM)
Job Description Language JDL --> ASCII text file The user needs to provide: A job description -What program? What data? Input Data --> Executable --> Output Data -Any requirements on OS, installed software? -Any requirements on computing or memory resources? ATTRIBUTE = expression ; # --> comments ; --> seperator "strings" logical expressions ( &&,,! )
a simple.jdl file Executable = "/bin/echo"; Arguments = "hello"; StdOutput = "std.out"; StdError = "std.err"; OutputSandbox = {"std.err","std.out"}; hello.jdl wiki
job management commands $ glite wms job list match a job.jdl $ glite wms job submit a o id job.jdl $ glite wms job status i id $ glite wms job output i id dir results $ glite wms job cancel i id $ module load glite find resources submit the job get the status get your results cancel the job or...
Submit hello.jdl to the Grid $ glite wms job submit a o id hello.jdl show terminal
job types Normal (serial or parallel jobs) Collection Parametric DAG (Directly Acyclic Graph)
Parametric job param.jdl JobType = "Parametric"; Executable = "param_run.sh"; Arguments = "_PARAM_"; StdOutput = "std_param_.out"; StdError = "std_param_.err"; Parameters = 10; ParameterStart = 1; ParameterStep = 1; InputSandbox = {"param_run.sh"}; OutputSandbox = {"std_param_.out","std_param_.err" }; #!/bin/bash /bin/echo $1 script - param_run.sh Parametric Job Submission Easy management of parametric jobs
job submission submit parametric job to the Grid $ glite wms job submit a o id param.jdl check status $ glite wms parametric job status n i id.txt show terminal
Grid wiki: http://wiki.grid.auth.gr it.auth.gr: http://www.it.auth.gr/el/services/scicomp contact us! scientific-computing@auth.gr