Sundials/ML: Connecting OCaml to the Sundials Numeric Solvers - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Journal Articles Electronic Proceedings in Theoretical Computer Science Year : 2018

Sundials/ML: Connecting OCaml to the Sundials Numeric Solvers

Abstract

This paper describes the design and implementation of a comprehensive OCaml interface to the Sundials library of numeric solvers for ordinary differential equations, differential algebraic equations, and non-linear equations. The interface provides a convenient and memory-safe alternative to using Sundials directly from C and facilitates application development by integrating with higher-level language features, like garbage-collected memory management, algebraic data types, and exceptions. Our benchmark results suggest that the interface overhead is acceptable: the standard examples are rarely twice as slow in OCaml than in C, and often less than 50% slower. The challenges in interfacing with Sundials are to efficiently and safely share data structures between OCaml and C, to support multiple implementations of vector operations and linear solvers through a common interface, and to manage calls and error signalling to and from OCaml. We explain how we overcame these difficulties using a combination of standard techniques such as phantom types and polymorphic variants, and carefully crafted data representations.

Dates and versions

hal-01967659 , version 1 (01-01-2019)

Licence

Identifiers

Cite

Timothy Bourke, Jun Inoue, Marc Pouzet. Sundials/ML: Connecting OCaml to the Sundials Numeric Solvers. Electronic Proceedings in Theoretical Computer Science, 2018, ML Family Workshop / OCaml Users and Developers workshops (MLOCAML 2016), 285, pp.101-130. ⟨10.4204/EPTCS.285.4⟩. ⟨hal-01967659⟩
81 View
0 Download

Altmetric

Share

Gmail Mastodon Facebook X LinkedIn More