NESL
   HOME

TheInfoList



OR:

NESL is a parallel
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
developed at
Carnegie Mellon Carnegie may refer to: People *Carnegie (surname), including a list of people with the name **Andrew Carnegie, Scottish-American industrialist and philanthropist * Clan Carnegie, a lowland Scottish clan Institutions Named for Andrew Carnegie * ...
by the SCandAL project and released in 1993. It integrates various ideas from
parallel algorithm In computer science, a parallel algorithm, as opposed to a traditional serial algorithm, is an algorithm which can do multiple operations in a given time. It has been a tradition of computer science to describe serial algorithms in abstract mach ...
s,
functional programming In computer science, functional programming is a programming paradigm where programs are constructed by Function application, applying and Function composition (computer science), composing Function (computer science), functions. It is a declarat ...
, and
array programming In computer science, array programming refers to solutions that allow the application of operations to an entire set of values at once. Such solutions are commonly used in computational science, scientific and engineering settings. Modern program ...
languages. The most important new ideas behind NESL are *Nested data parallelism: this feature offers the benefits of
data parallelism Data parallelism is parallelization across multiple processors in parallel computing environments. It focuses on distributing the data across different nodes, which operate on the data in parallel. It can be applied on regular data structures like ...
, concise code that is easy to understand and debug, while being well suited for irregular algorithms, such as algorithms on trees, graphs or sparse matrices. *A language based performance model: this gives a formal way to calculate the work and depth of a program. These measures can be related to running time on parallel machines. The main design guideline for NESL was to make parallel programming easy and portable. Algorithms are typically significantly more concise in NESL than in most other parallel programming languages, and the code closely resembles high-level pseudocode. NESL handles nested data parallelism by using the
flattening transformation The flattening transformation is an algorithm that transforms nested data parallelism into flat data parallelism. It was pioneered by Guy Blelloch as part of the NESL programming language. The flattening transformation is also sometimes called ...
to convert nested data parallelism to flat data parallelism. This works by storing nested vectors as the nested data and a segment descriptor of vector lengths, separately. This flattening transform, however, can increase the asymptotic work and space complexity of the original program, leading to a much less efficient result.


Influences

NESL heavily influenced Data Parallel
Haskell Haskell () is a general-purpose, statically typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell pioneered several programming language ...
.


See also

*
Cilk Cilk, Cilk++, Cilk Plus and OpenCilk are general-purpose programming languages designed for multithreaded parallel computing. They are based on the C and C++ programming languages, which they extend with constructs to express parallel loop ...


References


External links


NESL homepage
Array programming languages Functional languages Concurrent programming languages Common Lisp (programming language) software {{compu-lang-stub