Scalability

From SeSAm-Wiki

Jump to: navigation, search

SeSAm's scalability can be seen in different context.

1. Scalability of the modeling process SeSAm is based on a mostly visual, high-level modelling language. Although this modeling language is touring complete and able to express everything, there are limitations because users have to practically handle complex models. Scalability on the language level is connected to hierarchical design options, abstraction techniques, but also to documenation possibilities. These are characteristics of the SeSAm modeling language based on user defined functions, hierarchical activity graphs, etc. Complexity of the model can be hidden from the novice user, but is accessible to the expert user (e.g. expert user functions, multiple behaviours, etc...) Additional extensions in the last years have still improved SeSAm's scalability. An example is the support of user defined types also called ComposedTypes. Influenced from software engineering we started to integrate refactoring methods as well facilitating model re-engineering. This helps restructuring models to clarify the design.

2. Scalability of the simulation run Scalability in this context addresses the memory use and efficiency of execution! SeSAm simulation runs are based on a high-level model representation. Therefore it is less efficient than well hardcoded simulations. However, the developpers were very conscious about this problematic and introduced a compilation phase before the actual run execution. In this compilation phase optimisation techniques from compiler construction are integrated like constant folding, lazy iterators and code inlining to make the model execution as fast as possible. Simulation speed and possible number of agents is highly dependent of the complexity of the model and on the particular used primitives. Usually several ten thousands of agents and more are not a problem. There is also support for model profiling to find critical parts of the model.

Personal tools