
Edward Grace wrote:
I still maintain that doing scientific computing in C++ is an uphill struggle. Some may argue that C++ is not about the library its about the language. In practice the pragmatic pick a language because of the library. The STL (and Boost of course) bridges that gap somewhat, but a ratified SSTL (Scientific Standard Template Library) would be a massive boon to C++ for science. That's somehow my long term objective as a researcher. The state of the art C++ idioms are now matrue enough to help us do it right. The plethora of rarely used half finished C++ linear algebra libraries on the web are a testament to that. Mine being the first alas :/ Joel, as an aside - have people (e.g. you) started looking at using C++ metadata to carry out code transformations that span abstractions - potentially very useful for parallelising? For example being able to concretely make certain guarantees about the dependence of various variables (e.g. regarding aliasing) in a program could allow higher-level optimisations to be performed. Well, I can send you copy of the Europar 08 paper I wrote that deals with introspecting C++ expression using ET to know when the threading is useful and when it's not. This is my main topic of interest but I'm more on the library side than compiler side. My objectives now is to have a
collection of heuristic on domain specific expression AST that helps me know which kind of parallelism or other optimization I can or shoudl apply.
That said, I think the amount of work involved here should not be underestimated. My bet is that there are so many of these 'matrix' libraries out there because people discover object orientation, then template metaprogramming and plough on to write their own library. When it gets good enough for what they want they stop - the full problem as I think Joel is eluding to is huge and very very hard indeed. It is. And it gets uglier and uglier as new fancy machines comes out. I have funding this years for just porting the core NT2 over GPUs and it looks friggin massive. Ideally a project like this should get some sort of sponsorship. If a team of (say) 4 C++ experts could be put together with a team of other stakeholders (mathematicians, physicists and engineers) and FORTRAN90 HPC experts - who will have a wealth of experience, with some industry support (e.g. NVIDIA) truly great things could happen. We're two here doing that : me as the lead C++ and parallelism developer and Jean-Thierry Lapresté which is a professor of mathematics that helps with the algebra algorithm and hit me with a large trout when he found
At an even larger scope, what I want to do is solve the problem of "auto-parallelisation" not by findign *the* general heuristic for doign it but by slicing the problem one domain after the other, find the domain heuristic adn use things like proto and generative programming to stich the domain together. We can go private if you want more details. the interface starts to look to cumbersome for base users. We don't mind heads and hands from any other side of the fences. NT2 is already using boost license so if needed it can become a candidate for boost library status all together. In fact, well, if anyoen interested we can setup some work plans. -- ___________________________________________ Joel Falcou - Assistant Professor PARALL Team - LRI - Universite Paris Sud XI Tel : (+33)1 69 15 66 35