The performance and scalability of simulations in Morpheus heavily depend on the type of (multi-scale) model that is being simulated. It is therefore difficult to make general statements on the computational efficiency. However, we can test the performance on a set of “benchmark” models that form the modules from which more complex model can be constructed.
We have tested the performance of ODE lattices, reaction-diffusion (PDE) models, cellular Potts models (CPM) and a multiscale model (CPM+PDE), using the available Example models. The results show the execution time and memory consumption for these models as well as their scalability in terms of problem size and scalability in terms of efficiency of multi-threading.
To quantify performance, we measured the following aspects for each simulation:
<sys/time.h>. The execution time does not include the time needed for initialization, analysis and visualization.
We investigated the scalability with respect to problem size to see how performance in terms of the execution time and memory usage (RAM) scales with increasing population size or lattice size.
We calculate and plotted both the execution time and memory usage in:
Performance in absolute sense provides a sense of the problems sizes that are practically manageable within certain time and memory constraints.
Performance in relative sense shows the scalability of the simulation for problem sizes. Ideally, the performance per cell or lattice site stays constant or decreases with increasing problem sizes.
We have also measured the scalability with respect to the number of openMP threads to see how the performance scale with the number of concurrent threads.
We measured the execution time for each of the simulation run on in 1, 2, 4, 6 threads. Comparison of these execution times shows the speed-ups that can be achieved by adding concurrent threads.
The models used in performance tests are available as Example models:
The models are run without analysis and visualization tools and execution time is measured from
StopTime. The time for initialization is excluded since this vanishes for large jobs.
|CPM + PDE|
| Problem size |
| Problem size |
|Description||Total execution time (red) and memory usage (blue) of simulation, excl. initialization and visualization||Execution time (red) and memory usage (blue), relative to number of cells and/or lattice sites||Execution time and speed-up as a function of number of openMP threads|
| ODE ||1)||2)||3)|
| PDE ||4)||5)||6)|
| CPM ||7)||8)||9)|
| CPM + PDE |
NeighborReportersfor each cell.
Diffusionis only done for large 3D lattices.
CPMcells. Small memory footprint, despite
CPMcell is almost constant, although performance decreases for larger systems. Decrease of memory usage per cell is here mostly due to use of large lattice in all cases.
CPMsimulations. Therefore, multithreading does not results in speed-up. Instead, the multithreading overhead even slightly decreases performance.