[Review] ODEInt review starts today, September 19, ends September 28
AMDG The review of Karsten Ahnert and Mario Mulansky's ODEInt library starts today September 19th and will end on September 28. -------------------------------------- About the library: odeint provides routines for numerically solving Ordinary Differential Equations, a task heavily required when approaching scientific problems numerically. In odeint we have implemented the most common algorithms in a modern, generic way which provides several advantages over existing implementations. The main focus of odeint is to separate algorithms from the underlying basic computation unit. This allows for example to easily use the power of modern GPUs via CUDA or OpenCL to speed up computational heavy simulations. Features: - provides most of the standard algorithms, including step size control, dense ouput and extrapolation routines - symplectic routines for Hamiltonian systems - implicit routines based on boost::ublas (MTL4 in progress) - high level integrate functions - interchangeable computation backend with existing bindings to CUDA and OpenCL - native support of ODEs defined for complex values - support of Boost.Units in most of the algorithms - support of arbitrary precision types You can download the library and view the documentation here: zip: http://github.com/headmyshoulder/odeint-v2/zipball/master github: http://headmyshoulder.github.com/odeint-v2/ docs: http://headmyshoulder.github.com/odeint-v2/doc/index.html -------------------------------------- Please always state in your review, whether you think the library should be accepted as a Boost library! Additionally please consider giving feedback on the following general topics: - What is your evaluation of the design? - What is your evaluation of the implementation? - What is your evaluation of the documentation? - What is your evaluation of the potential usefulness of the library? - Did you try to use the library? With what compiler? Did you have any problems? - How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? - Are you knowledgeable about the problem domain? In Christ, Steven Watanabe
Hello! First of all, I suggest that ODEint should be accepted into the Boost library. *1.) What is your evaluation of the design? * I am impressed of the design. To say the big things first, I am impressed by the possibility to use CUDA and OpenCL for parallel computation of various ODE types in a simple manner. The simple and straight forward interface allowed an immediate usage of the library. This library is also made for a versatile usage due to the many algorithms (steppers) implemented. I can e.g. try different numerical approaches und compare the outcome or the performance. The performance during simulation is optimal, and outperforms most standard libraries (e.g. GSL). I also appreciate the modern C++ style (STL), in comparison to GSL which is more C oriented. *2.) What is your evaluation of the implementation? * ODEint uses Meta Template Programming to ensure the the highest optimization in numerical speed due to the compiler optimization during runtime. This is a advanced and modern approach. Although the backbone is advanced, the interface hides the complexity and ensures an easy usage. *3.) What is your evaluation of the documentation? * Good tutorial-like documentation which is end user oriented. Includes is quick intro and each level of usage. Didn't look at the developer documentation. *4.) What is your evaluation of the potential usefulness of the library? * I state this library to be very useful. ODEs have wide usage in physics, chemistry, engineering, economy etc. to model real world problems. Most of them don't have simple (analytic) solutions, that's where the computer has to crunch the numbers. These simulations are performed by ODE integration. Different real world problems need different numerical approaches (e.g. symplectic routines), which are also covered in ODEint. My special interest lies in GPGPU. And as far as I know, this is the first library which includes all those numerical algorithms to be send via CUDA/OpenCL onto GPUs. It allows parallel computing on devices which do this kind of work much better than CPUs (e.g. GPUs). Having the right problem and the right hardware, you can speed up computation to the factor of 100! This is unique and of high relevance! *5.) Did you try to use the library? With what compiler? Did you have any problems? * Yes, extensively. The following compilers were used: LLVM 4.0 and GCC 4.2. No problems occurred. *6.) How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? *I used the library a lot. Thomas Gorochowski used ODEint in combination with the LEMON graph library to develop a library called NetEvo (netevo.org). This combines network algorithms and handling with solving ODEs in each node/arc of the network. Due to the modern design of ODEint, the outcome is a modern and fast library. I also was involved it minor improvements. I used the modern C++ visualization library "Cinder" to perform real time visualization of ODE integration. *7.) Are you knowledgeable about the problem domain? * Yes. I am theoretical physicist. My research is based on numerical integration of ODEs which model the real world. Best regards Peter -- View this message in context: http://boost.2283326.n4.nabble.com/Review-ODEInt-review-starts-today-Septemb... Sent from the Boost - Users mailing list archive at Nabble.com.
Hi Peter, thank your for your review. On 09/26/2012 01:11 PM, BildPeter wrote:
Hello!
First of all, I suggest that ODEint should be accepted into the Boost library.
*1.) What is your evaluation of the design? * I am impressed of the design. To say the big things first, I am impressed by the possibility to use CUDA and OpenCL for parallel computation of various ODE types in a simple manner. The simple and straight forward interface allowed an immediate usage of the library. This library is also made for a versatile usage due to the many algorithms (steppers) implemented. I can e.g. try different numerical approaches und compare the outcome or the performance. The performance during simulation is optimal, and outperforms most standard libraries (e.g. GSL). I also appreciate the modern C++ style (STL), in comparison to GSL which is more C oriented.
*2.) What is your evaluation of the implementation? * ODEint uses Meta Template Programming to ensure the the highest optimization in numerical speed due to the compiler optimization during runtime. This is a advanced and modern approach. Although the backbone is advanced, the interface hides the complexity and ensures an easy usage.
*3.) What is your evaluation of the documentation? * Good tutorial-like documentation which is end user oriented. Includes is quick intro and each level of usage. Didn't look at the developer documentation.
*4.) What is your evaluation of the potential usefulness of the library? * I state this library to be very useful. ODEs have wide usage in physics, chemistry, engineering, economy etc. to model real world problems. Most of them don't have simple (analytic) solutions, that's where the computer has to crunch the numbers. These simulations are performed by ODE integration.
Different real world problems need different numerical approaches (e.g. symplectic routines), which are also covered in ODEint.
My special interest lies in GPGPU. And as far as I know, this is the first library which includes all those numerical algorithms to be send via CUDA/OpenCL onto GPUs. It allows parallel computing on devices which do this kind of work much better than CPUs (e.g. GPUs). Having the right problem and the right hardware, you can speed up computation to the factor of 100! This is unique and of high relevance!
*5.) Did you try to use the library? With what compiler? Did you have any problems? * Yes, extensively. The following compilers were used: LLVM 4.0 and GCC 4.2. No problems occurred.
*6.) How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? *I used the library a lot. Thomas Gorochowski used ODEint in combination with the LEMON graph library to develop a library called NetEvo (netevo.org). This combines network algorithms and handling with solving ODEs in each node/arc of the network. Due to the modern design of ODEint, the outcome is a modern and fast library. I also was involved it minor improvements.
I used the modern C++ visualization library "Cinder" to perform real time visualization of ODE integration.
*7.) Are you knowledgeable about the problem domain? * Yes. I am theoretical physicist. My research is based on numerical integration of ODEs which model the real world.
Best regards
Peter
-- View this message in context: http://boost.2283326.n4.nabble.com/Review-ODEInt-review-starts-today-Septemb... Sent from the Boost - Users mailing list archive at Nabble.com. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Steven Watanabe Sent: Wednesday, September 19, 2012 5:14 PM To: boost-users@lists.boost.org Subject: [Boost-users] [Review] ODEInt review starts today, September 19, ends September
Please always state in your review, whether you think the library should be accepted as a Boost library!
Yes.
Additionally please consider giving feedback on the following general topics:
- What is your evaluation of the design? Not qualified but has obviously had a lot of real-life use.
Modern expression templates are de rigeur. Works with Boost.Units which is a big plus. Also meshes with Fusion and Arbitrary Precision types so will presumably work with the recently accept Multiprecision library. And providing support for GPU and parallelization may be a killer advantage for speed. (Until the 'ultimate' way of generating GPU code is produced, there will be too many options, but that's progress for you).
- What is your evaluation of the implementation? Not qualified to judge, but the extensive set of working examples gives confidence that it can't be bad. Mature. Must be several people using 'in anger', always a good sign.
- What is your evaluation of the documentation? Good. Looks nice. Tutorial examples are excellent in scope and number.
There is a lot of stuff there (everything you need to know even), but I worry about users finding what they want to know. A PDF version would allow a global search as a proxy for an index. This should be easy to produce. An (auto) index would be useful and could be very easily added?
- What is your evaluation of the potential usefulness of the library? An essential tool for almost all numeric fields from astrophysics to economics.
- Did you try to use the library? Sadly no.
- How much effort did you put into your evaluation? A quick (re-)reading of the docs?
- Are you knowledgeable about the problem domain? Very faintly.
Paul --- Paul A. Bristow, Prizet Farmhouse, Kendal LA8 8AB UK +44 1539 561830 07714330204 pbristow@hetp.u-net.com
Hi Paul, thank you for your review!
- What is your evaluation of the documentation? Good. Looks nice. Tutorial examples are excellent in scope and number.
There is a lot of stuff there (everything you need to know even), but I worry about users finding what they want to know. A PDF version would allow a global search as a proxy for an index. This should be easy to produce.
Yes, I think boost.build can do this with only "one click".
An (auto) index would be useful and could be very easily added?
Ok, we have to check how this works and how it can be combined with the docs. Besides that, we think about creating a reference with doxygen. The interface is quite stable since a while so that the additional comments in the odeint sources will not perturb the development.
There is a lot of stuff there (everything you need to know even), but I worry about users finding what they want to know. A PDF version would allow a global search as a proxy for an index. This should be easy to produce.
Yes, I think boost.build can do this with only "one click".
If it's quickbook/boostbook/docbook then a PDF version will get built anyway when I build them for each release. John.
participants (5)
-
BildPeter
-
John Maddock
-
Karsten Ahnert
-
Paul A. Bristow
-
Steven Watanabe