diff 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 diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/1__Development/6__Website/ApacheServer/introduction.html	Wed Aug 06 00:16:19 2014 -0700
     1.3 @@ -0,0 +1,44 @@
     1.4 +<html>
     1.5 +<head>
     1.6 +<title>Introduction</title>
     1.7 +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     1.8 +</head>
     1.9 +
    1.10 +<body bgcolor="#FFFFFF">
    1.11 +
    1.12 +<p>&nbsp;</p>
    1.13 +<h2>Introduction</h2>
    1.14 +<p>&nbsp;</p>
    1.15 +<p>EQNLang is an extensible language for parallel programming. It has a visual 
    1.16 +  interface, allows extensions of both its visual syntax and its semantics, and 
    1.17 +  it allows automated symbolic manipulation of code to specialize it to specific 
    1.18 +  parallel hardware, for high performance.</p>
    1.19 +<p>EQNLang has a visual interface, in which any SVG graphic can be used as a syntactic 
    1.20 +  element in the language. In fact, while developing code, most applications will 
    1.21 +  add their own syntax as part of the application. This new syntax can then be 
    1.22 +  shared for others to use.</p>
    1.23 +<p>The source format of the language is a syntax graph. There is no text form 
    1.24 +  of the code. This is what enables new syntax to be arbitrary graphics. The grammar 
    1.25 +  of the language is embedded in the editing process. One is only allowed to build 
    1.26 +  valid syntax graphs. Another consequence of using a syntax graph as the source 
    1.27 +  form is that properties can be attached to new commands defined inside applications. 
    1.28 +  This is the key to the portable parallelism.</p>
    1.29 +<p>Performance portability of parallel code requires the code to be transformable 
    1.30 +  to fit specific hardware well. High performance can only be achieved when the 
    1.31 +  patterns in the code fit closely to the patterns in the hardware. Such transformations 
    1.32 +  go beyond what compilers typically carry out; they are more like what a symbolic 
    1.33 +  math package like MAPLE or MathCAD or Mathmatica perform.</p>
    1.34 +<p>To enable such transforms for parallel code, the parallel code must provide 
    1.35 +  the same thing that equations provide to the math package: properties. It is 
    1.36 +  properties such as associativity, distributivity, and so forth that allow the 
    1.37 +  automated symbolic manipulation. EQNLang follows this pattern of providing properties 
    1.38 +  of commands. Each primitive command of the language comes pre-tagged with its 
    1.39 +  properties, and the end-user who defines a new syntactic element states which 
    1.40 +  properties their new element has. For some properties, additional code is provided 
    1.41 +  that is a &quot;plugin&quot; to the symbolic manipulator. This additional code 
    1.42 +  performs the manipulation on the source-graph.</p>
    1.43 +<p>The result is a high-level declarative language that is highly productive for 
    1.44 +  programmers, yet high performance across parallel hardware.</p>
    1.45 +<p><a href="index.html">back</a></p>
    1.46 +</body>
    1.47 +</html>