Re: GSOC 2013

Jesse Perla <[email protected]>
Newsgroups gmane.comp.lib.boost.ublas
Message-ID <[email protected]>
Nasos Iliopoulos <nasos_i <at> hotmail.com> writes:
>       Since mdsd:array is a generic multi-dimensional container it is
>       not bound to algebraic operations. I expect that with proper
>       aligned memory allocation and SSE aglorithms (It is easy to add a
>       custom storage container that supports that) it will be as fast as
>       MKL, GotoBLAS, Eigen or armadillo. I believe that within that

ublas is great - and I certainly prefer its functional syntax to that of Eigen - 
but direct additions to it would have only a modest effect on the state of 
scientific computing.

The lack of a standardized container for storage and inter-operability of 
vectors, matrices, and multi-arrays is the single biggest impediment to c++ 
becoming the premier scientific computing language.  So what would make a major 
contribution is something that could form the kernel of a array, matrix, multi-
array library for the STD - and serve as a point of interoperability between the 
various numerical libraries.

So, can I make an even more radical suggestion for this sort of library and 
ublas?
* Implement a multi-dimensional array library with the intention of proposing 
for C++14 or C++17 standard library.  Static number of dimensions, static or 
dynamic extents for those dimensions, lower dimensional slices, etc.
* There is no way that an expression template library for linear algebra will be 
standardized in the near future, but that doesn't mean that an interoperable 
storage format couldn't become standardized.  Let the expression template 
libraries innovate independently as long as they allow adaptation with a common 
storage better than raw pointers.
* I really like the mdsdarray approach, though I am not entirely sure that 
having both dynamic and fixed extents in the same multi_array is necessary.
* Another, of course, which could serve as the core of this is 
boost::multi_array.  In fact, I think a pared down version where some of the 
fancier features are removed and a few added (e.g., add fixed extent 
multi_arrays, replace the generic storage ordering to be a static row vs. column 
major, cut down on the fancy slicing notation, etc.)
* In general, my feeling is that this should have multi-dimensional array, 
rather than matrix or vector semantics as those should be done in an expression 
template library

What relationship could this have to ublas and the numeric bindings?
* The 1 and 2 dimensional versions or slices could be adapted as vectors and 
matrices (i.e. like fortran, matlab, numpy, etc.)
* Ublas adaptors could be written for this to work with existing ublas 
expression templates, which showcases how this sort of thing could create 
interoperability between libraries
* Bindings for the the numeric_bindings would make these immediately usable with 
lapack, etc.
* Ultimately, this class could serve as the native storage container for ublas, 
but that may not be a great idea.

You will note that a subset of this is being discussed right now on 
https://groups.google.com/a/isocpp.org/forum/?fromgroups=#!topic/std-
proposals/WODPvhOt0PM although this is missing the necessary features of fortran 
storage options and dynamic vs. static allocation.

_______________________________________________
ublas mailing list
[email protected]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.