X10 X10 Jonathan Lee Jonathan Lee Daniel Lee Daniel Lee What is - - PowerPoint PPT Presentation

x10 x10
SMART_READER_LITE
LIVE PREVIEW

X10 X10 Jonathan Lee Jonathan Lee Daniel Lee Daniel Lee What is - - PowerPoint PPT Presentation

X10 X10 Jonathan Lee Jonathan Lee Daniel Lee Daniel Lee What is X10? What is X10? Programming language designed for high- Programming language designed for high- performance, high-productivity performance, high-productivity


slide-1
SLIDE 1

X10 X10

Jonathan Lee Jonathan Lee Daniel Lee Daniel Lee

slide-2
SLIDE 2

What is X10? What is X10?

  Programming language designed for high-

Programming language designed for high- performance, high-productivity performance, high-productivity computing on high-end computers computing on high-end computers

  Development at IBM Research

Development at IBM Research

  Object oriented (OO) Language

Object oriented (OO) Language

  Intended to have simple and clear

Intended to have simple and clear semantics semantics

slide-3
SLIDE 3

Key Design Decisions Key Design Decisions

  Introduce a new programming language

Introduce a new programming language

  Use the Java programming language as a

Use the Java programming language as a starting point starting point

  Added a

Added a few new things, took away some old few new things, took away some old things things

  Uses partitioned global address space

Uses partitioned global address space (PGAS) model (PGAS) model

slide-4
SLIDE 4

Programming Model: Places Programming Model: Places

  Collection of data objects and activities (think of

Collection of data objects and activities (think of as threads) that operate on the data as threads) that operate on the data

  Can think of as a

Can think of as a “ “virtual shared-memory multi- virtual shared-memory multi- processor processor” ”

  Every X10 activity runs in a place

Every X10 activity runs in a place

  Can get reference to the current place with the

Can get reference to the current place with the constant constant here

here

  Places are ordered and the methods

Places are ordered and the methods next()

next() and

and

prev prev() () can be used to cycle through them

can be used to cycle through them

slide-5
SLIDE 5

Programming Model: PGAS Programming Model: PGAS

  X10 uses PGAS (Partitioned Global

X10 uses PGAS (Partitioned Global Address Space) Address Space)

  Each place has

Each place has “ “partition partition” ” of address

  • f address

space space

  Scalar objects are allocated completely at a

Scalar objects are allocated completely at a single place single place

  Elements of an array may be distributed

Elements of an array may be distributed across multiple places across multiple places

slide-6
SLIDE 6

X10 Activities, Places, PGAS X10 Activities, Places, PGAS Diagram Diagram

X10 activities, places, and PGAS

slide-7
SLIDE 7

Programming Construct: Programming Construct: async async

  Can create asynchronous activities using

Can create asynchronous activities using async async statement statement

  async

async (P) S (P) S

  Spawns an activity at the place designated by

Spawns an activity at the place designated by P to execute S P to execute S

  Creates parallelism!

Creates parallelism!

  Can be thought of as extremely

Can be thought of as extremely lightweight threads lightweight threads

slide-8
SLIDE 8

Async Async Example Example

System.out. System.out.println println(1); (1); async async (place.next()) { (place.next()) { System.out. System.out.println println(2); (2); } } System.out. System.out.println println(3); (3);

slide-9
SLIDE 9

Data Structures: Region Data Structures: Region

  Regions:

Regions: Just a collection of points Just a collection of points

  Simple contiguous ranges: [0:N]

Simple contiguous ranges: [0:N]

  Multidimensional blocks: [0:N,0:M]

Multidimensional blocks: [0:N,0:M]

  Can create arbitrary regions of any dimension

Can create arbitrary regions of any dimension

slide-10
SLIDE 10

Data Structures: Region Data Structures: Region

  Region Operations:

Region Operations:

  Union:

Union: R1 || R2

R1 || R2

  Intersection:

Intersection: R1 && R2

R1 && R2

  Set Difference:

Set Difference: R1 - R2

R1 - R2

slide-11
SLIDE 11

Data Structures: Distributions Data Structures: Distributions

  Distributions: Maps

Distributions: Maps each point in a region each point in a region to a specific place to a specific place

  Built in

Built in Distributions: Distributions:

  Constant:

Constant: all points map to a single place all points map to a single place

  Block: contiguous sets of

Block: contiguous sets of points equally divided points equally divided among places among places

  Cyclic: Every Nth point

Cyclic: Every Nth point assigned to a place assigned to a place

slide-12
SLIDE 12

Data Structures: Distributions Data Structures: Distributions

  Distribution Operations:

Distribution Operations:

  Also include:

Also include:

  Range Restriction:

Range Restriction: D | R D | R

  Place Restriction:

Place Restriction: D | D | P P

  Indexing for places:

Indexing for places: D[p] D[p]   Example: Block Star Distribution

Example: Block Star Distribution

Distribution d = dist.factory.block([0,N],places); Distribution d = dist.factory.block([0,N],places); Distribution Distribution blockstar blockstar = [0:-1,0:-1]->here; = [0:-1,0:-1]->here; for (point p : d) { for (point p : d) { blockstar blockstar = = blockstar blockstar || [0:M]->d[i]; || [0:M]->d[i]; } }

slide-13
SLIDE 13

Data Structures: Arrays Data Structures: Arrays

  X10 Arrays:

X10 Arrays:

  Takes a distribution as a parameter

Takes a distribution as a parameter to assign data to to assign data to places places

  Example:

Example: double[.]

double[.] data = new double[[0:N]->here]; data = new double[[0:N]->here];

  Built in and user defined functions

Built in and user defined functions support support

  Scans

Scans

  Overlays

Overlays

  Reductions

Reductions

  Lifting

Lifting

  Initialization

Initialization

