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
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
You can read more about it on the official documentation page ocaml.xyz and on the
odoc generated one ocaml.xyz/owl.
In conjunction with this release we are also happy to announce the first release of
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
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
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
- making the libraries more robust and better tested
- complete the
sundialsmlwrapper and document it
- add a wrapper to
- replicate Neural ODEs directly in owl
Every help is welcome!
The Owl Dev Team