|
View:
New views
9 Messages
—
Rating Filter:
Alert me
|
|
|
[crossposting] glas and mtl4 - what are the commons and differencesHello 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 glas@... http://lists.boost.org/mailman/listinfo.cgi/glas |
|
|
Re: [Mtl4] [crossposting] glas and mtl4 - what are the commons and differencesHello 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 > MTL4@... > http://www.osl.iu.edu/mailman/listinfo.cgi/mtl4 > _______________________________________________ glas mailing list glas@... http://lists.boost.org/mailman/listinfo.cgi/glas |
|
|
Re: [Mtl4] [crossposting] glas and mtl4 - what are the commons and differencesAm 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 glas@... http://lists.boost.org/mailman/listinfo.cgi/glas |
|
|
Re: [crossposting] glas and mtl4 - what are the commons and differencesDear 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 > glas@... > http://lists.boost.org/mailman/listinfo.cgi/glas > [karl.meerbergen.vcf] begin:vcard fn:Karl Meerbergen n:Meerbergen;Karl org:K.U.Leuven;Computer Science adr:Office 02.33;;Celestijnenlaan 200A;Leuven (Heverlee);;3001;Belgium email;internet:karl.meerbergen@... tel;work:+32 16 32 79 59 tel;fax:+32 16 32 79 96 url:http://www.cs.kuleuven.be/~karlm version:2.1 end:vcard _______________________________________________ glas mailing list glas@... http://lists.boost.org/mailman/listinfo.cgi/glas |
|
|
multi-dimensional arrays?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 glas@... http://lists.boost.org/mailman/listinfo.cgi/glas |
|
|
Re: multi-dimensional arrays? >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 glas@... http://lists.boost.org/mailman/listinfo.cgi/glas |
|
|
Re: multi-dimensional arrays?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 glas@... http://lists.boost.org/mailman/listinfo.cgi/glas |
|
|
Re: 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 >glas@... >http://lists.boost.org/mailman/listinfo.cgi/glas > > [Karl.Meerbergen.vcf] begin:vcard fn:Karl Meerbergen n:Meerbergen;Karl org:K.U. Leuven;Department of Computer Science adr:Room 02.014;;Celestijnenlaan 200A;Heverlee (Leuven);;B-3001;Belgium email;internet:Karl.Meerbergen@... tel;work:+32 16 32 79 59 tel;fax:+32 16 32 79 96 tel;cell:+32 474 26 66 59 note:http://www.kuleuven.be/cwis/email_disclaimer.htm url:http://www.cs.kuleuven.be/~karlm version:2.1 end:vcard _______________________________________________ glas mailing list glas@... http://lists.boost.org/mailman/listinfo.cgi/glas |
|
|
Re: multi-dimensional arrays?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: glas-bounces@... [mailto:glas-bounces@...] 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, > >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 > >I don't know how to use numpy to get a nice generic interface on the c++ side. >_______________________________________________ >glas mailing list >glas@... >http://lists.boost.org/mailman/listinfo.cgi/glas > > _______________________________________________ glas mailing list glas@... http://lists.boost.org/mailman/listinfo.cgi/glas |
| Free embeddable forum powered by Nabble | Forum Help |