[crossposting] glas and mtl4 - what are the commons and differences

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[crossposting] glas and mtl4 - what are the commons and differences

Maik Beckmann
Hello dear mtl4 and glas people

I know ublas,
  - http://www.boost.org/libs/numeric/ublas/doc/index.htm
its potential successor glas (my impression)
  - http://sourceforge.net/projects/glas
and since yesterday mtl4
  - http://www.osl.iu.edu/research/mtl/mtl4/

ublas is the lib I use today. My impression is that glas is the implemented by
peoples (mainly Karl Meerbergen) who worked on ublas and want to rewrite it
from scratch with C++0x in mind.

On the other side theres mtl4, which will be the successor mtl2 (mainly
developed by Peter Gottschling).

What are the common goals and what are the differences between both template
libs?

The first thing I noticed is that both started using C++0x concepts and it
might be a good idea to share experiences on this very new area of C++
programming.

Another thing are blas/lapack backends like atlas. I think the numeric
bindings contained by boost-sandbox do a very good job.

Regards,
- Maik Beckmann  
_______________________________________________
glas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Mtl4] [crossposting] glas and mtl4 - what are the commons and differences

Peter Gottschling
Hello Maik,

I don't think that one can reduce GLAS to a mere ublas successor
although there is some overlap in the developers (Toon Knappen also
worked on both projects). The main goal of GLAS is the development of a
common interface for algebraic software accompanied with a prototype
implementation.  This is also described on the GLAS web page.  And maybe
Karl will tell you more about it.

MTL4 is written with many ideas from MTL2.  However, it was developed
from scratch.  Some design choices were changed, e.g., MTL2 used shallow
copy assignment and MTL4 deep copy.

The differences between GLAS and MTL4 are mainly the priorities.  While
GLAS primarily develops a common generic interface to other libraries
like BLAS, LAPACK, MTL not without providing its own code, MTL4 is
primarily a C++ library not without interfacing to other libraries.  For
instance you can write A= B * C; in MTL4 and if possible the
multiplication is performed in BLAS otherwise in C++ with quite good
performance.  (Unfortunately I haven't found the time to implement this
dispatching for other operations.)

Karl and I work very well together and I'm optimistic that the behavior
of both libraries will be well synchronized.

Regarding concepts you observed very well that we worked a lot on this
(in many cases together) and this will certainly be an important feature
of generic libraries in the future. Nevertheless, we both are currently
waiting for the compiler prototype to become more stable before
continuing with writing concept code.  This is not meant as a critic on
conceptgcc, the work Doug Gregor did in the last year is ingenious but
not even a genius can do this in one year.

Otherwise we have to admit that both projects are still in an early
stage of development considered the gigantic mountain of work and the
rather limited human resources (so far).

I hope this answered your question a little bit.

Cheers,
Peter

Maik Beckmann schrieb:

> Hello dear mtl4 and glas people
>
> I know ublas,
>   - http://www.boost.org/libs/numeric/ublas/doc/index.htm
> its potential successor glas (my impression)
>   - http://sourceforge.net/projects/glas
> and since yesterday mtl4
>   - http://www.osl.iu.edu/research/mtl/mtl4/
>
> ublas is the lib I use today. My impression is that glas is the implemented by
> peoples (mainly Karl Meerbergen) who worked on ublas and want to rewrite it
> from scratch with C++0x in mind.
>
> On the other side theres mtl4, which will be the successor mtl2 (mainly
> developed by Peter Gottschling).
>
> What are the common goals and what are the differences between both template
> libs?
>
> The first thing I noticed is that both started using C++0x concepts and it
> might be a good idea to share experiences on this very new area of C++
> programming.
>
> Another thing are blas/lapack backends like atlas. I think the numeric
> bindings contained by boost-sandbox do a very good job.
>
> Regards,
> - Maik Beckmann  
> _______________________________________________
> MTL4 mailing list
> [hidden email]
> http://www.osl.iu.edu/mailman/listinfo.cgi/mtl4
>  

_______________________________________________
glas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Mtl4] [crossposting] glas and mtl4 - what are the commons and differences

Maik Beckmann
Am Mittwoch 14 November 2007 19:38:47 schrieb Peter Gottschling:
> I hope this answered your question a little bit.
>
> Cheers,
> Peter

