Speed comparisons with MATLAB

Solution speed is important for complex computational models and here we compare the performance of OpenCOR with MATLAB[1]. Nine representative CellML models were chosen from the PMR model repository. For the MATLAB tests we used the MATLAB code, generated automatically from CellML, that is available on the PMR site. These comparisons are based on using the default solvers (listed below) available in the two packages.

Testing environment

  • MacBook Pro (Retina, Mid 2012).

  • Processor: 2.6 GHz Intel Core i7.

  • Memory: 16 GB 1600 MHz DDR3.

  • Operating system: OS X Yosemite 10.10.3.

OpenCOR

  • Version: 0.4.1.

  • Solver: CVODE with its default settings, except for its Maximum step parameter, which is set to the model’s stimulation duration, if needed.

MATLAB

  • Version: R2013a.

  • Solver: ode15s (i.e. a solver suitable for stiff problems and which has low to medium order of accuracy) with both its RelTol and AbsTol parameters set to 1e-7 and its MaxStep parameter set to the stimulation duration, if needed.

Testing protocol

  • Run a model for a given simulation duration.

  • Generate simulation data every milliseconds.

  • Only keep track of all the simulation data (i.e. no graphical output).

  • Run a model 7 times, discard the 2 slowest runs (to account for unpredictable slowdowns of the testing machine) and average the resulting computational times.

  • Computational times are obtained directly from OpenCOR and MATLAB (through a couple of calls to cputime in the case of MATLAB).

Results

CellML model (from PMR on 18/6/2015)

Duration (s)

OpenCOR time (s)

MATLAB time (s)

Time ratio (MATLAB/OpenCOR)

Bondarenko et al. 2004

10

1.16

140.14

121

Courtemanche et al. 1998

100

0.998

45.720

46

Faber & Rudy 2000

50

0.717

29.010

40

Garny et al. 2003

100

0.996

48.180

48

Luo & Rudy 1991

200

0.666

70.070

105

Noble 1962

1000

1.42

310.02

218

Noble et al. 1998

100

0.834

42.010

50

Nygren et al. 1998

100

0.824

31.370

38

ten Tusscher & Panfilov 2006

100

0.969

59.080

61

*The value of membrane.stim_end was increased so as to get action potentials for the duration of the simulation

Conclusions

For this range of tests, OpenCOR is between 38 and 218 times faster than MATLAB. A more extensive evaluation of these results is available on GitHub[2].


Footnotes