SISAL Mini-FAQIf you have any questions or comments about this mini-faq, please direct them to mailto:sisal-help@sisal.llnl.goviand not to the list at large. The following questions are addressed in this document:
"SISAL" is an acronym for Streams and Iteration in a Single Assignment Language.
SISAL is a functional data-flow computer language with implicit parallelism. While retaining the imperative programming "feel" of languages like C and Fortran, a SISAL program is free of side-effects. This allows optimizations targeting a variety of sequential, vector, and multi-processor computers. Although a general-purpose language (with elementary I/O), it is designed to enhance the expressibility of numerical computation on high-performance machines.
Since everything is a value, control statements like "if" and "for" are higher-order functions. In the example, "min1" and "min2" have the same value using two different functions.
i := 5;
j := 3*4;
min1 := min(i, j);
min2 := if i<j then i else j;
The "for" loop generating the inner product of the two arrays is also a value. No explicit memory management is needed. Also, since there are no dependencies in the loop, all of the loop bodies may be run in parallel. No user-specified locks or barriers are needed to convert to a parallel version. "sum" is a predefined reduction of the values from the loop body.
t := for i in 1, 10
c = A[i]*B[i];
returns value of sum c
end for;
The SISAL parser translates the source program into the IF1 data-flow representation. Nodes in IF1 denote operations such as add or divide while edges represent values that are passed from node to node. Functions are graph boundaries that surround groups of nodes and edges.
3 4 To produce the value of "min1" above, values
\ / 3 and 4 flow into the multiply node and out
5 * on edge "j". Both "i" and "j" are input to
(i) \ / (j) the "min" function. Its output is the value
+-----+ "min1". The upper part of this graph would
| min | be shared to input to "min2". The only
+-----+ addition is the "if" function node. Since
| all data dependencies are revealed, the compiler
| (min1) can find optimizations and parallelism easier.
SISAL generates C code which is compiled by the native compiler. With its optimizations, most codes run within +/- 20% of the fastest versions in traditional imperative languages. See
http://www.cs.nott.ac.uk/Research/fpg/index.htmlA benefit is that no source changes need to be made to run on a parallel machine.
It is NOT YET available.
Numerous documents are available both on- and off-line that describe the Sisal language and its support software in varying detail. For a gentle introduction to the Sisal language, see the Sisal Tutorial web pages at
http://redhook.llnl.gov/iscr/projects/crg/sisal.tutorial/
Additional documents, software, and sample programs can be found on the Sisal Language Project ftp server:
ftp://sisal.llnl.gov/pub/sisal/
This list is for discussions about installing and using the SISAL compiler OSC (Optimizing SISAL Compiler). Talk about SISAL development and projects is also welcome, as are enhancements and bugfixes. Requests for help and bug reports for the developers are sent to
mailto:sisal-help@sisal.llnl.gov
The current officially released version is OSC 13.0.3 at:
ftp://sisal.llnl.gov/pub/sisal/OSC-13.0.3.tar.ZThis version has been ported to most sequential, vector, and shared memory multi-processor machines.
The draft SISAL90 language document and beta parser are due for release in the first quarter of 1995. Distributed memory ports to the Meiko CS-2, Cray T3D and Thinking Machines CM-5 are in development. A SISAL performance monitoring and display tool is also in the works.
The compiler manual and SISAL 1.2 examples are available:
ftp://sisal.llnl.gov/pub/sisal/MANUAL.12.7.tar.Z ftp://sisal.llnl.gov/pub/sisal/EXAMPLES-13.0.3.tar.ZThe SISAL90 manual is NOT YET available at:
ftp://sisal.llnl.gov/pub/sisal/SISAL90.tar.ZThe WWW has background information on SISAL at:
http://www.llnl.gov/sisal/SisalHomePage.html ftp://sisal.llnl.gov/pub/sisal/mini-faq.htmlMiscellaneous questions are taken at:
mailto:sisal-help@sisal.llnl.gov
Please do NOT send a message to the entire list asking to subscribe/unsubscribe. You'll only succeed in sending the message to hundreds of people who can't do anything about it.
Send mail to
mailto:sisal-info-request@sisal.llnl.govand ask to be added or removed. The best way is to include the text:
subscribe sisal-info [your-email-address-here]
unsubscribe sisal-info [your-email-address-here]