owl 0.5.0
We are happy to announce the new release of owl
, a dedicated system for scientific and engineering computing in OCaml.
The project is thoroughly documented at ocaml.xyz where you can find multiple examples of use. Notable demos are the Google Inception demo and the Neural Style Transfer demo
This release, coming a year after the latest 0.4.0 release, includes multiple improvements in terms of fixed bugs, performance and in the internals of the algorithmic differentiation engine.
It also comes with a large rewrite on the way both owl
and some of the libraries it depends on are built, hopefully making its installation much easier and more flexible. Currently owl 0.5.0
should compile seamlessly on osx and multiple linux distributions (including debian, fedora and alpine), with the only known exception of ubuntu (that requires a custom manual build of OpenBLAS). You can now also enable experimental features, like the OpenMP/AEOS, or customise the c/c++ build flags, directly when building wih opam by setting or passing the right env variables (refer to owl
and eigen
READMEs for further information).
This release also reduces he number of dependencies and stubs, moving toward a more modular approach for the framework: the tensorflow graph and plplot
bindings are now provided by separate packages, with owl-plplot
already released and owl-tensorflow
coming soon. A new plot package (and its jupyter
integration module) are also in development, allowing to generate plots using gnuplot
.
You can read more about it on the official documentation page ocaml.xyz and on the odoc
generated one ocaml.xyz/owl.
owl-ode
In conjunction with this release we are also happy to announce the first release of owl-ode
and owl-ode-sundials
.
The first is a small OCaml library providing the most common numerical ode integrators, in single-step and adaptive versions and fully compatible with owl
type system. One interesting feature of owl
vis that a larger and larger part of its core supports compilation via js_of_ocaml
, owl-ode
falls in the category of packages that support compilation to js.
owl-ode
also comes with support for symplectic integrators, providing an interesting framework to develop Hamiltonian Monte Carlo methods.
You can access the documentation of owl-ode
inclusive of a small tutorial at ocaml.xyz/owl_ode/owl-ode and ocaml.xyz/apidoc/ode.html. Further examples are available on the sources repository.
The second library is a wrapper to the sundialsml
library, allowing to use the battle tested cvode
directly on owl
.
Both libraries are in their early days, and multiple features are still missing, but have been designed keeping in mind the ergonomics and flexibility from day one. To demonstrate this we synced the release with ocaml-cviode
, a small OCaml library that provides lower order contact geometric integrators and is fully reliant on owl-ode
to do the heavy lifting and provide the integration interface.
The future plans for owl-ode
include:
- making the libraries more robust and better tested
- complete the
sundialsml
wrapper and document it - add a wrapper to
ocaml-odepack
- replicate Neural ODEs directly in owl
Every help is welcome!
The Owl Dev Team