Karl Rupp - Academia.edu (original) (raw)
Papers by Karl Rupp
Proceedings of the 2010 International Symposium on Symbolic and Algebraic Computation - ISSAC '10, 2010
In most existing software packages for the finite element method it is not possible to supply the... more In most existing software packages for the finite element method it is not possible to supply the weak formulation of the problem of interest in a compact form, which was in the early days of programming due to the low abstraction capabilities of available programming languages. With the advent of pure object-oriented programming, abstraction was long said to be achievable only in trade-off with run time efficiency. In this work we show that it is possible to obtain both a high level of abstraction and good run time efficiency by the use of template metaprogramming in C++. We focus on a mathematical expressions engine, by which element matrices are computed during compile time and by which the weak formulation can be specified in a single line of code. A comparison of system matrix assembly times of existing finite element software shows that the template metaprogramming approach is up to an order of magnitude faster than traditional software designs.
A powerful control language, named ViennaIPD, has been developed. The library based software is c... more A powerful control language, named ViennaIPD, has been developed. The library based software is capable of reading complex input datasets which can be accessed from C/C++ applications by a programming interface. ViennaIPD supports a convenient C-like input file language, object oriented structuring of datasets, powerful inheritance mechanisms and a unit system. The input file language as well as the programming interface is discussed in detail.
Monte Carlo (DSMC) method. In this method the real gas is approximated by a system of numerical p... more Monte Carlo (DSMC) method. In this method the real gas is approximated by a system of numerical particles that move according to the laws of mechanics and collide according to stochastic rules based on the intermolecular potential. This method has been successfully applied in aerospace engineering. A challenge is to extend the method to applications, e.g., low Mach number flows, where the signal-to-noise ratio is small. Some recent results related to weighted particles will be presented. A second application area of stochastic particle methods is chemical engineering, e.g., soot modelling, production of nanoparticles, granulate processing. The governing equations are various generalizations of Smoluchowski's coagulation equation, including fragmentation, growth, inception, and other processes. An application related to a five-dimensional granulation model will be considered. A particular challenge is the strongly fluctuating number of numerical particles in the direct simulation method. Alternatives are provided by methods using weighted particles.
One of the major drawbacks of computing with graphics adapters is the limited available memory fo... more One of the major drawbacks of computing with graphics adapters is the limited available memory for relevant problem sizes. To overcome this limitation for the ViennaCL library, we investigate a partitioning approach for one of the standard benchmark problems in High-Performance Computing (HPC), namely the dense matrix-matrix product. We apply this partitioning approach to problems exceeding the available memory on graphics adapters. Moreover, we investigate the applicability on distributed memory systems by facilitating the Message Passing Interface (MPI). Our approach is presented in detail and benchmark results are given.
We present the free open source plugin execution framework ViennaX for modularizing and paralleli... more We present the free open source plugin execution framework ViennaX for modularizing and parallelizing scientific simulations. In general, functionality is abstracted by the notion of a task, which is implemented as a plugin. The plugin system facilitates the utilization of both, already available functionality as well as new implementations. Each task can define arbitrary data dependencies which are used by ViennaX to build a task graph. The framework supports the execution of this dependence graph based on the Message Passing Interface (MPI) in either a serial or a parallel fashion. The applied modular approach allows for defining highly flexible simulations, as plugins can be easily exchanged. The framework's general design as well as implementation details are discussed. Applications based on the Mandelbrot set and the solution of a partial differential equation are investigated and performance results are shown.
[
Proceedings of the IEEE, 2000
Procedia Computer Science, 2012
ABSTRACT High-level C++ proxies for the convenient manipulation of subvectors and submatrices on ... more ABSTRACT High-level C++ proxies for the convenient manipulation of subvectors and submatrices on OpenCL-enabled de-vices are introduced. It is demonstrated that the programming convenience of standard host-based code can be re-tained using native C++ language features only, even if massively parallel computing architectures such as graphics processing units are employed. The required modifications of the underlying OpenCL kernels are discussed and a case study of an implementation of the QR-factorization is given. Benchmark results confirm that the convenience of purely CPU-based libraries can be preserved without sacrificing performance of OpenCL-enabled devices, particularly graphics processing units.
Journal of Computational and Applied Mathematics, 2013
An approach for increasing the flexibility and reusability of finite element applications for sci... more An approach for increasing the flexibility and reusability of finite element applications for scientific computing is investigated by utilizing the ViennaX framework. Implementations are decoupled into components, allowing for extensible application setups as well as convenient changes in the simulation flow. The feasibility of our approach is shown by decoupling finite element implementations, provided by the ViennaFEM and the deal.II library, respectively. A ViennaFEM elasticity problem is highly decoupled into separate components, whereas an adaptive mesh refinement example provided by the deal.II library is used to show ViennaX's support for execution loops. Finally, we underline the high level of flexibility and reusability by outlining the transformation from the depicted applications into a finite volume-based solution of the Poisson equation.
IEEE Transactions on Semiconductor Manufacturing, 2000
There have been numerous papers and discussions about the lives and deaths of Moore's Law, all of... more There have been numerous papers and discussions about the lives and deaths of Moore's Law, all of them dealing with several technological questions. In this paper, we consider economic limitations to the exponential growth of the number of components per chip. As the presented growth model shows, economics constitute indeed a potential slow-down mechanism.
Modern programming techniques and libraries provide software developers with a vast set of functi... more Modern programming techniques and libraries provide software developers with a vast set of functionality and flexibility. However, applying the associated techniques like generic, functional, or meta-programming requires advanced programming skills. In this work we investigate three tasks in the context of scientific computing, where we utilize modern programming techniques as well as the Boost libraries. We introduce our approaches and show that applying those techniques and the Boost libraries results in highly versatile, maintainable, compact, and extendible code.
We present an approach for a generic, multidimensional run-time data structure suitable for highp... more We present an approach for a generic, multidimensional run-time data structure suitable for highperformance scientific computing in C++. Our approach for associating meta-information with the data structure as well as different underlying datatypes is depicted. The highperformance, multi-dimensional data access is realized by utilizing a heterogenous compile-time container generation function. The generalized data structure implementation is discussed as well as performance results are shown with respect to reference implementations. We show that our approach is not only highly flexible but also offers high-performance data access by simultaneously relying on a small code base.
In the area of scientific computing, abstraction was long said to be achievable only in exchange ... more In the area of scientific computing, abstraction was long said to be achievable only in exchange for run time efficiency. With the rise of template metaprogramming in C++ in the 1990s, run time efficiency comparable to hand tuned code could be achieved for isolated operations such as matrixvector multiplication . In more complex scenarios such as large finite element simulation packages, traditional object oriented programming is used for most abstractions, so the resulting code usually suffers from reduced run time efficiency. We have applied rigorous template metaprogramming to both the mesh handling and the mathematical algorithms acting on top, and obtain a high level of abstraction at a run time efficiency comparable to that of hand-tuned code. Since the weak formulation of the underlying mathematical problem is directly transferred to code, the code effectively meets the abstraction of the mathematical description, including an eventual independence from the underlying spatial dimension.
Applied Mathematics and Computation, 2015
The design and implementation aspects of the dedicated C++ materials library ViennaMaterials for ... more The design and implementation aspects of the dedicated C++ materials library ViennaMaterials for science and engineering is discussed. The library's focus is to provide flexible application programming interfaces for accessing material data. Special attention is on handling physical units as well as supporting mathematical material models via a nested code evaluation mechanism. The challenges of supporting different programming languages, physical units, mathematical models, and a run-time setting are tackled by utilizing external tools on top of a flexible object-oriented library structure. Application examples covering the utilization with a numerical simulation as well as a remote network-based material database are discussed to underline the usability of ViennaMaterials.
Proceedings of the 2010 International Symposium on Symbolic and Algebraic Computation - ISSAC '10, 2010
In most existing software packages for the finite element method it is not possible to supply the... more In most existing software packages for the finite element method it is not possible to supply the weak formulation of the problem of interest in a compact form, which was in the early days of programming due to the low abstraction capabilities of available programming languages. With the advent of pure object-oriented programming, abstraction was long said to be achievable only in trade-off with run time efficiency. In this work we show that it is possible to obtain both a high level of abstraction and good run time efficiency by the use of template metaprogramming in C++. We focus on a mathematical expressions engine, by which element matrices are computed during compile time and by which the weak formulation can be specified in a single line of code. A comparison of system matrix assembly times of existing finite element software shows that the template metaprogramming approach is up to an order of magnitude faster than traditional software designs.
A powerful control language, named ViennaIPD, has been developed. The library based software is c... more A powerful control language, named ViennaIPD, has been developed. The library based software is capable of reading complex input datasets which can be accessed from C/C++ applications by a programming interface. ViennaIPD supports a convenient C-like input file language, object oriented structuring of datasets, powerful inheritance mechanisms and a unit system. The input file language as well as the programming interface is discussed in detail.
Monte Carlo (DSMC) method. In this method the real gas is approximated by a system of numerical p... more Monte Carlo (DSMC) method. In this method the real gas is approximated by a system of numerical particles that move according to the laws of mechanics and collide according to stochastic rules based on the intermolecular potential. This method has been successfully applied in aerospace engineering. A challenge is to extend the method to applications, e.g., low Mach number flows, where the signal-to-noise ratio is small. Some recent results related to weighted particles will be presented. A second application area of stochastic particle methods is chemical engineering, e.g., soot modelling, production of nanoparticles, granulate processing. The governing equations are various generalizations of Smoluchowski's coagulation equation, including fragmentation, growth, inception, and other processes. An application related to a five-dimensional granulation model will be considered. A particular challenge is the strongly fluctuating number of numerical particles in the direct simulation method. Alternatives are provided by methods using weighted particles.
One of the major drawbacks of computing with graphics adapters is the limited available memory fo... more One of the major drawbacks of computing with graphics adapters is the limited available memory for relevant problem sizes. To overcome this limitation for the ViennaCL library, we investigate a partitioning approach for one of the standard benchmark problems in High-Performance Computing (HPC), namely the dense matrix-matrix product. We apply this partitioning approach to problems exceeding the available memory on graphics adapters. Moreover, we investigate the applicability on distributed memory systems by facilitating the Message Passing Interface (MPI). Our approach is presented in detail and benchmark results are given.
We present the free open source plugin execution framework ViennaX for modularizing and paralleli... more We present the free open source plugin execution framework ViennaX for modularizing and parallelizing scientific simulations. In general, functionality is abstracted by the notion of a task, which is implemented as a plugin. The plugin system facilitates the utilization of both, already available functionality as well as new implementations. Each task can define arbitrary data dependencies which are used by ViennaX to build a task graph. The framework supports the execution of this dependence graph based on the Message Passing Interface (MPI) in either a serial or a parallel fashion. The applied modular approach allows for defining highly flexible simulations, as plugins can be easily exchanged. The framework's general design as well as implementation details are discussed. Applications based on the Mandelbrot set and the solution of a partial differential equation are investigated and performance results are shown.
[
Proceedings of the IEEE, 2000
Procedia Computer Science, 2012
ABSTRACT High-level C++ proxies for the convenient manipulation of subvectors and submatrices on ... more ABSTRACT High-level C++ proxies for the convenient manipulation of subvectors and submatrices on OpenCL-enabled de-vices are introduced. It is demonstrated that the programming convenience of standard host-based code can be re-tained using native C++ language features only, even if massively parallel computing architectures such as graphics processing units are employed. The required modifications of the underlying OpenCL kernels are discussed and a case study of an implementation of the QR-factorization is given. Benchmark results confirm that the convenience of purely CPU-based libraries can be preserved without sacrificing performance of OpenCL-enabled devices, particularly graphics processing units.
Journal of Computational and Applied Mathematics, 2013
An approach for increasing the flexibility and reusability of finite element applications for sci... more An approach for increasing the flexibility and reusability of finite element applications for scientific computing is investigated by utilizing the ViennaX framework. Implementations are decoupled into components, allowing for extensible application setups as well as convenient changes in the simulation flow. The feasibility of our approach is shown by decoupling finite element implementations, provided by the ViennaFEM and the deal.II library, respectively. A ViennaFEM elasticity problem is highly decoupled into separate components, whereas an adaptive mesh refinement example provided by the deal.II library is used to show ViennaX's support for execution loops. Finally, we underline the high level of flexibility and reusability by outlining the transformation from the depicted applications into a finite volume-based solution of the Poisson equation.
IEEE Transactions on Semiconductor Manufacturing, 2000
There have been numerous papers and discussions about the lives and deaths of Moore's Law, all of... more There have been numerous papers and discussions about the lives and deaths of Moore's Law, all of them dealing with several technological questions. In this paper, we consider economic limitations to the exponential growth of the number of components per chip. As the presented growth model shows, economics constitute indeed a potential slow-down mechanism.
Modern programming techniques and libraries provide software developers with a vast set of functi... more Modern programming techniques and libraries provide software developers with a vast set of functionality and flexibility. However, applying the associated techniques like generic, functional, or meta-programming requires advanced programming skills. In this work we investigate three tasks in the context of scientific computing, where we utilize modern programming techniques as well as the Boost libraries. We introduce our approaches and show that applying those techniques and the Boost libraries results in highly versatile, maintainable, compact, and extendible code.
We present an approach for a generic, multidimensional run-time data structure suitable for highp... more We present an approach for a generic, multidimensional run-time data structure suitable for highperformance scientific computing in C++. Our approach for associating meta-information with the data structure as well as different underlying datatypes is depicted. The highperformance, multi-dimensional data access is realized by utilizing a heterogenous compile-time container generation function. The generalized data structure implementation is discussed as well as performance results are shown with respect to reference implementations. We show that our approach is not only highly flexible but also offers high-performance data access by simultaneously relying on a small code base.
In the area of scientific computing, abstraction was long said to be achievable only in exchange ... more In the area of scientific computing, abstraction was long said to be achievable only in exchange for run time efficiency. With the rise of template metaprogramming in C++ in the 1990s, run time efficiency comparable to hand tuned code could be achieved for isolated operations such as matrixvector multiplication . In more complex scenarios such as large finite element simulation packages, traditional object oriented programming is used for most abstractions, so the resulting code usually suffers from reduced run time efficiency. We have applied rigorous template metaprogramming to both the mesh handling and the mathematical algorithms acting on top, and obtain a high level of abstraction at a run time efficiency comparable to that of hand-tuned code. Since the weak formulation of the underlying mathematical problem is directly transferred to code, the code effectively meets the abstraction of the mathematical description, including an eventual independence from the underlying spatial dimension.
Applied Mathematics and Computation, 2015
The design and implementation aspects of the dedicated C++ materials library ViennaMaterials for ... more The design and implementation aspects of the dedicated C++ materials library ViennaMaterials for science and engineering is discussed. The library's focus is to provide flexible application programming interfaces for accessing material data. Special attention is on handling physical units as well as supporting mathematical material models via a nested code evaluation mechanism. The challenges of supporting different programming languages, physical units, mathematical models, and a run-time setting are tackled by utilizing external tools on top of a flexible object-oriented library structure. Application examples covering the utilization with a numerical simulation as well as a remote network-based material database are discussed to underline the usability of ViennaMaterials.