============================= Speed comparisons with MATLAB ============================= Solution speed is important for complex computational models and here we compare the performance of OpenCOR with MATLAB\ [#]_. 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 | +---------------------------------------------------------------------------------------------------------+------------------+----------------------+---------------------+----------------------+ :sup:`\*`\ 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\ [#]_. --------------------------- .. rubric:: Footnotes .. [#] `www.mathworks.com/products/matlab `_ .. [#] `https://github.com/opencor/speedcomparison `_. These tests were carried out by Alan Garny.