The implementation of a nonprocedural functional modeling language (FML) is considered. The authors describe a compiler, an abstract machine builder, an abstract machine evaluator, and a host simulator interface, whic...
详细信息
ISBN:
(纸本)0818606355
The implementation of a nonprocedural functional modeling language (FML) is considered. The authors describe a compiler, an abstract machine builder, an abstract machine evaluator, and a host simulator interface, which are connected through object-oriented interfaces. The abstract machine contains a representation of the electrical semantics of FML models as well as its compiled code. An event-driven logic simulator paradigm is used in its evaluation. The design of the FML compiler is outlined, along with the simulator/FML execution module interface.
While multicore hardware has become ubiquitous, explicitly parallel programming models and compiler techniques for exploiting parallelism on these systems have noticeably lagged behind. Stream programming is one model...
详细信息
While multicore hardware has become ubiquitous, explicitly parallel programming models and compiler techniques for exploiting parallelism on these systems have noticeably lagged behind. Stream programming is one model that has wide applicability in the multimedia, graphics, and signal processing domains. Streaming models execute as a set of independent actors that explicitly communicate data through channels. This paper presents a compiler technique for planning and orchestrating the execution of streaming applications on multicore platforms. An integrated unfolding and partitioning step based on integer linear programming is presented that unfolds data parallel actors as needed and maximally packs actors onto cores. Next, the actors are assigned to pipeline stages in such a way that all communication is maximally overlapped with computation on the cores. To facilitate experimentation, a generalized code generation template for mapping the software pipeline onto the Cell architecture is presented. For a range of streaming applications, a geometric mean speedup of 14.7x is achieved on a 16-core Cell platform compared to a single core.
Aspect-oriented programming (AOP) is a technique for improving separation of concerns in software design and implementation. AOP works by providing explicit mechanisms for capturing the structure of crosscutting conce...
详细信息
ISBN:
(纸本)9781581133905
Aspect-oriented programming (AOP) is a technique for improving separation of concerns in software design and implementation. AOP works by providing explicit mechanisms for capturing the structure of crosscutting concerns. This tutorial shows how to use AOP to implement crosscutting concerns in a concise modular way. It works with AspectJ, a seamless aspect-oriented extension to the Java(tm) programminglanguage, and with AspectC, an aspect-oriented extension to C in the style of AspectJ. It also includes a description of their underlying model, in terms of which a wide range of AOP languages can be understood.
We report on the design and implementation of an extensible programminglanguage and its intrinsic support for formal verification. Our language is targeted at low-level programming of infrastructure like operating sy...
详细信息
We report on the design and implementation of an extensible programminglanguage and its intrinsic support for formal verification. Our language is targeted at low-level programming of infrastructure like operating systems and runtime systems. It is based on a cross-platform core combining characteristics of assembly languages and compiler intermediate languages. From this foundation, we take literally the saying that C is a "macro assembly language": we introduce an expressive notion of certified low-level macros, sufficient to build up the usual features of C and beyond as macros with no special support in the core. Furthermore, our macros have integrated support for strongest postcondition calculation and verification condition generation, so that we can provide a high-productivity formal verification environment within Coq for programs composed from any combination of macros. Our macro interface is expressive enough to support features that low-level programs usually only access through external tools with no formal guarantees, such as declarative parsing or SQL-inspired querying. The abstraction level of these macros only imposes a compile-time cost, via the execution of functional Coq programs that compute programs in our intermediate language;but the run-time cost is not substantially greater than for more conventional C code. We describe our experiences constructing a full C-like language stack using macros, with some experiments on the verifiability and performance of individual programs running on that stack.
Software engineering demands generality and abstraction, performance demands specialization and concretization. Generative programming can provide both, but developing high-quality program generators takes a large eff...
详细信息
Software engineering demands generality and abstraction, performance demands specialization and concretization. Generative programming can provide both, but developing high-quality program generators takes a large effort, even if a multi-stage programminglanguage is used. We present lightweight modular staging, a library-based multi-stage programming approach that breaks with the tradition of syntactic quasi-quotation and instead uses only types to distinguish between binding times. Through extensive use of component technology, lightweight modular staging makes an optimizing compiler framework available at the library level, allowing programmers to tightly integrate domain-specific abstractions and optimizations into the generation process. We argue that lightweight modular staging enables a form of language virtualization, i.e. allows to go from a pure-library embedded language to one that is practically equivalent to a stand-alone implementation with only modest effort.
The Scientific Computation language (SCL) was designed mainly for developing computational models in education and research. This paper presents the justification for such a language, its relevant features, and a case...
详细信息
ISBN:
(纸本)9781450329231
The Scientific Computation language (SCL) was designed mainly for developing computational models in education and research. This paper presents the justification for such a language, its relevant features, and a case study of a computational model implemented with the SCL. Development of the SCL language is part of the OOPsim project, which has had partial NSF support (CPATH). One of the goals of this project is to develop tools and approaches for designing and implementing computational models, emphasizing multi-disciplinary teams in the development process. A computational model is a computer implementation of the solution to a (scientific) problem for which a mathematical representation has been formulated. Developing a computational model consists of applying Computer Science concepts, principles and methods. The language syntax is defined at a higher level of abstraction than C, and includes language statements for improving program readability, debugging, maintenance, and correctness. The languagedesign was influenced by Ada, Pascal, Eiffel, Java, C, and C++. The keywords have been added to maintain full compatibility with C. The SCL language translator is an executable program that is implemented as a one-pass language processor that generates C source code. The generated code can be integrated conveniently with any C and/or C++ library, on Linux and Windows (and MacOS). The semantics of SCL is informally defined to be the same C semantics. Copyright 2014 acm.
A design methodology for synthesizing efficient parallel algorithms and architectures from problem definitions specified in the language Crystal is presented. First, transformations on a problem definition to programs...
详细信息
ISBN:
(纸本)0818607246
A design methodology for synthesizing efficient parallel algorithms and architectures from problem definitions specified in the language Crystal is presented. First, transformations on a problem definition to programs with bounded order and bounded degree are introduced. This stage of the transformation aims to reduce the dominant costs in the underlying hardware which might be incurred by a direct parallel implementation of the problem definition. At the second stage, pipelining is automatically incorporated into an algorithm so that the hardware resources can be most effectively utilized. The methodology allows the derivation of systolic algorithms and architectures in a unified framework based on Crystal. Since Crystal is a general-purpose language for parallel programming, new synthesis techniques and insights into problems can be integrated readily within the existing framework.
A wide variety of object-oriented (OO) methodologies and tools are currently available for software development Each methodology emphasizes various phases and activities of the software life cycle using different term...
详细信息
We discuss the use of a FORTRAN preeompiler in the development of packages for nonstandard arithmetics. In particular, the use Of the FORTRAN prceompiler, AUGMENT, renders the source code more lucid, reduces the numbe...
详细信息
暂无评论