1 UNC-Charlotte’s Grid Computing “Seeds” framework 1 © 2011 Jeremy Villalobos /B. Wilkinson Fall 2011 Grid computing course. Slides10-1.ppt Modification.

Slides:



Advertisements
Similar presentations
MINJAE HWANG THAWAN KOOBURAT CS758 CLASS PROJECT FALL 2009 Extending Task-based Programming Model beyond Shared-memory Systems.
Advertisements

A Dynamic World, what can Grids do for Multi-Core computing? Daniel Goodman, Anne Trefethen and Douglas Creager
Toward using higher-level abstractions to teach Parallel Computing 5/20/2013 (c) Copyright 2013 Clayton S. Ferner, UNC Wilmington1 Clayton Ferner, University.
Types of Parallel Computers
Technical Architectures
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
1 Short Course on Grid Computing Jornadas Chilenas de Computación 2010 INFONOR-CHILE 2010 November 15th - 19th, 2010 Antofagasta, Chile Dr. Barry Wilkinson.
A Grid Parallel Application Framework Jeremy Villalobos PhD student Department of Computer Science University of North Carolina Charlotte.
Slides for Grid Computing: Techniques and Applications by Barry Wilkinson, Chapman & Hall/CRC press, © Chapter 1, pp For educational use only.
1 Short Course on Grid Computing Jornadas Chilenas de Computación 2010 INFONOR-CHILE 2010 November 15th - 19th, 2010 Antofagasta, Chile Dr. Barry Wilkinson.
Parallel Programming Models and Paradigms
1 Teaching Grid Computing across North Carolina and Beyond Dr. Clayton Ferner University of North Carolina Wilmington Dr. Barry Wilkinson University of.
Homework 2 In the docs folder of your Berkeley DB, have a careful look at documentation on how to configure BDB in main memory. In the docs folder of your.
1 Workshop 20: Teaching a Hands-on Undergraduate Grid Computing Course SIGCSE The 41st ACM Technical Symposium on Computer Science Education Friday.
Tcl Agent : A flexible and secure mobile-agent system Paper by Robert S. Gray Dartmouth College Presented by Vipul Sawhney University of Pennsylvania.
1b.1 Types of Parallel Computers Two principal approaches: Shared memory multiprocessor Distributed memory multicomputer ITCS 4/5145 Parallel Programming,
Hands-On Microsoft Windows Server 2008 Chapter 1 Introduction to Windows Server 2008.
SEC(R) 2008 Intel® Concurrent Collections for C++ - a model for parallel programming Nikolay Kurtov Software and Services.
Pattern Programming Barry Wilkinson University of North Carolina Charlotte CCI Friday Seminar Series April 13 th, 2012.
RUNNING PARALLEL APPLICATIONS BEYOND EP WORKLOADS IN DISTRIBUTED COMPUTING ENVIRONMENTS Zholudev Yury.
Austin Java Users Group developerWorks article – µActor Library BARRY FEIGENBAUM, PH. D. 02/26/13.
1b.1 Types of Parallel Computers Two principal approaches: Shared memory multiprocessor Distributed memory multicomputer ITCS 4/5145 Parallel Programming,
1 " Teaching Parallel Design Patterns to Undergraduates in Computer Science” Panel member SIGCSE The 45 th ACM Technical Symposium on Computer Science.
ITCS 4/5145 Cluster Computing, UNC-Charlotte, B. Wilkinson, 2006outline.1 ITCS 4145/5145 Parallel Programming (Cluster Computing) Fall 2006 Barry Wilkinson.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Pattern Programming Barry Wilkinson University of North Carolina Charlotte Computer Science Colloquium University of North Carolina at Greensboro September.
1 " Teaching Parallel Design Patterns to Undergraduates in Computer Science” Panel member SIGCSE The 45 th ACM Technical Symposium on Computer Science.
Parallel Computing CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
ITCS 4/5145 Parallel Programming, UNC-Charlotte, B. Wilkinson, Dec 26, 2012outline.1 ITCS 4145/5145 Parallel Programming Spring 2013 Barry Wilkinson Department.
1 "Workshop 31: Developing a Hands-on Undergraduate Parallel Programming Course with Pattern Programming SIGCSE The 44 th ACM Technical Symposium.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Pattern Programming with the Seeds Framework © 2013 B. Wilkinson/Clayton Ferner SIGCSE 2013 Workshop 31 intro.ppt Modification date: Feb 17,
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 4: Threads.
Selenium server By, Kartikeya Rastogi Mayur Sapre Mosheca. R
NGS computation services: APIs and.
Constructing a system with multiple computers or processors 1 ITCS 4/5145 Parallel Programming, UNC-Charlotte, B. Wilkinson. Jan 13, 2016.
Suzaku Pattern Programming Framework (a) Structure and low level patterns © 2015 B. Wilkinson Suzaku.pptx Modification date February 22,
PERFORMANCE OF THE OPENMP AND MPI IMPLEMENTATIONS ON ULTRASPARC SYSTEM Abstract Programmers and developers interested in utilizing parallel programming.
Pattern Programming PP-1.1 ITCS 4/5145 Parallel Programming UNC-Charlotte, B. Wilkinson, August 29A, 2013 PatternProg-1.
Pattern Programming Seeds Framework Notes on Assignment 1 PP-2.1 ITCS 4/5145 Parallel Programming UNC-Charlotte, B. Wilkinson, August 30, 2012 PatternProg-2.
Introduction to Operating Systems Concepts
A Parallel Communication Infrastructure for STAPL
Kai Li, Allen D. Malony, Sameer Shende, Robert Bell
MASS Java Documentation, Verification, and Testing
Dr. Barry Wilkinson University of North Carolina Charlotte
Parallel Programming By J. H. Wang May 2, 2017.
Pattern Parallel Programming
Constructing a system with multiple computers or processors
NGS computation services: APIs and Parallel Jobs
Many-core Software Development Platforms
Using compiler-directed approach to create MPI code automatically
Dr. Barry Wilkinson © B. Wilkinson Modification date: Jan 9a, 2014
Pattern Parallel Programming
All-to-All Pattern A pattern where all (slave) processes can communicate with each other Somewhat the worst case scenario! ITCS 4/5145 Parallel Computing,
Programming with Parallel Design Patterns
B. Wilkinson/Clayton Ferner Seeds.ppt Modification date August
Constructing a system with multiple computers or processors
Constructing a system with multiple computers or processors
Pipeline Pattern ITCS 4/5145 Parallel Computing, UNC-Charlotte, B. Wilkinson, 2012 slides5.ppt Oct 24, 2013.
Pipelined Pattern This pattern is implemented in Seeds, see
Constructing a system with multiple computers or processors
© B. Wilkinson/Clayton Ferner SIGCSE 2013 Workshop 31 session2a
Dr. Barry Wilkinson University of North Carolina Charlotte
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
By Brandon, Ben, and Lee Parallel Computing.
Introduction to parallelism and the Message Passing Interface
Monte Carlo Methods A so-called “embarrassingly parallel” computation as it decomposes into obviously independent tasks that can be done in parallel without.
Pipeline Pattern ITCS 4/5145 Parallel Computing, UNC-Charlotte, B. Wilkinson, 2012 slides5.ppt March 20, 2014.
Pipeline Pattern ITCS 4/5145 Parallel Computing, UNC-Charlotte, B. Wilkinson slides5.ppt August 17, 2014.
Pattern Programming Seeds Framework Workpool Assignment 1
Presentation transcript:

1 UNC-Charlotte’s Grid Computing “Seeds” framework 1 © 2011 Jeremy Villalobos /B. Wilkinson Fall 2011 Grid computing course. Slides10-1.ppt Modification date: Nov 16, 2011 Acknowledgment The “Seeds” framework was developed by: Jeremy Villalobos, BS, MS, PhD (UNC-Charlotte) as part of his PhD work at UNC-Charlotte. The following slides based upon materials provided by Jeremy Villalobos.

Challenges in Running Parallel Applications on The Grid Heterogeneity Connectivity Security Programmability Performance and Scalability 2 The Seeds framework particularly addresses programmability and scalability

MPI and OpenMP OpenMP (Shared Memory) Easy to program High performance Does not scale MPI (Distributed Memory) Hard to program High performance Can scale 3

“Seeds Distributed Computing Framework Developed at UNC- Charlotte by Jeremy Villalobos Raises level of programming for ease of programmability based upon pattern programming. Programmer first identifies an appropriate parallel pattern or patterns to solve the problem - the patterns in this context being for example workpool, pipeline, synchronous, mesh/stencil, …. 4 Workpool pattern

“Seeds Distributed Computing Framework Programmer then simply implements certain Java interface methods, principally:  data diffuse  computation, and  data gather and framework automatically distributes tasks across distributed computers and processor cores. Key aspects  Programmer does not write programs at low level of message passing MPI or thread-based APIs (not initially anyway).  Patterns implemented automatically and code is executed on a distributed computing platform. 5

“Skeletons” and “Patterns” Note. In the literature, term “skeleton” sometimes used to describe “patterns”, especially directed acyclic graphs with a source, a computation, and a sink. 6

Skeletons Skeletons are: Functional programming constructs, Stateless Data-parallel Resemble trees 7

Pattens Patterns are: State-full, Synchronous loop-parallel Also data-parallel 8

