chapel · for more information: suggested reading 52 overview papers: a brief overview of chapel,...
TRANSCRIPT
![Page 1: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/1.jpg)
Chapel: An Emerging Parallel Programming Language
Thomas Van Doren, Chapel Team, Cray Inc.
Northwest C++ Users’ Group April 16th, 2014
![Page 2: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/2.jpg)
2
My Employer:
![Page 3: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/3.jpg)
Parallel Challenges
3
Virus modeling Photo: HPCWire.com
Genome Sequencing Photo: umn.edu
Square-Kilometer Array Photo: www.phy.cam.ac.uk
https://en.wikipedia.org/wiki/Human_Genome_Project http://archive.hpcwire.com/hpcwire/2013-06-03/researchers_tap_cray_super_to_decode_hiv-i_interior.html http://www.hpcwire.com/2013/12/12/supercomputing-fundamental-ska-project/
![Page 4: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/4.jpg)
Hardware Progression
4
● 1988: 8 Processors - 512 MB memory
● 1998: 1,024 Processors - 1 TB memory
● 2008: 150,000 Processors - 360 TB memory
● 2020: 10,000,000 Processors? - ? memory
![Page 5: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/5.jpg)
Given: m-‐element vectors A, B, C
Compute: ∀i ∈ 1..m, Ai = Bi + α⋅Ci
In pictures:
A trivial parallel computation
5
=
α
+
A
B
C·
![Page 6: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/6.jpg)
Given: m-‐element vectors A, B, C
Compute: ∀i ∈ 1..m, Ai = Bi + α⋅Ci
In pictures, in parallel:
A trivial parallel computation
6
A
B
C
=
+
·
=
+
·
=
+
·
=
+
· α
![Page 7: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/7.jpg)
Given: m-‐element vectors A, B, C
Compute: ∀i ∈ 1..m, Ai = Bi + α⋅Ci
In pictures, in parallel (distributed memory):
A trivial parallel computation
7
A
B
C
=
+
·
=
+
·
=
+
·
=
+
· α
![Page 8: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/8.jpg)
Given: m-‐element vectors A, B, C
Compute: ∀i ∈ 1..m, Ai = Bi + α⋅Ci
In pictures, in parallel (distributed memory mul:core):
A trivial parallel computation
8
A
B
C
α
=
+
·
=
+
·
=
+
·
=
+
·
=
+
·
=
+
·
=
+
·
=
+
·
![Page 9: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/9.jpg)
Existing programming models?
9
● MPI – C, Fortran, Java ● CUDA, OpenACC for GPUs
● MapReduce ● Custom solutions Limitations: ● Closely tied to hardware. ● Support single type of parallelism.
![Page 10: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/10.jpg)
What is Chapel?
10
● An emerging parallel programming language ● Design and development led by Cray Inc.
● A work-in-progress
● Chapel’s overall goal: Improve programmer productivity
![Page 11: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/11.jpg)
Chapel's Implementation
11
● Open source at SourceForge ● Moving to Github soon!
● BSD license
● Target Architectures: ● multicore desktops and laptops ● commodity clusters and the cloud ● supercomputers
● Compiler and runtime written in C++/C ● Standard library and language features written in Chapel
![Page 12: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/12.jpg)
Chapel Community
12
Users: ● 1000+ downloads of each release ● 200 subscribers to chapel-users mailing list
Developers (last release): ● 19 developers ● 8 organizations ● 5 countries
![Page 13: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/13.jpg)
Multiresolution Design
13
Domain Maps Data Parallelism Task Parallelism Base Language
Target Machine
Locality Control
![Page 14: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/14.jpg)
Base Language Features
14
Domain Maps Data Parallelism Task Parallelism Base Language
Target Machine
Locality Control
![Page 15: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/15.jpg)
Static Type Inference
15
const pi = 3.14, // pi is a real coord = 1.2 + 3.4i, // coord is a complex… coord2 = pi*coord, // …as is coord2 name = “foo”, // name is a string verbose = false; // verbose is boolean proc addem(x, y) { // addem() has generic arguments return x + y; // and an inferred return type } var sum = addem(1, pi), // sum is a real fullname = addem(name, “bar”); // fullname is a string writeln((sum, fullname));
(4.14, foobar)
![Page 16: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/16.jpg)
Range Types and Algebra
16
const r = 1..10; printVals(r # 3); printVals(r by 2); printVals(r by -2); printVals(r by 2 # 3); printVals(r # 3 by 2); printVals(0.. #n); proc printVals(r) { for i in r do write(i, “ ”); writeln(); }
1 2 3 1 3 5 7 9 10 8 6 4 2 1 3 5 1 3 0 1 2 3 4 … n-1
![Page 17: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/17.jpg)
Iterators
17
iter fibonacci(n) { var current = 0, next = 1; for i in 1..n { yield current; current += next; current <=> next; } }
for f in fibonacci(7) do writeln(f);
0 1 1 2 3 5 8
iter tiledRMO(D, tilesize) { const tile = {0..#tilesize, 0..#tilesize}; for base in D by tilesize do for ij in D[tile + base] do yield ij; }
for ij in tiledRMO({1..m, 1..n}, 2) do write(ij);
(1,1)(1,2)(2,1)(2,2) (1,3)(1,4)(2,3)(2,4) (1,5)(1,6)(2,5)(2,6) … (3,1)(3,2)(4,1)(4,2)
![Page 18: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/18.jpg)
Zippered Iteration
18
for (i,f) in zip(0..#n, fibonacci(n)) do writeln(“fib #”, i, “ is ”, f);
fib #0 is 0 fib #1 is 1 fib #2 is 1 fib #3 is 2 fib #4 is 3 fib #5 is 5 fib #6 is 8 …
![Page 19: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/19.jpg)
Classes
19
class Circle { var x, y: int; var r: real; } var c = new Circle(r=2.0); proc Circle.area() return pi*r**2; writeln(c.area()); class Oval: Circle { var r2: real; } proc Oval.area() return pi*r*r2; var o: Circle = new Oval(r=1.0,r2=2.0); writeln(o.area());
12.56 6.28
![Page 20: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/20.jpg)
Other Base Language Features
20
● tuple types and values ● records ● modules ● unions ● enums ● interoperability features
![Page 21: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/21.jpg)
Tasks: discrete units of computation that can, and should, be executed in parallel.
Task Parallel Features
21
Domain Maps Data Parallelism Task Parallelism Base Language
Target Machine
Locality Control
![Page 22: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/22.jpg)
Coforall Loops
22
Sample output:
coforall t in 0..#numTasks { writeln(“Hello from task ”, t, “ of ”, numTasks); } // implicit join of the numTasks tasks here writeln(“All tasks done”);
Hello from task 2 of 4 Hello from task 0 of 4 Hello from task 3 of 4 Hello from task 1 of 4 All tasks done
![Page 23: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/23.jpg)
Other Task Parallel Features
23
● begin, cobegin ● synchronization blocks ● atomic and synchronization variables
![Page 24: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/24.jpg)
Data Parallel Features
24
Domain Maps Data Parallelism Task Parallelism Base Language
Target Machine
Locality Control
![Page 25: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/25.jpg)
Forall Loops
25
forall a in 1..n do writeln(“Here is an a: ”, a);
Typically 1 ≤ #Tasks << #Iterations)
forall (a, i) in zip(A, 1..n) do a = i/10.0;
Forall-loops may be zippered, like for-loops • Corresponding iterations will match up
![Page 26: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/26.jpg)
Domains
26
Domain: ● First-class index set ● Used to declare and operate on arrays ● Drive iteration
config const m = 4, n = 8; var D: domain(2) = {1..m, 1..n};
D
![Page 27: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/27.jpg)
Arrays
27
config const m = 4, n = 8; var D: domain(2) = {1..m, 1..n}; var A: [D] real; var B: [D] string;
D
A B
forall (i, j) in D { A(i, j) = i + j/10.0; B(i, j) = i + “,” + j; }
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8
1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 2,1 2,2
4,3 4,4 4,5 4,6 4,7 4,8 3,1 3,2 3,3 3,4 3,5 3,6 3,7 3,8 4,1 4,2
2,3 2,4 2,5 2,6 2,7 2,8
A B
![Page 28: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/28.jpg)
Chapel supports several types of domains (index sets) :
Chapel Domain Types
28
dense strided sparse
unstructured
“thomas” “lee” “sung” “david” “jacob” “albert” “brad”
associative
![Page 29: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/29.jpg)
All Chapel domain types support domain maps
Chapel Array Types
29
dense strided sparse
unstructured
“thomas” “lee” “sung” “david” “jacob” “albert” “brad”
associative
![Page 30: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/30.jpg)
Chapel Domain/Array Operations
30
● Array Slicing; Domain Algebra
● Promotion of Scalar Operators and Functions
var InnerD: subdomain(D) = {2..m-1, 2..n-1}; A[InnerD] = B[InnerD+(1,1)];
=
A = B + alpha * C; A = exp(B, C); A = foo(B, C);
A B
![Page 31: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/31.jpg)
Promoted functions/operators are defined in terms of zippered forall loops in Chapel. For example…
A = B; ⇒ forall (a,b) in zip(A,B) do a = b;
Whole-array operations are implemented element-wise. A = B + alpha * C; ⇒ forall (a,b,c) in (A,B,C) do a = b + alpha * c;
Promotion Semantics
31
![Page 32: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/32.jpg)
Trivial Example: Chapel (multicore)
32
const ProblemDomain = {1..m}; var A, B, C: [ProblemDomain] real; A = B + alpha * C;
=
α· +
![Page 33: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/33.jpg)
Locality Control Features
33
Domain Maps Data Parallelism Task Parallelism Base Language
Target Machine
Locality Control
Locale: abstract unit of target architecture that can run tasks and store variables.
![Page 34: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/34.jpg)
Defining Locales
34
● Specify # of locales when running Chapel programs
● Chapel provides built-in locale variables
● User’s main() begins executing on locale #0
% a.out --numLocales=8
config const numLocales: int = …; const Locales: [0..#numLocales] locale = …;
L0 L1 L2 L3 L4 L5 L6 L7 Locales:
![Page 35: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/35.jpg)
Chapel: Scoping and Locality
35
var i: int;
i
% a.out --numLocales=5
0 1 2 3 4
![Page 36: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/36.jpg)
Chapel: Scoping and Locality
36
var i: int; on Locales[1] {
i
0 1 2 3 4
% a.out --numLocales=5
![Page 37: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/37.jpg)
Chapel: Scoping and Locality
37
var i: int; on Locales[1] { var j: int;
i j
0 1 2 3 4
% a.out --numLocales=5
![Page 38: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/38.jpg)
Chapel: Scoping and Locality
38
var i: int; on Locales[1] { var j: int; coforall loc in Locales { on loc {
i j
0 1 2 3 4
% a.out --numLocales=5
![Page 39: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/39.jpg)
Chapel: Scoping and Locality
39
var i: int; on Locales[1] { var j: int; coforall loc in Locales { on loc { var k: int; // within this scope, i, j can be referenced; // the implementation manages the communication } } }
i j k k k k k
0 1 2 3 4
% a.out --numLocales=5
![Page 40: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/40.jpg)
Trivial Example: Chapel (multicore)
40
const ProblemDomain = {1..m}; var A, B, C: [ProblemDomain] real; A = B + alpha * C;
=
α· +
![Page 41: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/41.jpg)
Domain Map Features
41
Domain Maps Data Parallelism Task Parallelism Base Language
Target Machine
Locality Control
![Page 42: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/42.jpg)
Domain Maps
42
Domain maps are “recipes” that instruct the compiler how to map the global view of a computation…
= +
α •
Locale 0
= +
α •
= +
α •
= +
α •
Locale 1 Locale 2
…to the target locales’ memory and processors:
A = B + alpha * C;
![Page 43: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/43.jpg)
Trivial Example: Chapel
43
const ProblemDomain = {1..m};
var A, B, C: [ProblemDomain] real; A = B + alpha * C;
=
α· +
![Page 44: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/44.jpg)
Trivial Example: Chapel (multicore)
44
const ProblemDomain = {1..m}; var A, B, C: [ProblemDomain] real; A = B + alpha * C;
=
α· +
No domain map specified => use default layout • current locale owns all indices and values • computation will execute using local processors only
![Page 45: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/45.jpg)
Trivial Example: Chapel (multilocale, blocked)
45
const ProblemDomain = {1..m} dmapped Block({1..m}); var A, B, C: [ProblemDomain] real; A = B + alpha * C;
=
α· +
![Page 46: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/46.jpg)
Trivial Example: Chapel (multilocale, cyclic)
46
const ProblemDomain = {1..m} dmapped Cyclic(startIdx=1); var A, B, C: [ProblemDomain] real; A = B + alpha * C;
=
α· +
![Page 47: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/47.jpg)
LULESH in Chapel
Copyright 2014 Cray Inc.
![Page 48: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/48.jpg)
LULESH in Chapel
This is all of the representation dependent code. It specifies: • data structure choices
• structured vs. unstructured mesh • local vs. distributed data • sparse vs. dense materials arrays
• their corresponding iterators
Copyright 2014 Cray Inc.
![Page 49: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/49.jpg)
Implementation Status -- Version 1.9.0 (Apr 2014)
49
Overall Status: ● Most features work at a functional level ● Many performance optimizations remain
This is a good time to: ● Try out the language and compiler ● Use Chapel for non-performance-critical projects ● Give us feedback to improve Chapel ● Use Chapel for parallel programming education
![Page 50: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/50.jpg)
Chapel: the next five years
50
● Harden Prototype to Production-grade
● Target more complex/modern compute node types
● Continue to grow the user and developer communities
![Page 51: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/51.jpg)
For More Information: Online Resources
51
Chapel project page: http://chapel.cray.com Chapel SourceForge page: https://sourceforge.net/projects/chapel/ Mailing Aliases:
● [email protected]: contact the team at Cray ● [email protected]: announcement list ● [email protected]: user-oriented discussion list ● [email protected]: developer discussion ● [email protected]: educator discussion ● [email protected]: public bug forum
![Page 52: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/52.jpg)
For More Information: Suggested Reading
52
Overview Papers:
● A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming Models, edited by Pavan Balaji, to be published by MIT Press in 2014). ● a more detailed overview of Chapel’s history, motivating themes, features
● The State of the Chapel Union [slides], Chamberlain, Choi, Dumler, Hildebrandt, Iten, Litvinov, Titus. CUG 2013, May 2013. ● a high-level overview of the project summarizing the HPCS period
![Page 53: Chapel · For More Information: Suggested Reading 52 Overview Papers: A Brief Overview of Chapel, Chamberlain (pre-print of a chapter for A Brief Overview of Parallel Programming](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebdd83fcd9b41408a2d5f9d/html5/thumbnails/53.jpg)
Chapel…
…is a collaborative effort — join us!