On Tue, Jan 1, 2013 at 10:25 AM, Phil Steitz <phil.ste...@gmail.com> wrote:

> Agreed we should keep the discussion concrete.  Sebastien and Luc
> have both mentioned specific examples where the overhead of matrix
> data copy and storage creates practical problems.  Konstantin
> mentioned another (Gaussian elimination) which is sort of humorous
> because we have in fact effectively implemented that already,
> embedded in the LU decomp class - but to do it, we took the approach
> that I mentioned above, which is to abandon the linear algebraic
> objects and operate directly on double arrays.
>

And frankly, that can be disastrous for performance as well.  As Konstantin
mentioned, it is critical to have BLAS operations exposed to get good
performance.  Level 2 and 3 operations are particularly important.

Phil's allusions to collections is particularly apt.  There are immutable
collections (see guava) and they are very handy.  And there are mutable
collections and they are very handy.  And there are multi-thread
performance friendly mutable collections (see ConcurrentHashMap).  They all
share a fairly simple API and they have some very simple abstract class
implementation helpers.

Reply via email to