Skeletons/Patterns A dvantages Implicit parallelization Avoid deadlocks Avoid race conditions Reduction in code size [3] Abstracts the Grid/Cloud environment Disadvantages Takes away some of the freedom from the user programmer New approach to learn Performance told (5% for skeletons on top of MPI [PASM]) 9

Hands-on session Deploy a Seeds workpool skeleton to compute  using Monte Carlo method – all code given. Just local computer used for this session although remote computers could be used. Needs Seeds installed. For session, will also need Java, ant, and Eclipse installed First prepared ant script used to deploy workpool Then Eclipse IDE used to run same program Later Eclipse example for numerical integration - code partially given. Will need to fill in missing parts. 10

11 Basis on Monte Carlo calculations is use of random selections In this case, circle formed with a square Points within square chosen randomly Fraction of points within circle =  /4  calculation

12 Can limit calculation to one quadrant and get same result Actually computes an integral

Seed Skeletons/ Patterns 13

14 Code Initial part package edu.uncc.grid.example.workpool; import java.util.Random; import java.util.logging.Level; import edu.uncc.grid.pgaf.datamodules.Data; import edu.uncc.grid.pgaf.datamodules.DataMap; import edu.uncc.grid.pgaf.interfaces.basic.Workpool; import edu.uncc.grid.pgaf.p2p.Node; public class MonteCarloPiModule extends Workpool { private static final long serialVersionUID = 1L; private static final int DoubleDataSize = 1000; double total; int random_samples; Random R; public MonteCarloPiModule() { R = new Random(); public void initializeModule(String[] args) { total = 0; // reduce verbosity for logging information Node.getLog().setLevel(Level.WARNING); // set number of random samples random_samples = 3000; }

15 Compute method public Data Compute(Data data) { // input gets the data produced by DiffuseData() DataMap input = (DataMap )data; // output will emit the partial answers done by this method DataMap output = new DataMap (); Long seed = (Long) input.get("seed"); // get random seed Random r = new Random(); r.setSeed(seed); Long inside = 0L; for (int i = 0; i < DoubleDataSize ; i++) { double x = r.nextDouble(); double y = r.nextDouble(); double dist = x * x + y * y; if (dist <= 1.0) { ++inside;// = 1L; } output.put("inside", inside);// store partial answer to return //to GatherData() return output; }

Diffuse and gather methods public Data DiffuseData(int segment) { DataMap d =new DataMap (); d.put("seed", R.nextLong()); return d; // returns a random seed for each job unit } public void GatherData(int segment, Data dat) { DataMap out = (DataMap ) dat; Long inside = (Long) out.get("inside"); total += inside; // aggregate answer from all the worker nodes. } public double getPi() { // returns value of pi based on the job done by all the workers double pi = (total / (random_samples * DoubleDataSize)) * 4; return pi; } public int getDataCount() { return random_samples; } 16

Running example using ant script Get prepared package PiApprox.zip Contains everything needed:  Seeds  P code  Numerical integration code Run ant script Will compile all software and run PiApprox program 17

Using Eclipse Advantage of using the ant script first is everything is deployed (seed folder, etc.) 18

Additional Features of Framework 19

Seeds Specifications Topology: Network Overlay/Hybrid Network Connectivity: Direct, Through NAT, and Shared memory Programming Style: Skeleton/Pattern Based Parallel Memory Management: Message- passing with use of shared memory if available Self-deployment: Using Java Cog Kit and Globus Load-balancing: expected on the patterns 20

Seeds Development Layers Basic Intended for programmers that have basic parallel computing background Based on Skeletons and patterns Advanced: Used to add or extend functionality like: Create new patterns Optimize existing patterns or Adapt existing pattern to non-functional requirements specific to the application Expert: Used to provide basic services: Deployment Security Communication/Connectivity Changes in the environment 21

Seeds Development Layers Basic Intended for programmers that have basic parallel computing background Based on Skeletons and patterns Advanced: Used to add or extend functionality like: Create new patterns Optimize existing patterns or Adapt existing pattern to non-functional requirements specific to the application Expert: Used to provide basic services: Deployment Security Communication/Connectivity Changes in the environment 22

Nested Pattern Structures It may be that a single pattern will not suffice for a larger problem. Framework offers nested patterns and facilities to break a single pattern into multiple patterns. 23

Pattern Operators Also have pattern operators that can take two patterns and merge them into a single pattern. 24 Adding a Stencil (left) to an all-to-all (center) to produce hybrid pattern (right).

Some results 25 Bubble sort using a pipeline on shared memory with Seeds framework Pipeline pattern for Bubblesort, tested on the Dell 900 server with four quad-core processors and 64GB shared memory (coit-grid05.uncc.edu). Static test, - program was executed using a fixed number of cores as given. Dynamic tests -- dynamically change the number of cores during execution to improve performance.

Questions 26