Many thanks for this detailed answer!

Regarding conceptgcc: My impression from the gcc mailing list is that the next
step will be merging concepts into mainline gcc. This won't happen for
gcc-4.3 and there is no reason for not waiting for gcc-4.4 development to be
started.  


Regards,
Maik Beckmann
_______________________________________________
glas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [crossposting] glas and mtl4 - what are the commons and differences

Karl Meerbergen-2
In reply to this post by Maik Beckmann
Dear Maik,

Peter and I will look into this. I am not sure that GLAS and MTL have
the same goals, but there is a large amount of overlap, especially in
the algorithms and containers, which should clearly be exploited.

Bindings are indeed useful. They are used in GLAS for interfacing with
the BLAS.

Best wishes,

Karl



Maik Beckmann wrote:

> Hello dear mtl4 and glas people
>
> I know ublas,
>   - http://www.boost.org/libs/numeric/ublas/doc/index.htm
> its potential successor glas (my impression)
>   - http://sourceforge.net/projects/glas
> and since yesterday mtl4
>   - http://www.osl.iu.edu/research/mtl/mtl4/
>
> ublas is the lib I use today. My impression is that glas is the implemented by
> peoples (mainly Karl Meerbergen) who worked on ublas and want to rewrite it
> from scratch with C++0x in mind.
>
> On the other side theres mtl4, which will be the successor mtl2 (mainly
> developed by Peter Gottschling).
>
> What are the common goals and what are the differences between both template
> libs?
>
> The first thing I noticed is that both started using C++0x concepts and it
> might be a good idea to share experiences on this very new area of C++
> programming.
>
> Another thing are blas/lapack backends like atlas. I think the numeric
> bindings contained by boost-sandbox do a very good job.
>
> Regards,
> - Maik Beckmann  
> _______________________________________________
> glas mailing list
> [hidden email]
> http://lists.boost.org/mailman/listinfo.cgi/glas
>  

_______________________________________________
glas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas

karl.meerbergen.vcf (319 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

multi-dimensional arrays?

Neal Becker
In reply to this post by Peter Gottschling
I'm enthusiastically following mtl4 and glas developments.  One thing that
neither seems to address is arrays of dimension >2.  Is this true?
_______________________________________________
glas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: multi-dimensional arrays?

Evgenii Rudnyi
 >I'm enthusiastically following mtl4 and glas developments.
 >One thing that
 >neither seems to address is arrays of dimension >2.  Is this true?

NumPy supports multidimensional arrays:

http://www.scipy.org/NumPy

Evgenii Rudnyi
_______________________________________________
glas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: multi-dimensional arrays?

Neal Becker
On Wednesday 28 November 2007, Evgenii Rudnyi wrote:
>  >I'm enthusiastically following mtl4 and glas developments.
>  >One thing that
>  >neither seems to address is arrays of dimension >2.  Is this true?
>
> NumPy supports multidimensional arrays:
>
> http://www.scipy.org/NumPy
>

Yes it does.  Unfortunately, it doesn't have a nice c++ interface, AFAIK.

What I'd like is to be able to write generic algorithms in c++ that can use
various multi-dimensional containers, and then expose them to python.

So far, what I've done is expose various container types to python (ublas,
blitz++) using boost::python.  Then, instantiate algorithms using these
containers to expose to python.

Each lib has it's own issues.  ublas, for example, doesn't conform to all of
container concept (lacks constructor taking a pair of iterators), but that's
pretty easy to work around.

blitz takes a little work, because it lacks proper iterators.  I have built
boost::iterator adapters that handle that (perhaps not efficiently, though).

I don't know how to use numpy to get a nice generic interface on the c++ side.
_______________________________________________
glas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: multi-dimensional arrays?

Karl Meerbergen-2
Dear Neal,

I think we could add multi-dimensional arrays to glas. Could you make a
list of desired functionaties?

As a coincidence I attended a seminar yesterday on higher order tensors.
The notation and concepts from this community could help.

Best,

Karl



Neal Becker wrote:

