Boost logo

Boost :

Subject: Re: [boost] [Review] ODEInt review starts today, September 19, ends September 28
From: Denis Demidov (ddemidov_at_[hidden])
Date: 2012-09-20 07:42:34


Hello,

First of all, I think that odeint is a nice and useful library and should be
accepted into Boost. It well belongs to Boost's Math and Numerics section.

> - What is your evaluation of the design?

Odeint provides intuitive and logical interface, and is easily extended to use
custom state types and operations. Many usual state types (such as scalar
values, std::vector<> or boost::array<>) and operations on them are supported
out of the box. The adaptation to user-defined data types is straightforward.

> - What is your evaluation of the implementation?

I only had a quick glance at the implementation, but the code looks
decent, clean
and well formatted. Implementation of some algebras and operations
could probably
benefit from usage of C++11 variadic templates, but this would have to
wait for wider
adoption of the new standard.

> - What is your evaluation of the documentation?

Documentation is good. Examples in tutorial cover most use cases and common
state types and operations. There is an overview of avalable steppers, but
more detailed description of each stepper (typical use cases, stability
requirements, advantages and disadvantages w.r.t. other methods) would probably
be beneficial.

> - What is your evaluation of the potential usefulness of the library?

The library has admittedly limited scope, but it should be very useful for the
domain it aims for. I believe its design is general enough to be
included into Boost.

> - Did you try to use the library? With what compiler? Did you have any
> problems?

I used odeint with gcc v4.6 and v4.7. I did not have any problems with those
compiler versions.

> - How much effort did you put into your evaluation? A glance? A quick
> reading? In-depth study?

I used odeint as a basis for comparison of several CUDA and OpenCL libraries
(Thrust [1], ViennaCL [2], VexCL [3]). This was done in collaboration with
Karsten Ahnert, coauthor of odeint. We solved several large systems of ODEs
to look at both performance and ease of use of the GPGPU libraries (the work is
not yet published). This task is easily performed with odeint due to
its general
design.

I spent a couple of weeks working with odeint. Most of the time was devoted to
writing system functions that would work with CUDA and OpenCL libraries and
to performance tuning of custom odeint operations for the libraries.

> - Are you knowledgeable about the problem domain?

I mostly deal with partial differential equations in my line of work, but I am
familiar with solution of ordinary differential equations as well.

[1] https://github.com/thrust/thrust
[2] http://viennacl.sourceforge.net
[3] https://github.com/ddemidov/vexcl

--
Dr Denis Demidov
Supercomputer Center of Russian Academy of Sciences
Lobachevsky st. 2/31, Kazan 420008, Russia

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk