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