著者
Guy E. Blelloch
タイトル
NESL: A Nested Data-Parallel Language
日時
January 1992
概要
This report describes NESL, a strongly- typed, applicative, data-parallel language. NESL is intended to be used as a portable interface for programming a variety of parallel and vector supercomputers, and as a basis for teaching parallel algorithms. Parallelism is supplied through a simple set of data -parallel constructs based on vectors, including a mechanism for applying any function over the elements of a vector in parallel and a rich set of parallel functions that manipulate vectors. NESL fully supports nested vectors and nested parallelism -- the ability to take a parallel function and apply it over multiple instances in parallel. Nested parallelism is important for implementing algorithms with complex and dynamically changing data structures, such as required in many graph and sparse matrix algorithms Nesl also provides a mechanism for calculating the asymptotic running time for a program on various parallel machine models, including the parallel random access machine (PRAM). This is useful for approximating running times of algorithms on actual machines and, when teaching algorithms, for supplying a close correspondence between the code and the theoretical complexity. This report defines Nesl and describes several examples of algorithms coded in the language. The examples include algorithms for median finding, sorting, string searching, intermediate language called VCODE, which runs on the Cray Y-MP, Connection Machine CM-2, and Encore Multimax. For many algorithms, the current implementation gives performance close to optimized machine-specific code for these machines.
カテゴリ
CMUTR
Category: CMUTR
Institution: Department of Computer Science, Carnegie
        Mellon University
Abstract: This report describes NESL, a strongly- typed, applicative, 
        data-parallel language. NESL is intended to be used as a 
        portable interface for programming a variety of parallel and 
        vector supercomputers, and as a basis for teaching parallel
        algorithms. Parallelism is supplied through a simple set of data
        -parallel constructs based on vectors, including a mechanism for
        applying any function over the elements of a vector in parallel
        and a rich set of parallel functions that manipulate vectors.
        
        NESL fully supports nested vectors and nested parallelism -- the
        ability to take a parallel function and apply it over multiple
        instances in parallel. Nested parallelism is important for 
        implementing algorithms with complex and dynamically changing 
        data structures, such as required in many graph and sparse 
        matrix algorithms Nesl also provides a mechanism for calculating
        the asymptotic running time for a program on various parallel 
        machine models, including the parallel random access machine 
        (PRAM). This is useful for approximating running times of 
        algorithms on actual machines and, when teaching algorithms, 
        for supplying a close correspondence between the code and the 
        theoretical complexity.
        
        This report defines Nesl and describes several examples of 
        algorithms coded in the language. 
        The examples include algorithms for median finding, sorting, 
        string searching, intermediate language called VCODE, which runs
        on the Cray Y-MP, Connection Machine CM-2, and Encore Multimax.
        For many algorithms, the current implementation gives 
        performance close to optimized machine-specific code for these 
        machines.
        
Number: CMU-CS-92-103
Bibtype: TechReport
Month: jan
Author: Guy E. Blelloch
Title: NESL: A Nested Data-Parallel Language
Year: 1992
Address: Pittsburgh, PA
Super: @CMUTR