HOME

TheInfoList



OR:

SISAL (Streams and Iteration in a Single Assignment Language) is a general-purpose
single assignment In computer programming, an assignment statement sets and/or re-sets the value stored in the storage location(s) denoted by a variable name; in other words, it copies a value into the variable. In most imperative programming languages, the as ...
functional programming language In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that ...
with strict semantics,
implicit parallelism In computer science, implicit parallelism is a characteristic of a programming language that allows a compiler or interpreter to automatically exploit the parallelism inherent to the computations expressed by some of the language's constructs. ...
, and efficient array handling. SISAL outputs a
dataflow In computing, dataflow is a broad concept, which has various meanings depending on the application and context. In the context of software architecture, data flow relates to stream processing or reactive programming. Software architecture Da ...
graph in Intermediary Form 1 (IF1). It was derived from VAL (Value-oriented Algorithmic Language, designed by
Jack Dennis Jack Bonnell Dennis (born October 13, 1931) is a computer scientist and Emeritus Professor of Computer Science and Engineering at Massachusetts Institute of Technology. The work of Dennis in computer systems and computer languages is recogni ...
), and adds
recursion Recursion (adjective: ''recursive'') occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathematic ...
and finite streams. It has a Pascal-like syntax and was designed to be a common high-level language for numerical programs on a variety of
multiprocessor Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor or the ability to allocate tasks between them. There ar ...
s.


History

SISAL was defined in 1983 by James McGraw et al., at the
University of Manchester The University of Manchester is a public university, public research university in Manchester, England. The main campus is south of Manchester city centre, Manchester City Centre on Wilmslow Road, Oxford Road. The university owns and operates majo ...
,
LLNL Lawrence Livermore National Laboratory (LLNL) is a federal research facility in Livermore, California, United States. The lab was originally established as the University of California Radiation Laboratory, Livermore Branch in 1952 in response ...
, Colorado State University and DEC. It was revised in 1985, and the first compiled implementation was made in 1986. Its performance is superior to C and rivals Fortran, according to some sources,Retire Fortran?: a debate rekindled, David Cann, August 1992, Communications of the ACM, Volume 35, Issue 8 combined with efficient and automatic parallelization. SISAL's name came from
grep grep is a command-line utility for searching plain-text data sets for lines that match a regular expression. Its name comes from the ed command ''g/re/p'' (''globally search for a regular expression and print matching lines''), which has the sa ...
ping "sal" for "Single Assignment Language" from the Unix dictionary /usr/dict/words. Versions exist for the
Cray Cray Inc., a subsidiary of Hewlett Packard Enterprise, is an American supercomputer manufacturer headquartered in Seattle, Washington. It also manufactures systems for data storage and analytics. Several Cray supercomputer systems are listed i ...
X-MP, Y-MP, 2;
Sequent In mathematical logic, a sequent is a very general kind of conditional assertion. : A_1,\,\dots,A_m \,\vdash\, B_1,\,\dots,B_n. A sequent may have any number ''m'' of condition formulas ''Ai'' (called " antecedents") and any number ''n'' of ass ...
, Encore Alliant, DEC VAX-11/784,
dataflow In computing, dataflow is a broad concept, which has various meanings depending on the application and context. In the context of software architecture, data flow relates to stream processing or reactive programming. Software architecture Da ...
architectures, KSR1,
Transputer The transputer is a series of pioneering microprocessors from the 1980s, intended for parallel computing. To support this, each transputer had its own integrated memory and serial communication links to exchange data with other transputers. ...
s and
systolic array In parallel computer architectures, a systolic array is a homogeneous network of tightly coupled data processing units (DPUs) called cells or nodes. Each node or DPU independently computes a partial result as a function of the data received f ...
s.


Architecture

The requirements for a fine-grain parallelism language are better met with a dataflow language than a systems language. SISAL is more than just a dataflow and fine-grain language. It is a set of tools that convert a textual human readable dataflow language into a graph format (named ''IF1'' - Intermediary Form 1). Part of the SISAL project also involved converting this graph format into runable C code.


SISAL Renaissance Era

In 2010 SISAL saw a brief resurgence when a group of undergraduates at
Worcester Polytechnic Institute '' , mottoeng = "Theory and Practice" , established = , former_name = Worcester County Free Institute of Industrial Science (1865-1886) , type = Private research university , endow ...
investigated implementing a fine-grain parallelism backend for the SISAL language.Fine-Grain Parallelism: An Investigative Study into the merits of Graphical Programming and a Fine-grain Execution Mode
/ref> In 2018 SISAL was modernized with indent-based syntax, first-class functions, lambdas, closures and lazy semantics within a project SISAL-IS.Modernized Sisal Interpreter (MSInt)
/ref>


References


Notes


Bibliography


VAL Overview


{{refend


External links


SISAL Parallel Programming
SourceForge.net project page Concurrent programming languages Functional languages