24,982 research outputs found
Recommended from our members
A comparison of performance-enhancing strategies for parallel numerical object-oriented frameworks
Performance short of that of C or FORTRAN 77 is a significant obstacle to general acceptance of object-oriented C++ frameworks in high-performance parallel scientific computing, nonetheless, their value in simplifying complex computations is inarguable. Singular data points of good performance for object-oriented libraries/frameworks have been interesting, but a systematic analysis of the performance issues has not been done. This paper explores just a few of these issues and reports on the use of three mechanisms for enhancing the performance of object-oriented frameworks within numerical computation. The first is the commonly-use of binary overloaded operators (though implemented with substantial internal optimizations), the second is the use of expression templates, and the third is the use of an optimizing preprocessor. The first two have been completely implemented and are available within the A++/P++ array class library, the third, ROSE++, represents work in progress. This paper provides some perspective on the types of optimizations that the authors consider important within their numerical applications using OVERTURE involving complex geometry and AMR on parallel architectures
Contract-Based General-Purpose GPU Programming
Using GPUs as general-purpose processors has revolutionized parallel
computing by offering, for a large and growing set of algorithms, massive
data-parallelization on desktop machines. An obstacle to widespread adoption,
however, is the difficulty of programming them and the low-level control of the
hardware required to achieve good performance. This paper suggests a
programming library, SafeGPU, that aims at striking a balance between
programmer productivity and performance, by making GPU data-parallel operations
accessible from within a classical object-oriented programming language. The
solution is integrated with the design-by-contract approach, which increases
confidence in functional program correctness by embedding executable program
specifications into the program text. We show that our library leads to modular
and maintainable code that is accessible to GPGPU non-experts, while providing
performance that is comparable with hand-written CUDA code. Furthermore,
runtime contract checking turns out to be feasible, as the contracts can be
executed on the GPU
Towards Test Driven Development for Computational Science with pFUnit
Developers working in Computational Science & Engineering (CSE)/High Performance Computing (HPC) must contend with constant change due to advances in computing technology and science. Test Driven Development (TDD) is a methodology that mitigates software development risks due to change at the cost of adding comprehensive and continuous testing to the development process. Testing frameworks tailored for CSE/HPC, like pFUnit, can lower the barriers to such testing, yet CSE software faces unique constraints foreign to the broader software engineering community. Effective testing of numerical software requires a comprehensive suite of oracles, i.e., use cases with known answers, as well as robust estimates for the unavoidable numerical errors associated with implementation with finite-precision arithmetic. At first glance these concerns often seem exceedingly challenging or even insurmountable for real-world scientific applications. However, we argue that this common perception is incorrect and driven by (1) a conflation between model validation and software verification and (2) the general tendency in the scientific community to develop relatively coarse-grained, large procedures that compound numerous algorithmic steps.We believe TDD can be applied routinely to numerical software if developers pursue fine-grained implementations that permit testing, neatly side-stepping concerns about needing nontrivial oracles as well as the accumulation of errors. We present an example of a successful, complex legacy CSE/HPC code whose development process shares some aspects with TDD, which we contrast with current and potential capabilities. A mix of our proposed methodology and framework support should enable everyday use of TDD by CSE-expert developers
Automating Dynamic Decoupling in Object-Oriented Modelling and Simulation Tools
Abstract This manuscript presents a technique that allows Equationbased Object-Oriented Modelling Tools (EOOMT) to exploit Dynamic Decoupling (DD) for partitioning a complex model into "weakly coupled" submodels. This enhances simulation efficiency, and is naturally keen to parallel integration or co-simulation. After giving an overview of the problem and of related work, we propose a method to automate DD by means of a novel structural analysis of the system -called "cycle analysis" -and of a mixed-mode integration method. Also, some considerations are exposed on how the presented technique can be integrated in EOOMT, considering as representative example a Modelica translator. Simulation tests demonstrate the technique, and the realised implementation is released as free software
The SOS Platform: Designing, Tuning and Statistically Benchmarking Optimisation Algorithms
open access articleWe present Stochastic Optimisation Software (SOS), a Java platform facilitating the algorithmic design process and the evaluation of metaheuristic optimisation algorithms. SOS reduces the burden of coding miscellaneous methods for dealing with several bothersome and time-demanding tasks such as parameter tuning, implementation of comparison algorithms and testbed problems, collecting and processing data to display results, measuring algorithmic overhead, etc. SOS provides numerous off-the-shelf methods including: (1) customised implementations of statistical tests, such as the Wilcoxon rank-sum test and the Holm–Bonferroni procedure, for comparing the performances of optimisation algorithms and automatically generating result tables in PDF and formats; (2) the implementation of an original advanced statistical routine for accurately comparing couples of stochastic optimisation algorithms; (3) the implementation of a novel testbed suite for continuous optimisation, derived from the IEEE CEC 2014 benchmark, allowing for controlled activation of the rotation on each testbed function. Moreover, we briefly comment on the current state of the literature in stochastic optimisation and highlight similarities shared by modern metaheuristics inspired by nature. We argue that the vast majority of these algorithms are simply a reformulation of the same methods and that metaheuristics for optimisation should be simply treated as stochastic processes with less emphasis on the inspiring metaphor behind them
Library of model components for process simulation relevant to production activities, Prototype 1 versions
Production Economics,
- …