Explore chapters and articles related to this topic
Optimizing Discrete Modeling and Simulation for Real-Time Constraints with Metaprogramming
Published in Katalin Popovici, Pieter J. Mosterman, Real-Time Simulation Technologies, 2017
Luc Touraille, Jonathan Caux, David Hill
A pioneer in the area of C++ active EDSLs is Blitz++ [38], a scientific computing library that uses metaprogramming to optimize numerical computations at compile time, making it possible to equal and sometimes exceed the speed of FORTRAN. Since then, frameworks have been developed to facilitate the writing of C++ EDSL. The most accomplished one is probably Boost.Proto [39], a C++ EDSL for defining C++ EDSLs. This active library makes it extremely easy to define grammars, evaluate or transform expression trees, and so on, all in C++ and with most of the computation happening at compile time. It has been successfully exploited in several domains such as parsing and output generation (Boost.Spirit), functional programming (Boost.Phoenix), or parallel programming (Skell BE [40]).
Development and Optimisation of a DNS Solver Using Open-source Library for High-performance Computing
Published in International Journal of Computational Fluid Dynamics, 2021
Hamid Hassan Khan, Syed Fahad Anwer, Nadeem Hasan, Sanjeev Sanghi
Blitz++ (Veldhuizen 2001) is a header-only library that offers array operation in scientific computing. The Blitz++ optimise the C++ scientific computing, similar to Fortran's performance and some superior functionality. The Blitz++ library provides an object-oriented representation of arrays, matrices, and vectors in C++, unlike the Fortran array operation is not object-oriented. The class template defines the multi-dimensional arrays, where T is the numeric type, and N is the rank of the array. Therefore, the classes are exposed to the present namespace:
Africa
China
Japan