Konrad Hinsen wrote:
Chris Barker <chrishbarker@home.net> writes:
On another note, it looks like the blitz++ library might be a good basis for a general Numerical library (and NumPy 3) as well. It does come with a flexible license. Any thoughts?
I think the major question is whether we are willing to move to C++. And if we want to keep up any pretentions for Numeric becoming part of the Python core, this translates into whether Guido will accept C++ code in the Python core.
Actually, It's worse than that. Blitz++ makes heavy use of templates, and thus only works with compilers that support that well. The current Python core can compile under a very wide variety of compilers. I doubt that Guido would want to change that. Personally, I'm torn. I would very much like to see NumPy arrays become part of the core Python, but don't want to have to compromise what it could be to do that. Another idea is to extend the SciPy project to become a complete Python distribution, that would clearly include Numeric. One download, and you have all you need.
From a more pragmatic point of view, I wonder what the implications for efficiency would be. C++ used to be very different in their optimization abilities, is that still the case? Even more pragmatically, is blitz++ reasonably efficient with g++?
I know g++ is supported (and I think it is their primary development platform). From the web site: Is there a way to soup up C++ so that we can keep the advanced language features but ditch the poor performance? This is the goal of the Blitz++ project: to develop techniques which will enable C++ to rival -- and in some cases even exceed -- the speed of Fortran for numerical computing, while preserving an object-oriented interface. The Blitz++ Numerical Library is being constructed as a testbed for these techniques. Recent benchmarks show C++ encroaching steadily on Fortran's high-performance monopoly, and for some benchmarks, C++ is even faster than Fortran! These results are being obtained not through better optimizing compilers, preprocessors, or language extensions, but through the use of template techniques. By using templates cleverly, optimizations such as loop fusion, unrolling, tiling, and algorithm specialization can be performed automatically at compile time. see: http://www.oonumerics.org/blitz/whatis.html for more info. I havn't messed with it myself, but from the web page, it seems the answer is yes, C++ can produce high performance code. -- Christopher Barker, Ph.D. ChrisHBarker@home.net --- --- --- http://members.home.net/barkerlohmann ---@@ -----@@ -----@@ ------@@@ ------@@@ ------@@@ Oil Spill Modeling ------ @ ------ @ ------ @ Water Resources Engineering ------- --------- -------- Coastal and Fluvial Hydrodynamics -------------------------------------- ------------------------------------------------------------------------