We give an in-depth introduction to the design of our functional array programming language SAC, the main aspects of its compilation into host machine code, and its parallelisation based on multi-threading. The langua...
详细信息
We give an in-depth introduction to the design of our functional array programming language SAC, the main aspects of its compilation into host machine code, and its parallelisation based on multi-threading. The language design of SAC aims at combining high-level, compositional array programming with fully automatic resource management for highly productive code development and maintenance. We outline the compilation process that maps SAC programs to computing machinery. Here, our focus is on optimisation techniques that aim at restructuring entire applications from nested compositions of general fine-grained operations into specialised coarse-grained operations. We present our implicit parallelisation technology for shared memory architectures based on multi-threading and discuss further optimisation opportunities on this level of code generation. Both optimisation and parallelisation rigorously exploit the absence of side-effects and the explicit data flow characteristic of a functional setting.
The design of skeletons for expressing concurrent computations usually faces a conflict between software engineering demands and performance issues. Whereas the former favour versatile fine-grain skeletons that can be...
详细信息
The design of skeletons for expressing concurrent computations usually faces a conflict between software engineering demands and performance issues. Whereas the former favour versatile fine-grain skeletons that can be successively combined into larger programs, coarse-grain skeletons are more desirable from a performance perspective. We describe a way out of this dilemma for array skeletons. In the functional array language SAC We internally represent individual array skeletons by one or more meta skeletons, called WITH-loops. The design Of WITH-loops is carefully chosen to be versatile enough to cope with a large variety of skeletons, yet to be simple enough to allow for compilation into efficiently executable (parallel) code. Furthermore, WITH-loops are closed with respect to three tailor-made optimisation techniques, that systematically transform compositions of simple, computationally light-weight skeletons into few complex and computationally heavier-weight skeletons. (c) 2006 Elsevier B.V. All rights reserved.
We investigate the late phases of the embedded systems’ life cycles, in particular the treatment of change requests, the integration of legacy components, and the problem of emerging platforms. We propose to tackle t...
详细信息
Model-Driven Engineering (MDE) advocates the generation of software applications from models, which are views on certain aspects of the software. In order to minimize the delta between these views we propose a highly ...
详细信息
ISBN:
(纸本)3540317805
Model-Driven Engineering (MDE) advocates the generation of software applications from models, which are views on certain aspects of the software. In order to minimize the delta between these views we propose a highly dynamic Round-Trip Engineering (RTE) technique where the elements of the various views are one and the same. We combine Extended Entity-Relationship diagrams with an object-oriented prototype-based language in a two-phased technique that allows for the rapid prototyping of the modeled applications. Run-time objects are included in the RTE process resulting in advanced constraint enforcement. Moreover support is provided for straightforward role modeling.
LC/MS is a successful analysis technique for the statistical analysis used in several branches of biology. It requires an intense screening and combination of the raw data, which is usually done with programs and libr...
We report our experiences of programming in the functional languageSAC[1] a numerical method for the KPI (Kadomtsev-Petiviashvili 1) equation. KPI describes the propagation of nonlinear waves in a dispersive medium. I...
详细信息
ISBN:
(纸本)9783540691747
We report our experiences of programming in the functional languageSAC[1] a numerical method for the KPI (Kadomtsev-Petiviashvili 1) equation. KPI describes the propagation of nonlinear waves in a dispersive medium. It is an integro-differential, nonlinear equation with third-order derivatives, and so it presents a noticeable challenge in numerical solution, as well as being an important model for a range of topics in computational physics. The latter include: long internal waves in a density-stratified ocean, ion-acoustic waves in a plasma, acoustic waves on a crystal lattice, and more. Thus our solution of KPI in SAC represents an experience of solving a "real" problem using a single-assignment language and as such provides an insight into the kind of challenges and benefits that arise in using the functional paradigm in computational applications. The paper describes the structure and functionality of the program, discusses the features of functional programming that make it useful for the task in hand, and touches upon performance issues.
Our approach to the model-driven collaborative design of workflows for bioinformatic applications uses the jABC [6] for model driven mediation and choreography to complement a Webservice-based elementary service provi...
详细信息
ISBN:
(纸本)076952530X
Our approach to the model-driven collaborative design of workflows for bioinformatic applications uses the jABC [6] for model driven mediation and choreography to complement a Webservice-based elementary service provision. jABC is a framework for service development based on Lightweight Process Coordination. Users (product developers and system/software designers) develop services and applications by composing reusable building-blocks into (flow-)graph structures that can be animated, analyzed, simulated, verified, executed, and compiled. This way of handling the collaborative design of complex processes has proven to be effective and adequate for the cooperation of non-programmers (in this case biologists) and technical people, and it is now being rolled out in the operative practice.
In this paper we present the FormulaBuilder, a flexible tool for graph-based modelling and generation of formulae. The FormulaBuilder allows easy and intuitive creation of formulae by using basic components called For...
详细信息
ISBN:
(纸本)1595933751
In this paper we present the FormulaBuilder, a flexible tool for graph-based modelling and generation of formulae. The FormulaBuilder allows easy and intuitive creation of formulae by using basic components called Formula Building Blocks (FBBs) and arranging them as graphs according to the syntactic structure of a formula. Such a graph can then be validated and used to generate the corresponding formula on the basis of a specific syntax which is chosen from a list of syntaxes supported by the FormulaBuilder. An important application of the FormulaBuilder is the formal specification of properties that describe the requirements of a system. Such property specifications are usually needed by verification tools like model checkers, that help software engineers to detect errors in a specified system. The FormulaBuilder allows users to model property specifications as formula graphs by using commonly-occurring specification patterns.
Performance of generic array programs crucially relies on program specialisation wrt. shape information. Traditionally, this is done in a rather ad hoc fashion by propagating all shape information that is available. W...
详细信息
ISBN:
(纸本)9783540691747
Performance of generic array programs crucially relies on program specialisation wrt. shape information. Traditionally, this is done in a rather ad hoc fashion by propagating all shape information that is available. When striving for a compositional programming style that adheres to good software engineering principles this approach turns out to be insufficient. Instead, static value information needs to be propagated as well which introduces all the well known problems of partial evaluation in general. In this paper, we propose a static analysis that identifies to what extent specialisation needs to be employed in order to achieve a certain level of shape information. This narrows the scope of specialisation far enough to make specialisation for shape information feasible despite a compositional programming style. Some examples to this effect are presented.
A combination of algebraic and object-oriented specification techniques may take advantage of both approaches for system development. This paper presents a formal method how to transform linear terms of an algebraic s...
详细信息
A combination of algebraic and object-oriented specification techniques may take advantage of both approaches for system development. This paper presents a formal method how to transform linear terms of an algebraic specification into an object-oriented description based on pomsets. For this purpose, we introduce an extension of pomsets by distinguishing the variables of a pomset. We show that the pomsets resulting from the term transformation can be represented graphically using message sequence charts and this way are intuitive and manageable for software engineers. The transformation forms the basis for transforming axioms of algebraic specifications into an object-oriented specification and this way lays the foundation for relating algebraic specifications with object-oriented modeling in a profound way. The approach bridges the gap between functional specification concepts and object-oriented modeling techniques. An important area of application comprises the top-down development of information storing components
暂无评论