|On this page…|
Normally, when simulating or analyzing a model in SimBiology®, you express the model in MATLAB® code. You can accelerate the simulation or analysis by converting the model to compiled C code, which executes faster. Because this compilation step has a small time overhead, acceleration is not recommended for individual simulations of small models. However, for large models, or for repeated simulations during analysis, acceleration can provide a significant speed increase that outweighs the small time overhead.
You can accelerate the following:
Note: For parameter estimations (using sbioparamestim) and population fittings (using sbionlinfit, sbionlmefit, or sbionlmefitsa), acceleration is automatically enabled, if the prerequisites for accelerating simulations and analyses are met.
The functionality to accelerate simulations performs optimally under the following conditions:
Running many simulations with different initial conditions
Running very long simulations (for example, simulations that take longer than a minute to run)
To prepare your models for accelerated simulations, install and set up a compiler:
Install a C compiler (if one is not already installed on your system). For a current list of supported compilers, see Supported and Compatible Compilers at www.mathworks.com.
Tip On 32-bit Windows® platforms, the LCC compiler is automatically installed. However, for better performance of the acceleration functionality, you may want to install a supported compiler other than LCC. You can also use mex -setup to choose and configure a different C compiler, as described in Build MEX-Files in the MATLAB External Interfaces documentation.
Run mex -setup once after compiler installation, as described in the mex reference page.
Ensure that any user-defined functions in your model can be used for code generation from MATLAB, so they can convert to compiled C. For more information, see the Code Generation from MATLAB Code.
Accelerating simulations is a two step process:
Use the sbioaccelerate function to prepare your model for accelerated simulations. Use the same input arguments that you plan to use with sbiosimulate. For example:
sbioaccelerate(modelObj, configsetObj, doseObj);
This step prepares your model for acceleration and may take a minute or longer to complete for very large models.
Note: You need to run sbioaccelerate again, before running simulations, if you make any modifications to this model, other than:
Use the sbiosimulate function with the same input arguments that you used with sbioaccelerate. For example:
simdataObj = sbiosimulate(modelObj, configsetObj, doseObj);
If you have user-defined functions, do not use persistent variables in these functions. Persistent variables are not compatible with the functionality used for accelerating simulations.
If you specify user-defined functions in SimBiology expressions, you might see the following warning if your code is not compatible with code generation from MATLAB:
The SimBiology Expression and any user-defined functions could not be accelerated. Please check that these expressions and any user-defined functions are supported for code generation as described in the Code Generation from MATLAB documentation.
where Expression is any of the following:
Reaction rate/rule expression
Repeated assignment rule expression
Event trigger expression
Event function expression
For more information, see Code Generation.