| rev |
line source |
|
seanhalle@6
|
1 <html>
|
|
seanhalle@6
|
2 <head>
|
|
seanhalle@6
|
3 <title>Introduction</title>
|
|
seanhalle@6
|
4 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
seanhalle@6
|
5 </head>
|
|
seanhalle@6
|
6
|
|
seanhalle@6
|
7 <body bgcolor="#FFFFFF">
|
|
seanhalle@6
|
8
|
|
seanhalle@6
|
9 <p> </p>
|
|
seanhalle@6
|
10 <h2>Introduction</h2>
|
|
seanhalle@6
|
11 <p> </p>
|
|
seanhalle@6
|
12 <p>EQNLang is an extensible language for parallel programming. It has a visual
|
|
seanhalle@6
|
13 interface, allows extensions of both its visual syntax and its semantics, and
|
|
seanhalle@6
|
14 it allows automated symbolic manipulation of code to specialize it to specific
|
|
seanhalle@6
|
15 parallel hardware, for high performance.</p>
|
|
seanhalle@6
|
16 <p>EQNLang has a visual interface, in which any SVG graphic can be used as a syntactic
|
|
seanhalle@6
|
17 element in the language. In fact, while developing code, most applications will
|
|
seanhalle@6
|
18 add their own syntax as part of the application. This new syntax can then be
|
|
seanhalle@6
|
19 shared for others to use.</p>
|
|
seanhalle@6
|
20 <p>The source format of the language is a syntax graph. There is no text form
|
|
seanhalle@6
|
21 of the code. This is what enables new syntax to be arbitrary graphics. The grammar
|
|
seanhalle@6
|
22 of the language is embedded in the editing process. One is only allowed to build
|
|
seanhalle@6
|
23 valid syntax graphs. Another consequence of using a syntax graph as the source
|
|
seanhalle@6
|
24 form is that properties can be attached to new commands defined inside applications.
|
|
seanhalle@6
|
25 This is the key to the portable parallelism.</p>
|
|
seanhalle@6
|
26 <p>Performance portability of parallel code requires the code to be transformable
|
|
seanhalle@6
|
27 to fit specific hardware well. High performance can only be achieved when the
|
|
seanhalle@6
|
28 patterns in the code fit closely to the patterns in the hardware. Such transformations
|
|
seanhalle@6
|
29 go beyond what compilers typically carry out; they are more like what a symbolic
|
|
seanhalle@6
|
30 math package like MAPLE or MathCAD or Mathmatica perform.</p>
|
|
seanhalle@6
|
31 <p>To enable such transforms for parallel code, the parallel code must provide
|
|
seanhalle@6
|
32 the same thing that equations provide to the math package: properties. It is
|
|
seanhalle@6
|
33 properties such as associativity, distributivity, and so forth that allow the
|
|
seanhalle@6
|
34 automated symbolic manipulation. EQNLang follows this pattern of providing properties
|
|
seanhalle@6
|
35 of commands. Each primitive command of the language comes pre-tagged with its
|
|
seanhalle@6
|
36 properties, and the end-user who defines a new syntactic element states which
|
|
seanhalle@6
|
37 properties their new element has. For some properties, additional code is provided
|
|
seanhalle@6
|
38 that is a "plugin" to the symbolic manipulator. This additional code
|
|
seanhalle@6
|
39 performs the manipulation on the source-graph.</p>
|
|
seanhalle@6
|
40 <p>The result is a high-level declarative language that is highly productive for
|
|
seanhalle@6
|
41 programmers, yet high performance across parallel hardware.</p>
|
|
seanhalle@6
|
42 <p><a href="index.html">back</a></p>
|
|
seanhalle@6
|
43 </body>
|
|
seanhalle@6
|
44 </html>
|