03.12.2012 Views

C++ for Scientists - Technische Universität Dresden

C++ for Scientists - Technische Universität Dresden

C++ for Scientists - Technische Universität Dresden

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ++ Libraries <strong>for</strong> Scientific Computing<br />

Chapter 11<br />

TODO: Introducing words.<br />

11.1 GLAS: Generic Linear Algebra Software<br />

11.1.1 Introduction<br />

Software kernels <strong>for</strong> dense and sparse linear algebra have been developed over many decades.<br />

The development of the BLAS [?] [?] [?] [?] [?] in FORTRAN and later the similar work in<br />

<strong>C++</strong>, see MTL [?], Blitz++, to name a few.<br />

Currently, more and more scientific software is written in <strong>C++</strong>, but the language does not<br />

provide us with dense and sparse vector and matrix concepts and algorithms, as this is the<br />

case <strong>for</strong> Matlab. This makes exchanging <strong>C++</strong> software harder than, <strong>for</strong> example, Fortran 90<br />

software, which has dense vector and matrix concepts defined in the language. Note that<br />

Fortran 90 does not have sparse and structured matrix types such as symmetric or upper<br />

triangular, or banded matrices.<br />

11.1.2 Goal<br />

The goal of the GLAS project is to open the discussion on standardization <strong>for</strong> <strong>C++</strong> programming.<br />

The goal is not to present a standard as such, but may be a first step to achieve this<br />

goal.<br />

We realize that this is very ambitious. We think, the GLAS proposal meets the goals, but the<br />

internals are still rather complicated, which makes extensions less straight<strong>for</strong>ward. GLAS is a<br />

generic software package using advanced meta programming tools such as the Boost MPL, but<br />

this is invisible to the user who does not want to add extensions to GLAS. A minor knowledge<br />

about template programming and expression templates is required <strong>for</strong> making proper use of the<br />

software.<br />

This version does not use Concept <strong>C++</strong>, since we have encountered instability problems with<br />

the Concept-GCC compiler and found it hard to work with expression-templates.<br />

243

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!