slide-14
SLIDE 14

Programming Construct: for Programming Construct: for

  for (point p : R) S

for (point p : R) S

  Pointwise

Pointwise for for sequential iteration by a single for for sequential iteration by a single activity activity

  Equivalent to

Equivalent to Java Java foreach foreach loops loops

ν ν Example:

Example:

Region r = Region r = [0:N]; [0:N]; int int[.] x = new [.] x = new int int[ [r- r->here]; >here]; for (point for (point p(i) : r) { p(i) : r) { x[p] = x[p] = i * 2; i * 2; } }

slide-15
SLIDE 15

Programming Construct: Programming Construct: foreach foreach

  foreach

foreach (point p : R) S (point p : R) S

  For parallel iteration in a single place

For parallel iteration in a single place

ν ν ≡

≡ for (point p : R)

for (point p : R) async async (here) { S } (here) { S }

ν ν Example:

Example:

Region r = Region r = [0:N]; [0:N]; int int[.] x = new [.] x = new int int[ [r- r->here]; >here]; foreach foreach (point (point p(i) : r) { p(i) : r) { x[p] = x[p] = i * 2; i * 2; } }

slide-16
SLIDE 16

Programming Construct: Programming Construct: ateach ateach

  ateach

ateach (point p : D) S (point p : D) S

  For parallel iteration across multiple places

For parallel iteration across multiple places

ν ν ≡

≡ for (point p : D)

for (point p : D) async async (D[p]) { S } (D[p]) { S }

ν ν Example:

Example:

Distribution d = Distribution d = [0:4]->place(0) || [0:4]->place(0) || [5:9]->place(1); [5:9]->place(1); int int[.] x = new [.] x = new int int[d]; [d]; ateach ateach (point (point p(i) : r) { p(i) : r) { x[p] = x[p] = i * 2; i * 2; } }

slide-17
SLIDE 17

Programming Construct: future Programming Construct: future

 

f = future(P) E f = future(P) E

  Spawns an activity at place P to execute expression E

Spawns an activity at place P to execute expression E

  When

When parent activity wants the result of E, it executes parent activity wants the result of E, it executes a a f.force()

f.force()

  Parent activity blocks until the

Parent activity blocks until the future activity completes future activity completes

ν ν Example:

Example:

Distribution d = [0:4]->place(0) || Distribution d = [0:4]->place(0) || [5:9]->place(1); [5:9]->place(1); int int[.] x = new [.] x = new int int[d] (point (i)) { return [d] (point (i)) { return i; }; i; }; Future< Future<int int> fx5 = future (place(1)) { > fx5 = future (place(1)) { x[5] }; x[5] }; … … int int x5 = fx5.force(); x5 = fx5.force();

slide-18
SLIDE 18

Synchronization: Clocks Synchronization: Clocks

  X10

X10’ ’s synchronization mechanism s synchronization mechanism

  Acts much like a barrier

Acts much like a barrier

  Activities register with a clock

Activities register with a clock

  An activity can perform a

An activity can perform a next next operation to

  • peration to

indicate that it is ready to advance all the clocks indicate that it is ready to advance all the clocks it is registered with it is registered with

  When all activities registered with clock perform

When all activities registered with clock perform next command, activities on clock can next command, activities on clock can continue continue

slide-19
SLIDE 19

Synchronization: finish Synchronization: finish

  finish S

finish S

  Essentially a join

Essentially a join

  Must block until

Must block until all child all child activities recursively activities recursively complete complete

  Also acts as

Also acts as aggregation point for aggregation point for exceptions exceptions

slide-20
SLIDE 20

  Example:

Example:

System.out. System.out.println println( (“ “start start” ”); ); finish finish foreach foreach(point (i,j) : [0:N,0:M]) { (point (i,j) : [0:N,0:M]) { System.out. System.out.println println(N * (N * i + j); i + j); } } System.out. System.out.println println( (“ “end end” ”); );

slide-21
SLIDE 21

Synchronization: atomic Synchronization: atomic

  atomic S

atomic S

  Such a statement is executed by the activity as

Such a statement is executed by the activity as if in a single step during which all other if in a single step during which all other activities are frozen activities are frozen

  Type system ensures that statement S will

Type system ensures that statement S will dynamically access only local data dynamically access only local data

  Conditional atomic

Conditional atomic blocks blocks

  when(e) { s }

when(e) { s }

  await(e)

await(e)

slide-22
SLIDE 22

Current Implementation Current Implementation

  Uses polyglot to generate Java code

Uses polyglot to generate Java code

  Leverages

Leverages java threads to achieve concurrence, java threads to achieve concurrence, but not much place partitioning but not much place partitioning

  Runtime big and fat; lots of checks and

Runtime big and fat; lots of checks and indirection indirection

  Compiler is

Compiler is fairly simplistic fairly simplistic

slide-23
SLIDE 23

Advantages of X10 Advantages of X10

  Java syntax and libraries

Java syntax and libraries easy to transition easy to transition for programmers for programmers

  Constructs

Constructs realatively realatively easy to learn and easy to learn and use use

  Easy to use some constructs to gain some

Easy to use some constructs to gain some parallelism parallelism

slide-24
SLIDE 24

Limitations of X10 Limitations of X10

  Hard to load balance places

Hard to load balance places

  Implementation is slow and compiler is

Implementation is slow and compiler is simplistic simplistic

  Since implementation uses inner classes, final

Since implementation uses inner classes, final modifiers need to be added in some places modifiers need to be added in some places

  At current state,

At current state, using parallelism constructs using parallelism constructs aggressively aggressively is slower is slower

slide-25
SLIDE 25

Demo Demo

  Crypto

Crypto

  Jacobi

Jacobi

slide-26
SLIDE 26

The End The End

  Questions?

Questions?