7 research outputs found

    Scalable data abstractions for distributed parallel computations

    Get PDF
    The ability to express a program as a hierarchical composition of parts is an essential tool in managing the complexity of software and a key abstraction this provides is to separate the representation of data from the computation. Many current parallel programming models use a shared memory model to provide data abstraction but this doesn't scale well with large numbers of cores due to non-determinism and access latency. This paper proposes a simple programming model that allows scalable parallel programs to be expressed with distributed representations of data and it provides the programmer with the flexibility to employ shared or distributed styles of data-parallelism where applicable. It is capable of an efficient implementation, and with the provision of a small set of primitive capabilities in the hardware, it can be compiled to operate directly on the hardware, in the same way stack-based allocation operates for subroutines in sequential machines

    INTEGRATED MATHEMATICAL MODELLING AS A BASIS FOR DECISION MAKING IN WATER MANAGEMENT

    Get PDF
    Water resources development and management is a complex problem. It includes the design and operation of single system components, often as part of larger interrelated systems and usually on the basis of river basins. While several decades ago the dominant objective was the maximization of economic benefit, other objectives have evolved as part of the sustainable development envisaged. Today, planning and operation of larger water resources systems is practically impossible without adequate computer tools, normally being one or several models, increasingly combined with data bank management systems and multi criteria assessment procedures in decision support systems. The use of models in civil engineering already has a long history when structural engineering is considered. These design support models, however, must rather be seen as expert systems made to support the engineer with his daily work. They often have no direct link to stakeholders and the decision makers community. The scale of investigation is often much larger in water resources engineering than in structural engineering which is related to different stakeholders and decision making procedures. Still, several similarities are obvious which can be summarized as the search for a compromise solution on a complex, i.e. multiobjective and interdisciplinary decision problem. While in structural engineering e.g. aestetics, stability and energy consumption might be important evaluation criteria in addition to construction and maintenance cost other or additional criteria have to be considered in water resources planning such as political, environmental and social criteria. In this respect civil engineers tend to overemphasize technical criteria. For the future the existing expert systems should be embedded into an improved decision support shell, keeping in mind that decision makers are hardly interested in numerical modelling results. The paper will introduce into the problem and demonstrate the state of the art by means of an example

    PCRC-based HPF compilation

    Get PDF
    This paper describes an ongoing effort supported by ARPA PCRC (Parallel Compiler Runtime Consortium) project. In particular, we discuss the design and implementation of an HPF compilation system based on PCRC runtime. The approaches to issues such as directive analysis and communication detection are discussed in detail. The discussion includes fragments of code generated by the compiler

    Parallel Attribute Grammar Evaluation

    Get PDF
    Experiments with parallel compilation of programming languages are reported. In order to take advantage of the potential parallelism, the language translation process is expressed as an attribute grammar evaluation problem. Three primary benefits to using attribute grammars are noted. The efficiency and the potential for parallelism of various attribute grammar evaluation methods are studied, and the design of a combined evaluator, which seeks to combine the potential for concurrency of dynamic evaluators and the (sequential) efficiency of static evaluators, is outlined. The methods were used to generate a parallel compiler for a large Pascal subset

    PolyAPM: Vergleichende Parallelprogrammierung mit Abstrakten Parallelen Maschinen

    Get PDF
    A parallelising compilation consists of many translation and optimisation stages. The programmer may steer the compiler through these stages by supplying directives with the source code or setting compiler switches. However, for an evaluation of the effects of individual stages, their selection and their best order, this approach is not optimal. To solve this problem, we propose the following method. The compilation is cast as a sequence of program transformations. Each intermediate program runs on an Abstract Parallel Machine (APM), while the program generated by the final transformation runs on the target architecture. Our intermediate programs are all in the same language, Haskell. Thus, each program is executable and still abstract enough to be legible, which enables the evaluation of the transformation that generated it. This evaluation is supported by a cost model, which makes a performance prediction of the abstract program for a real machine. Our project, PolyAPM, provides an acyclic directed graph -- usually a tree -- of APMs whose traversal specifies different combinations and orders of transformations. From one source program, several target programs can be constructed. Their run time characteristics can be evaluated and compared. The goal of PolyAPM is not to support the one-off construction of parallel application programs. For the method's overhead to pay off, the project aims rather at supporting the construction and comparison of many similar variations of a parallel program and a comparative evaluation of parallelisation techniques. With the automation of transformations, PolyAPM can also be used to construct semi-automatic compilation systems.Eine parallelisierende Compilation besteht aus vielen Übersetzungs- und Optimierungsstufen. Der Programmierer kann den Compiler in diesen Stufen steuern, in dem er im Quellcode Anweisungen einfĂŒgt oder Compileroptionen verwendet. FĂŒr eine Bewertung der Auswirkungen der einzelnen Stufen, der Auswahl der Stufen und ihrer besten Reihenfolge ist der Ansatz aber nicht geeignet. Um dieses Problem zu lösen, schlagen wir folgende Methode vor. Eine Compilation wird als Abfolge von Programmtransformationen betrachtet. Jedes Zwischenprogramm gehört jeweils zu einer Abstrakten Parallelen Maschine (APM), wĂ€hrend das durch die letzte Transformation erzeugte Program fĂŒr die Zielarchitektur bestimmt ist. Alle Zwischenprogramme sind in der Sprache Haskell geschrieben. Dadurch ist jedes Programm ausfĂŒhrbar und trotzdem abstrakt genug, um gut lesbar zu sein. Durch diese AusfĂŒhrbarkeit kann die Transformation, durch die das Programm erzeugt wird, bewertet werden. Diese Bewertung wird durch ein Kostenmodell unterstĂŒtzt, das eine Performance-Vorhersage des abstrakten Programms, bezogen auf eine reale Maschine, ermöglicht. Unser Projekt PolyAPM liefert einen azyklischen, gerichteten Graphen - in der Regel einen Baum - aus APMs, dessen Traversierungen jeweils bestimmte Kombinationen und Reihenfolgen von Transformationen definieren. Aus einem Quellprogramm können verschiedene Zielprogramme erzeugt werden, deren Laufzeitverhalten bewert- und vergleichbar ist. Das Ziel von PolyAPM liegt nicht in der Erzeugung eines einzelnen, parallelen Programms. Damit sich der zusĂ€tzliche Aufwand der Methode auszahlt, richtet sich das Projekt eher auf die Entwicklung und den Vergleich vieler, Ă€hnlicher Variationen eines parallelen Programms und der vergleichenden Bewertung von Parallelisierungstechniken. Mit der Automatisierung von Transformationen kann PolyAPM dazu benutzt werden, halbautomatische Compilations-Systeme zu bauen
    corecore