Chapel Chao, Dave, Esteban. Overview High-Productivity Computing Systems (HPCS, Darpa) High-Productivity Computing Systems (HPCS, Darpa) Cray’s Cascade.

Slides:



Advertisements
Similar presentations
Etter/Ingber Engineering Problem Solving with C Fundamental Concepts Chapter 4 Modular Programming with Functions.
Advertisements

Data Structures.
MATH 224 – Discrete Mathematics
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2009 Potential Languages of the Future Chapel,
Procedures and Control Flow CS351 – Programming Paradigms.
Kernighan/Ritchie: Kelley/Pohl:
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Chapel: The Cascade High Productivity Language Ting Yang University of Massachusetts.
Chapel: Features Brad Chamberlain Cray Inc. CSEP 524 May 20, 2010.
Revisiting a slide from the syllabus: CS 525 will cover Parallel and distributed computing architectures – Shared memory processors – Distributed memory.
Lesson 19 Recursion CS1 -- John Cole1. Recursion 1. (n) The act of cursing again. 2. see recursion 3. The concept of functions which can call themselves.
Transaction Processing Lecture ACID 2 phase commit.
CS 330 Programming Languages 10 / 16 / 2008 Instructor: Michael Eckmann.
1 Programming for Engineers in Python Autumn Lecture 5: Object Oriented Programming.
Principles of Object-Oriented Software Development The language Eiffel.
1 Chapter 4 The Fundamentals of VBA, Macros, and Command Bars.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 18 Program Correctness To treat programming.
An Introduction to Chapel Cray Cascade’s High-Productivity Language compiled for Mary Hall, February 2006 Brad Chamberlain Cray Inc. compiled for Mary.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
PARALLEL PROGRAMMING ABSTRACTIONS 6/16/2010 Parallel Programming Abstractions 1.
Python quick start guide
1 Chapter 9 Spaces with LINDA. 2 Linda Linda is an experimental programming concept unlike ADA or Occam which are fully developed production-quality languages.
MT311 Java Application Programming and Programming Languages Li Tak Sing ( 李德成 )
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 19: Recursion.
Parallel Programming Models Jihad El-Sana These slides are based on the book: Introduction to Parallel Computing, Blaise Barney, Lawrence Livermore National.
Compilation Technology SCINET compiler workshop | February 17-18, 2009 © 2009 IBM Corporation Software Group Coarray: a parallel extension to Fortran Jim.
12/1/98 COP 4020 Programming Languages Parallel Programming in Ada and Java Gregory A. Riccardi Department of Computer Science Florida State University.
Final Review Dr. Bernard Chen Ph.D. University of Central Arkansas Spring 2010.
Lecturer: Dr. AJ Bieszczad Chapter 11 COMP 150: Introduction to Object-Oriented Programming 11-1 l Basics of Recursion l Programming with Recursion Recursion.
1 Programming Language History and Evolution In Text: Chapter 2.
Presented by High Productivity Language and Systems: Next Generation Petascale Programming Wael R. Elwasif, David E. Bernholdt, and Robert J. Harrison.
Presented by High Productivity Language Systems: Next-Generation Petascale Programming Aniruddha G. Shet, Wael R. Elwasif, David E. Bernholdt, and Robert.
1 C++ Plus Data Structures Nell Dale Chapter 7 Programming with Recursion Modified from the slides by Sylvia Sorkin, Community College of Baltimore County.
10/16/2015IT 3271 All about binding n Variables are bound (dynamically) to values n values must be stored somewhere in the memory. Memory Locations for.
Computer Science Department Data Structure & Algorithms Lecture 8 Recursion.
Review Introduction to Searching External and Internal Searching Types of Searching Linear or sequential search Binary Search Algorithms for Linear Search.
1 © 2002, Cisco Systems, Inc. All rights reserved. Arrays Chapter 7.
Concurrent Aggregates (CA) Andrew A. Chien and William J. Dally Presented by: John Lynn and Ryan Wu.
JavaScript Syntax and Semantics. Slide 2 Lecture Overview Core JavaScript Syntax (I will not review every nuance of the language)
8 1 Chapter 8 Advanced SQL Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
David Stotts Computer Science Department UNC Chapel Hill.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Fortress John Burgess and Richard Chang CS691W University of Massachusetts Amherst.
Using a simple Rendez-Vous mechanism in Java
Runtime Organization (Chapter 6) 1 Course Overview PART I: overview material 1Introduction 2Language processors (tombstone diagrams, bootstrapping) 3Architecture.
Elementary Data Organization. Outline  Data, Entity and Information  Primitive data types  Non primitive data Types  Data structure  Definition 
Lecture 7. Solution by Substitution Method T(n) = 2 T(n/2) + n Substitute n/2 into the main equation 2T(n/2) = 2(2(T(n/4)) + n/2) = 4T(n/4) + n And T(n)
Computer Programming I Module This lesson illustrates how to code for arrays used to store data and how to display your data in listboxes.
Orca A language for parallel programming of distributed systems.
Chapter 11Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 11 l Basics of Recursion l Programming with Recursion Recursion.
 In computer programming, a loop is a sequence of instruction s that is continually repeated until a certain condition is reached.  PHP Loops :  In.