>On Wednesday 28 November 2007, Evgenii Rudnyi wrote:
>  
>
>> >I'm enthusiastically following mtl4 and glas developments.
>> >One thing that
>> >neither seems to address is arrays of dimension >2.  Is this true?
>>
>>NumPy supports multidimensional arrays:
>>
>>http://www.scipy.org/NumPy
>>
>>    
>>
>
>Yes it does.  Unfortunately, it doesn't have a nice c++ interface, AFAIK.
>
>What I'd like is to be able to write generic algorithms in c++ that can use
>various multi-dimensional containers, and then expose them to python.
>
>So far, what I've done is expose various container types to python (ublas,
>blitz++) using boost::python.  Then, instantiate algorithms using these
>containers to expose to python.
>
>Each lib has it's own issues.  ublas, for example, doesn't conform to all of
>container concept (lacks constructor taking a pair of iterators), but that's
>pretty easy to work around.
>
>blitz takes a little work, because it lacks proper iterators.  I have built
>boost::iterator adapters that handle that (perhaps not efficiently, though).
>
>I don't know how to use numpy to get a nice generic interface on the c++ side.
>_______________________________________________
>glas mailing list
>[hidden email]
>http://lists.boost.org/mailman/listinfo.cgi/glas
>  
>

_______________________________________________
glas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas

Karl.Meerbergen.vcf (417 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: multi-dimensional arrays?

Edwards, Harold C

Some of our applications make complex use of multidimensional arrays,
for example the derivatives of a collection of tensors associated with
the Cartesian product of basis functions and quadrature points in a
hexahedral cell.  One of the big software problems has been keeping up
with the array layout, i.e. the meaning of each dimension.  The problem
of permuting indices periodically pops up due to poor documentation, and
the use of raw pointers.

A solution we came up with to address the multidimensional array
notation in C++ as well as using C++ typing to encourage documentation
of the arrays was the following array class.

template< typename Scalar,
          class TagDim1, class TagDim2, ... , class TagDim8 = TagIgnore>
class Array ;

Where the 'dimension tags' are things like:

class CartesianVectorTag {};
class BasisFunctionTag {};
class QuadraturePointTag {};

Leading to "modestly typed" multidimensional arrays:

typedef
Array<double,CartesianVectorTag,BasisFunctionTag,QuadraturePointTag>
ElementGradients ;

The Array template class provided dimensions and the expected indexing
operators.

Carter Edwards





 

-----Original Message-----
From: [hidden email] [mailto:[hidden email]]
On Behalf Of Karl Meerbergen
Sent: Thursday, November 29, 2007 1:20 AM
To: Generic Linear Algorithm Software
Subject: Re: [glas] multi-dimensional arrays?

Dear Neal,

I think we could add multi-dimensional arrays to glas. Could you make a
list of desired functionaties?

As a coincidence I attended a seminar yesterday on higher order tensors.

The notation and concepts from this community could help.

Best,

Karl



Neal Becker wrote:

>On Wednesday 28 November 2007, Evgenii Rudnyi wrote:
>  
>
>> >I'm enthusiastically following mtl4 and glas developments.
>> >One thing that
>> >neither seems to address is arrays of dimension >2.  Is this true?
>>
>>NumPy supports multidimensional arrays:
>>
>>http://www.scipy.org/NumPy
>>
>>    
>>
>
>Yes it does.  Unfortunately, it doesn't have a nice c++ interface,
AFAIK.
>
>What I'd like is to be able to write generic algorithms in c++ that can

>use various multi-dimensional containers, and then expose them to
python.

>
>So far, what I've done is expose various container types to python
>(ublas,
>blitz++) using boost::python.  Then, instantiate algorithms using these
>containers to expose to python.
>
>Each lib has it's own issues.  ublas, for example, doesn't conform to
>all of container concept (lacks constructor taking a pair of
>iterators), but that's pretty easy to work around.
>
>blitz takes a little work, because it lacks proper iterators.  I have
>built boost::iterator adapters that handle that (perhaps not
efficiently, though).
>
>I don't know how to use numpy to get a nice generic interface on the
c++ side.
>_______________________________________________
>glas mailing list
>[hidden email]
>http://lists.boost.org/mailman/listinfo.cgi/glas
>  
>


_______________________________________________
glas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas
Loading...