Abstraction based programming has been traditionally seen as an approach that improves software quality at the cost of losing performance. In this paper, we explore the cost of abstraction by transforming the PARSEC benchmark uidanimate application from low-level, hand-optimized C to a higher-level and more general C++ version that is a more direct representation of the algorithms. We eliminate global variables and constants, use vectors of a user-de ned particle type rather than vectors of built-in types, and separate the concurrency model from the application model. The result is a C++ program that is smaller, less complex, and measurably faster than the original. The benchmark was chosen to be representative of many applications and our...
The programmer's most powerful tool for controlling complexity in program design is abstraction...
Refactoring is the process of changing the structure of a program without changing its behaviour. Re...
Many programming problems are assumed to require low-level programming approaches, due to highly spe...
Abstraction based programming has been traditionally seen as an approach that improves software qual...
The software crisis within scientific computing has been that application codes become larger and mo...
ions The abstractions suggested by this categorization come from fundamental properties of execution...
Parallelising sequential applications is usually a very hard job, due to many different ways in whic...
<p>Parallelising sequential applications is usually a very hard job, due to many different ways in w...
Parallelising sequential applications is usually a very hard job, due to many different ways in whic...
The upcoming C and C++ revised standards add concurrency to the languages, for the first time, in th...
On the way to Exascale, programmers face the increasing challenge of having to support multiple hard...
Application codes reliably under perform the advertised performance of existing architectures, compi...
High level programming language features have long been seen as improving programmer efficiency at s...
The notion of refactoring —transforming the sourcecode of an object-oriented program without changin...
Abstract. Optimizing compilers have a long history of applying loop transformations to C and Fortran...
The programmer's most powerful tool for controlling complexity in program design is abstraction...
Refactoring is the process of changing the structure of a program without changing its behaviour. Re...
Many programming problems are assumed to require low-level programming approaches, due to highly spe...
Abstraction based programming has been traditionally seen as an approach that improves software qual...
The software crisis within scientific computing has been that application codes become larger and mo...
ions The abstractions suggested by this categorization come from fundamental properties of execution...
Parallelising sequential applications is usually a very hard job, due to many different ways in whic...
<p>Parallelising sequential applications is usually a very hard job, due to many different ways in w...
Parallelising sequential applications is usually a very hard job, due to many different ways in whic...
The upcoming C and C++ revised standards add concurrency to the languages, for the first time, in th...
On the way to Exascale, programmers face the increasing challenge of having to support multiple hard...
Application codes reliably under perform the advertised performance of existing architectures, compi...
High level programming language features have long been seen as improving programmer efficiency at s...
The notion of refactoring —transforming the sourcecode of an object-oriented program without changin...
Abstract. Optimizing compilers have a long history of applying loop transformations to C and Fortran...
The programmer's most powerful tool for controlling complexity in program design is abstraction...
Refactoring is the process of changing the structure of a program without changing its behaviour. Re...
Many programming problems are assumed to require low-level programming approaches, due to highly spe...