Goals of the GLAS project

Interface specification

GLAS aims to specify an interface for linear algebra libraries. This would enable application developers to program against a specific interface and others (e.g. machine vendors) to provide optimised implementations of this interface. These optimised implementations might be deduced from the reference implementation but aditionally take into account machine-specific instructions, memory hierarchies or other machine-tuned libraries (e.g. BLAS)

The primary design goals for this interface are:

Generic interface

Specifying a generic interface basically comes down to specifying concepts and models that implement these concepts.

Not only does GLAS aim to provide generics in respect to the value_type of the vectors and matrices. GLAS also aims to be generic in respect to

Linear algebra operations

GLAS is first and foremost oriented towards generic linear algebra operations. As such you might think of it as a generic interface of BLAS. However the vectors and matrices developed inside GLAS can serve in a very wide range of applications. Because of the generics, supporting a very wide range of different applications does not imply to compromise the basic goal and will thus be considered.

GLAS aims to specify containers (and views) but also algorithms. The targeted algorithms are initially BLAS-like operations but the set of algorithms might extend over time in collaboration with the community.

Reference implementation

In addition to specifying a generic interface, a reference implementation will be developed in C++. This will be developed in sync with the specification of the interface to test the interface specification.