1 BİL 542 Parallel Computing. 2 Message Passing Chapter 2.
Chapter 6 Recursion. Solving simple problems Iteration can be replaced by a recursive function Recursion is the process of a function calling itself.
 In the java programming language, a keyword is one of 50 reserved words which have a predefined meaning in the language; because of this,
Working with Loops, Conditional Statements, and Arrays.
Rich Internet Applications 2. Core JavaScript. The importance of JavaScript Many choices open to the developer for server-side Can choose server technology.
1. Searching The basic characteristics of any searching algorithm is that searching should be efficient, it should have less number of computations involved.
Language Find the latest version of this document at
3/12/2013Computer Engg, IIT(BHU)1 OpenMP-1. OpenMP is a portable, multiprocessing API for shared memory computers OpenMP is not a “language” Instead,
Programming Constructs Notes Software Design & Development: Computational Constructs, Data Types & Structures, Algorithm Specification.
Flow Control in Imperative Languages. Activity 1 What does the word: ‘Imperative’ mean? 5mins …having CONTROL and ORDER!
© Oxford University Press All rights reserved. Data Structures Using C, 2e Reema Thareja.
16 Exception Handling.
Computer Engg, IIT(BHU)
Computer Science Core Concepts
Chapter 9: Value-Returning Functions
Who Wants to be an Equationaire?. Who Wants to be an Equationaire?
The structure of programming
Introduction to Programming
Basic Programming Concepts
The Ohio State University
Presentation transcript:

Chapel Chao, Dave, Esteban

Overview High-Productivity Computing Systems (HPCS, Darpa) High-Productivity Computing Systems (HPCS, Darpa) Cray’s Cascade High Productivity Language (CHaPeL) Cray’s Cascade High Productivity Language (CHaPeL) Programmability Programmability Performance Performance Portability Portability Robustness Robustness Want to solve the “Parallel Programming Problem” Want to solve the “Parallel Programming Problem” Simplify initial creation of parallel programs Simplify initial creation of parallel programs Support evolution of programs to high performance, production-quality code Support evolution of programs to high performance, production-quality code Emphasize generality Emphasize generality Motivating features: Motivating features: Multithreaded programming Multithreaded programming Locality-aware programming Locality-aware programming Object-oriented programming Object-oriented programming Generic programming and type inference Generic programming and type inference

Key Features Abstractions for data and task parallelism Abstractions for data and task parallelism Data: domains, arrays, iterators Data: domains, arrays, iterators Task: cobegin, atomic transactions, synchronization variables Task: cobegin, atomic transactions, synchronization variables Global view of computation, data Global view of computation, data

Domains

Cobegin Starts several statements at once, blocks until they finish Starts several statements at once, blocks until they finish 1. Quicksort(low, high, data){ 2. if( …/* too small */){ 3. … // sort here 4. return; 5. } 6. pivot = computePivot(lo, hi, data); 7. cobegin { //below happen in parallel 8. Quicksort(lo, pivot, data); 9. Quicksort(pivot, high, data); 10. } 11. // blocks here until both Quicksort calls above finish 12. }

Atomic Transactions “atomic” statements like database transaction If two start at once and collide, one rolled back and retried Occur as if rest of the program were suspended atomic { newnode.next = insertpt; newnode.prev = insertpt.prev; insertpt.prev.next = newnode; insertpt.prev = newnode; }

Synchronization Single assignment variables – block on access if not assigned Single assignment variables – block on access if not assigned function Tree.sum() { if(is_leaf) return value; single var x ; begin x = left.sum; var y = right.sum; return x+y; } sync variables – only have one value at a time sync variables – only have one value at a time Read consumes value, makes variable undefined Read consumes value, makes variable undefined If variable undefined, reads block If variable undefined, reads block Write creates value, defines variable Write creates value, defines variable If variable defined, writes block If variable defined, writes block

Serial Statement serial ; Allows serialization of parallel statements under certain conditions class Tree { var is_leaf : boolean; var left : Tree; var right : Tree; } iterator Tree.walk : Tree { if(is_leaf) yield(this); else serial(height <= 10) cobegin { yield(left.walk); yield(right.walk); } }

Generic Programming Features Can have type variables and parameters Can have type variables and parameters class Stack { type t; var buffsize:integer= 128; var data: [1..buffsize] t; functiontop(): t { … }; } “Type query” vars function copyN(data: [?D] ?t; n: integer): [D] t { var newcopy: [D] t; forall i in1..n do newcopy(i) = data(i); return newcopy; } Elided types function inc(val): { var tmp = val; return tmp + 1; }

Locales A locale is a unit of storage and processing A locale is a unit of storage and processing Specify at run-time the number of locales Specify at run-time the number of locales Can specify at which locale objects are stored, computations performed Can specify at which locale objects are stored, computations performed Can specify locale by a variable Can specify locale by a variable 1. on TaskLocalA do taskA() Can specify locale by data location Can specify locale by data location forall i in D on(a(i)) do...

References Slides heavily influenced by Slides heavily influenced by PCRC.pdf PCRC.pdf PCRC.pdf PCRC.pdf pdf pdf pdf pdf PC.pdf PC.pdf PC.pdf PC.pdf