skip to primary navigationskip to content

Department of Computer Science and Technology

Research Projects

Owl, Scientific Computing for OCaml

Owl is a dedicated system for scientific and engineering computing designed and implemented in the functional programming language OCaml. Our intent is to push the frontier of high-performance scientific computing, providing developers in both research and industry with a powerful framework to write concise, fast and safe analytical code.


Owl originated in July 2016 from the CONTRIVE project in which we studied the design of synchronous parallel machines for large-scale distributed computing. We chose OCaml as the language for developing the system due to its expressiveness and superior runtime efficiency.

Although OCaml is a very well designed language, libraries supporting numerical computing in OCaml were very limited and the tooling fragmented at that time. To develop and test analytical applications, we had to implement a great deal of the basic numerical processing code, from low level algebra and random number generators to high level features such as algorithmic differentiation and deep neural networks. As we accumulated these snippets it became clear that they were growing much bigger than the distributed engine itself and so we decided to extract and release them as a standalone library: Owl.