Functional programming presents several important advantages in the design, analysis and implementation of parallel algorithms: It discourages iteration and encourages *** supports persistence and hence easy *** encou...
详细信息
ISBN:
(纸本)9781605587943
Functional programming presents several important advantages in the design, analysis and implementation of parallel algorithms: It discourages iteration and encourages *** supports persistence and hence easy *** encourages higher-order aggregate *** is well suited for defining cost models tied to the programminglanguage rather than the *** can avoid false *** can use cheaper weak consistency *** most importantly, it supports safe deterministic *** fact functional programming supports a level of abstraction in which parallel algorithms are often as easy to design and analyze as sequential algorithms. The recent widespread advent of parallel machines therefore presents a great opportunity for functional programminglanguages. However, any changes will require significant education at all levels and involvement of the functional programming *** this talk I will discuss an approach to designing and analyzing parallel algorithms in a strict functional and fully deterministic setting. Key ideas include a cost model defined in term of analyzing work and span, the use of divide-and-conquer and contraction, the need for arrays (immutable) to achieve asymptotic efficiency, and the power of (deterministic) randomized algorithms. These are all ideas I believe can be taught at any level.
This paper presents the design and implementation of a compiler algorithm that effectively optimizes programs for energy usage using dynamic voltage scaling (DVS). The algorithm identifies program regions where the CP...
详细信息
ISBN:
(纸本)9781581136623
This paper presents the design and implementation of a compiler algorithm that effectively optimizes programs for energy usage using dynamic voltage scaling (DVS). The algorithm identifies program regions where the CPU can be slowed down with negligible performance loss. It is implemented as a source-to-source level transformation using the SUIF2 compiler infrastructure. Physical measurements on a high-performance laptop show that total system (i.e., laptop) energy savings of up to 28% can be achieved with performance degradation of less than 5% for the SPECfp95 benchmarks. On average, the system energy and energy-delay product are reduced by 11% and 9%, respectively, with a performance slowdown of 2%. It was also discovered that the energy usage of the programs using our DVS algorithm is within 6% from the theoretical lower bound. To the best of our knowledge, this is one of the first work that evaluates DVS algorithms by physical measurements.
Many popular object-oriented programminglanguages, such as C++, Smalltalk-80, Java, and Eiffel, do not support multiple dispatch. Yet without multiple dispatch, programmers find it difficult to express binary methods...
详细信息
ISBN:
(纸本)9781581130058
Many popular object-oriented programminglanguages, such as C++, Smalltalk-80, Java, and Eiffel, do not support multiple dispatch. Yet without multiple dispatch, programmers find it difficult to express binary methods and design patterns such as the "visitor" pattern. We describe a new, simple, and orthogonal way to add multimethods to single-dispatch object-oriented languages, without affecting existing code. The new mechanism also clarifies many differences between single and multiple dispatch.
GUM is a portable, parallel implementation of the Haskell functional language. Despite sustained research interest in parallel functional programming, GUM is one of the first such systems to be made publicly *** is me...
ISBN:
(纸本)9780897917957
GUM is a portable, parallel implementation of the Haskell functional language. Despite sustained research interest in parallel functional programming, GUM is one of the first such systems to be made publicly *** is message-based, and portability is facilitated by using the PVM communications harness that is available on many multi-processors. As a result, GUM is available for both shared-memory (Sun SPARCserver multiprocessors) and distributed-memory (networks of workstations) architectures. The high message-latency of distributed machines is ameliorated by sending messages asynchronously, and by sending large packets of related data in each *** performance figures demonstrate absolute speedups relative to the best sequential compiler technology. To improve the performance of a parallel Haskell program GUM provides tools for monitoring and visualising the behaviour of threads and of processors during execution.
T++ is a C++ language extension that aids in systematic testing of C++ code. For each type t used in the code, T++ maintains the set of "typical" values of t, denoted by T(t) (typicals of t). We propose an o...
详细信息
ISBN:
(纸本)081868383X
T++ is a C++ language extension that aids in systematic testing of C++ code. For each type t used in the code, T++ maintains the set of "typical" values of t, denoted by T(t) (typicals of t). We propose an object-oriented testing scheme in which each class t has a test method implemented as a static member function that runs a test script on each of the values in T(t). T++ supports this scheme by automatically generating a default T(t) based on the declaration of t and on the typicals of each of the types used in this declaration. This default can be easily tuned by the class implementor and users to reflect the particularities of the class. T++ also provides an easy-to-use mechanism for iterating over the typicals of a type. Thus, T++ gives a supporting environment for the design and implementation of test scripts with the familiar Techniques of equivalence testing, boundary value analysis,or functional testing approaches. Most language extensions are realized by either a dedicated pre-processor or by a modification to the compiler. Both techniques suffer from serious drawbacks related to the complexity of C++ and the accessibility of the compiler code. In contrast, the implementation of T++ sidesteps these difficulties by relying on a novel technique that creates a knowledge base of the source code from the debugging information. Manipulation of the software source code is done via a nontrivial exploitation of the C pre-processor while applying the C++ compiler twice: In the first application, whose sole purpose it do generate the debugging information section in the object code file all uses of the language extension features are cancelled. The debugging information, which also includes essential clues of these uses, is then extracted by a dedicated tool, and used for realizing the language extension. A suitable macro definition is synthesized for each of the uses of these features. In the second application of the compiler, each such use is expanded into an appr
An executable computational logic can provide the desired bridge between formal system properties and formal methods to verify them on the one hand, and executable models of system designs based on programming languag...
详细信息
ISBN:
(纸本)9780769519234
An executable computational logic can provide the desired bridge between formal system properties and formal methods to verify them on the one hand, and executable models of system designs based on programminglanguages on the other. However, not all such logics are equally well suited for the task. This paper gives some requirements that seem important for a computational logic to be suitable in practice, and discusses the experience with rewriting logic, its Maude languageimplementation, and its formal tool environment, concluding that they seem to meet well those requirements.
Computers are increasingly being used in engineering systems which could utilize a multiplicity of processors. Computer aided design methods are needed to support the design of inherently complex concurrent software. ...
详细信息
This presentation demonstrates a scalable, modular, refinable methodology for translation validation applied to a mature (20 years old), large (500k lines of C), open source (Eclipse/Polarsys IWG project POP) code gen...
详细信息
building upon existing software systems while maintaining or improving software quality is a major goal of software engineering. To achieve this, every software engineering phase (requirements analysis, software desig...
详细信息
ISBN:
(纸本)9781581130744
building upon existing software systems while maintaining or improving software quality is a major goal of software engineering. To achieve this, every software engineering phase (requirements analysis, software design, implementation, testing and maintenance) must produce good quality outputs for the next phase. We believe that a next generation reverse engineering tool can assist in realizing this need.
Cayenne is a Haskell-like language. The main difference between Haskell and Cayenne is that Cayenne has dependent types, i.e., the result type of a function may depend on the argument value, and types of record compon...
详细信息
ISBN:
(纸本)9781581130249
Cayenne is a Haskell-like language. The main difference between Haskell and Cayenne is that Cayenne has dependent types, i.e., the result type of a function may depend on the argument value, and types of record components (which can be types or values) may depend on other components. Cayenne also combines the syntactic categories for value expressions and type expressions; thus reducing the number of language *** dependent types and combined type and value expressions makes the language very powerful. It is powerful enough that a special module concept is unnecessary; ordinary records suffice. It is also powerful enough to encode predicate logic at the type level, allowing types to be used as specifications of programs. However, this power comes at a cost: type checking of Cayenne is undecidable. While this may appear to be a steep price to pay, it seems to work well in practice.
暂无评论