Mercurial > cgi-bin > hgwebdir.cgi > POP > oldRepo
comparison 1__Development/6__Website/introduction.html @ 0:a8cd65eca9a9
Initial add
| author | Me@portablequad |
|---|---|
| date | Sun, 25 Dec 2011 14:39:36 -0800 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:75ffbbe16fcc |
|---|---|
| 1 <html> | |
| 2 <head> | |
| 3 <title>Introduction</title> | |
| 4 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | |
| 5 </head> | |
| 6 | |
| 7 <body bgcolor="#FFFFFF"> | |
| 8 | |
| 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> |
