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 owlvis 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
sundialsmlwrapper and document it - add a wrapper to
ocaml-odepack - replicate Neural ODEs directly in owl
Every help is welcome!
The Owl Dev Team
