Gem-graph/architecture.en.md

65 lines
2.3 KiB
Markdown

# Gem-graph Architecture
- The [server](https://gitlab.os-k.eu/gem-graph-team/gem-graph-server) is the part whose execution is punctuated by the model calculation. It includes:
- the cli interface (command line interface) which manages the server on the machine where it is executed, or remotely via the client (provide translations, vocabulary management)
- the [scheduler](server/scheduler.md) which coordinates the calculation of the model by initiating and terminating the supervisor and the calculation threads
- the [supervisor](server/supervisor.md) which:
- maintains the history and performs measurements
- performs an integrity test and returns its result to the scheduler
(to detect chaotic states, infinite loops, unbalanced distributions between computation threads,...)
- the [calculation threads](server/worker_thread.md)
- The [client](https://gitlab.os-k.eu/gem-graph-team/gem-graph-client) is the part whose execution is timed by the user:
- initiation / termination / OS interface
- the associated inputs / outputs / error checks
- the user control of the computation performed by the server
- server interface > user (what is the state of the model ? how does the automaton work ?)
- user > server interface (stop, slow / speed, undo / redo, modify the nb of threads or the algorithm...)
- view management (conformity to a view_type)
- the editions
- states
- transition rules
- rule trees
- interpretation of model state measures and model history
- translations, vocabulary management
- aids/facilities/presentation (texts, views, links) to :
- theoretical background, bibliography
- principles / justifications / limits of the model
- license, rights, authors, practical information
- presentation tools
---
The number of calculations that can be performed in parallel depends on
- the ratio between the size of the local space and the global space
- the average running time of the rules
(if we neglect the initiation and termination operations of the calculation threads and the
and the communication operations of the main loop with its environment)
Note: the command line interface must also intercept user requests and delegate them to dedicated threads or processes