Results 1 - 10
of
87
Arrays in Blitz++
- In Proceedings of the 2nd International Scientific Computing in Object-Oriented Parallel Environments (ISCOPE’98
, 1998
"... . Numeric arrays in Blitz++ rival the efficiency of Fortran, but without any extensions to the C++ language. Blitz++ has features unavailable in Fortran 90/95, such as arbitrary transpose operations, array renaming, tensor notation, partial reductions, multicomponent arrays and stencil operators ..."
Abstract
-
Cited by 53 (4 self)
- Add to MetaCart
. Numeric arrays in Blitz++ rival the efficiency of Fortran, but without any extensions to the C++ language. Blitz++ has features unavailable in Fortran 90/95, such as arbitrary transpose operations, array renaming, tensor notation, partial reductions, multicomponent arrays and stencil operators. The library handles parsing and analysis of array expressions on its own using the expression templates technique, and performs optimizations (such as loop transformations) which have until now been the responsibility of compilers. 1 Introduction The goal of the Blitz++ library is to provide a solid "base environment" of arrays, matrices and vectors for scientific computing in C++. This paper focuses on arrays in Blitz++, which provide performance competitive with Fortran and superior functionality. The design of Blitz++ has been influenced by Fortran 90, High-Performance Fortran, the Math.h++ library [3], A++/P++ [4], and POOMA [5]. It incorporates various features from these environ...
Portable Profiling and Tracing for Parallel, Scientific Applications using C++
- In Proceedings of the SIGMETRICS symposium on Parallel and distributed tools
, 1998
"... Performance measurement of parallel, objectoriented (OO) programs requires the development of instrumentation and analysis techniques beyond those used for more traditional languages. Performance events must be redefined for the conceptual OO programming model, and those events must be instrumented ..."
Abstract
-
Cited by 51 (12 self)
- Add to MetaCart
Performance measurement of parallel, objectoriented (OO) programs requires the development of instrumentation and analysis techniques beyond those used for more traditional languages. Performance events must be redefined for the conceptual OO programming model, and those events must be instrumented and tracked in the context of OO language abstractions, compilation methods, and runtime execution dynamics. In this paper, we focus on the profiling and tracing of C++ applications that have been written using a rich parallel programming framework for highperformance, scientific computing. We address issues of class-based profiling, instrumentation of templates, runtime function identification, and polymorphic (type-based) profiling. Our solutions are implemented in the TAU portable profiling package which also provides support for profiling groups and userlevel timers. We demonstrate TAU's C++ profiling capabilities for real parallel applications, built from components of the ACTS toolkit....
Telescoping languages: A strategy for automatic generation of scientific problem-solving systems from annotated libraries. www.netlib.org/utk/people/JackDongarra/PAPERS/ Telescope.pdf
, 2000
"... As machines and programs have become more complex, the process of programming applications that can exploit the power of high-performance systems has become more difficult and correspondingly more labor-intensive. This has substantially widened the software gap the discrepancy between the need for n ..."
Abstract
-
Cited by 39 (5 self)
- Add to MetaCart
As machines and programs have become more complex, the process of programming applications that can exploit the power of high-performance systems has become more difficult and correspondingly more labor-intensive. This has substantially widened the software gap the discrepancy between the need for new software and the aggregate capacity of the workforce to produce it. This problem has been compounded by the slow growth of programming productivity, especially for high-performance programs, over the past two decades. One way to bridge this gap is to make it possible for end users to develop programs in high-level domain-specific programming systems. In the past, a major impediment to the acceptance of such systems has been the poor performance of the resulting applications. To address this problem, we are developing a new compiler-based infrastructure, called
Compiling Embedded Languages
- Proc. Semantics, Applications, and Implementation of Program Generation (SAIG 2000), LNCS
, 2000
"... . Functional languages are particularly well-suited to the implementation of interpreters for domain-specific embedded languages (DSELs). We describe an implemented technique for producing optimizing compilers for DSELs, based on Kamin's idea of DSELs for program generation. The technique uses ..."
Abstract
-
Cited by 31 (1 self)
- Add to MetaCart
. Functional languages are particularly well-suited to the implementation of interpreters for domain-specific embedded languages (DSELs). We describe an implemented technique for producing optimizing compilers for DSELs, based on Kamin's idea of DSELs for program generation. The technique uses a data type of syntax for basic types, a set of smart constructors that perform rewriting over those types, some code motion transformations, and a back-end code generator. Domain-specific optimization results from chains of rewrites on basic types. New DSELs are defined directly in terms of the basic syntactic types, plus host language functions and tuples. This definition style makes compilers easy to write and, in fact, almost identical to the simplest embedded interpreters. We illustrate this technique with a language Pan for the computationally intensive domain of image synthesis and manipulation. 1 1 Introduction The "embedded" approach has proved an excellent technique for ...
Computing Rigorous Bounds on the Solution of an Initial Value Problem for an Ordinary Differential Equation
, 1999
"... Compared to standard numerical methods for initial value problems (IVPs) for ordinary differential equations (ODEs), validated (also called interval) methods for IVPs for ODEs have two important advantages: if they return a solution to a problem, then (1) the problem is guaranteed to have a unique s ..."
Abstract
-
Cited by 29 (7 self)
- Add to MetaCart
Compared to standard numerical methods for initial value problems (IVPs) for ordinary differential equations (ODEs), validated (also called interval) methods for IVPs for ODEs have two important advantages: if they return a solution to a problem, then (1) the problem is guaranteed to have a unique solution, and (2) an enclosure of the true solution is produced. To date, the only effective approach for computing guaranteed enclosures of the solution of an IVP for an ODE has been interval methods based on Taylor series. This thesis derives a new approach, an interval Hermite-Obreschkoff (IHO) method, for computing such enclosures. Compared to interval Taylor series (ITS) methods, for the same order and stepsize, our IHO scheme has a smaller truncation error and better...
Concepts: Linguistic support for generic programming in C
- SIGPLAN Notices
, 2006
"... Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, ..."
Abstract
-
Cited by 26 (5 self)
- Add to MetaCart
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.
Synthesizing objects
, 1999
"... Abstract. This paper argues that the current OO technology does not support reuse and configurability in an effective way. This problem can be addressed by augmenting OO analysis and design with feature modeling and by applying generative implementation techniques. Feature modeling allows capturing ..."
Abstract
-
Cited by 23 (2 self)
- Add to MetaCart
Abstract. This paper argues that the current OO technology does not support reuse and configurability in an effective way. This problem can be addressed by augmenting OO analysis and design with feature modeling and by applying generative implementation techniques. Feature modeling allows capturing the variability of domain concepts. Concrete concept instances can then be synthesized from abstract specifications. Using a simple example of a configurable list component, we demonstrate the application of feature modeling and how to implement a feature model as a generator. We introduce the concepts of configuration repositories and configuration generators and show how to implement them using object-oriented, generic, and generative language mechanisms. The configuration generator utilizes C++ template metaprogramming, which enables its execution at compile-time. 1
Broadway: A Compiler for Exploiting the Domain-Specific Semantics of Software Libraries
, 2004
"... This paper describes our experiences in using the Broadway compiler to support domain-specific compiler optimizations. Our goal is to provide compiler support for a wide range of domains and to do so in the context of existing programming languages. Therefore we focus on a technique that we call lib ..."
Abstract
-
Cited by 20 (1 self)
- Add to MetaCart
This paper describes our experiences in using the Broadway compiler to support domain-specific compiler optimizations. Our goal is to provide compiler support for a wide range of domains and to do so in the context of existing programming languages. Therefore we focus on a technique that we call library-level optimization, which recognizes and exploits the domain-specific semantics of software libraries. The key to our system is a separation of concerns: compiler expertise is built into the Broadway compiler machinery, while domain expertise resides in separate annotation files that are provided by domain experts. We describe how this system can optimize parallel linear algebra codes written using the PLAPACK library. We find that our annotations effectively capture PLAPACK expertise at several levels of abstraction, and that our compiler can automatically apply this expertise to produce considerable performance improvements. Our approach shows that the abstraction and modularity found in modern software can be as much as asset to the compiler as it is to the programmer.
Next-generation generic programming and its application to sparse matrix computations
- In Proceedings of International Conference on Supercomputing (ICS), 2000
, 2000
"... The contributions of this paper are the following. 1. We introduce a new variety of generic programming in which algorithm implementors use a different API than data structure designers, the gap between the API’s being bridged by restructuring compilers. One view of this approach is that it exploits ..."
Abstract
-
Cited by 17 (3 self)
- Add to MetaCart
The contributions of this paper are the following. 1. We introduce a new variety of generic programming in which algorithm implementors use a different API than data structure designers, the gap between the API’s being bridged by restructuring compilers. One view of this approach is that it exploits restructuring compiler technology to perform a novel kind of template instantiation. 2. We demonstrate the usefulness of this new generic programming technology by deploying it in a system that generates efficient sparse codes from high-level algorithms and specifications of sparse matrix formats. 3. We argue that sparse matrix formats should be viewed as indexed-sequential access data structures (in the database sense), and show that appropriate abstractions of the index structure of common formats can be conveyed to a restructuring compiler through the type system of a modern language that supports inheritance and templates. 1.
Generative Programming and Active Libraries (Extended Abstract)
, 1998
"... We describe generative programming, an approach to generating customized programming components or systems, and active libraries, which are based on this approach. In contrast to conventional libraries, active libraries may contain metaprograms implementing domainspecific code generation, optimi ..."
Abstract
-
Cited by 13 (4 self)
- Add to MetaCart
We describe generative programming, an approach to generating customized programming components or systems, and active libraries, which are based on this approach. In contrast to conventional libraries, active libraries may contain metaprograms implementing domainspecific code generation, optimizations, debugging, profiling and testing. Several working examples (Blitz++, GMCL, Xroma) are presented to illustrate the potential of active libraries. We discuss relevant implementation technologies.

