Boost logo

Glas :

[glas] recent work

From: Karl Meerbergen (Karl.Meerbergen_at_[hidden])
Date: 2007-08-13 03:59:55


Hi,

I was very motivated last week to do some developments in GLAS since my
colleague Yvette is working on algorithms for structured matrices
(semi-separable, e.g.).

Currently, the following is available in GLAS:

- vector algorithms:
  vector + vector
  vector - vector
  scalar * vector
  vector / scalar
  dot( vector, vector )
  norm_2( vector )

- assignments:
  vector = vector expression
  vector += vector expression
  vector -= vector expression
  scalar = norm_2( vector expression )
  scalar = dot( vector expression, vector expression )
 
- matrix algorithms:
  matrix * vector
  trans( matrix )
  column( matrix )
  column_range( matrix )

- containers:
  dense_vector<T>
  dense_matrix<T, Orientation>

- the toolbox la contains implementations for operators; +, -, *, +=, -=

Implementation is for the glas backend only at this stage. The
implementation of the BLAS backend will be the next step for performing
timing comparisons. All is for dense vectors currently.

The organisation of the include files can be improved, as well as the
doc html pages. These are not complete yet. The vector algorithms are
currently subdivided into two classes.
1) At assignment, one loop evaluates the whole expression
e.g. w = x + y + z is evaluated in one loop
2) At assignment, the expression is evaluated term by term, e.g.
w = x + y + z is split up as
w = x ; w += y ; w += z ;

norm_2 can only be computed for vector expressions that can be evaluated
in a single loop, otherwise you need a temporary vector to store
intermediate results, which glas does not create automatically. A
similar restriction holds for dot().

The coming weeks, I will do some tidying up, documentation and
reorganisation of the include files.
I am trying to keep the page
http://www.cs.kuleuven.be/~karlm/glas/
up to date as well.

Have a nice day,

Karl