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.