Parallelism on Dinamica EGO

What is Parallelism?

The term Parallelism refers to techniques to make programs faster by performing several computations at the same time. This requires hardware with multiple processing units. In many cases the sub-computations are of the same structure, but this is not necessary. Graphic computations on a GPU are parallelism. A key problem of parallelism is to reduce data dependencies in order to be able to perform computations on independent computation units with minimal communication between them. To this end, it can even be an advantage to do the same computation twice on different units.

Why is parallelism important?

Efficiently using these parallel capabilities is necessary to meet user demands for modelling complex dynamics with large datasets. However, users may be reticent to develop or adapt their current models to take advantage of these parallel environments because such development is often complicated, time-consuming, and error prone.

What was done again?

Specifically, we re-designed the software to leverage available parallel hardware capabilities on any computer, while maintaining flexibility for the user to develop custom models without worrying about such parallelization.

We restructured the core of the software so that models are now broken into tasks according to computer capabilities and model semantics (i.e., the rules the computer must follow as prescribed by the model). Tasks are then executed by a fixed number of “workers” using a work-stealing approach. These workers can manipulate data in parallel (e.g., parts of an image can be read and written simultaneously) and compute certain tasks using graphics processing units.

Parallelism in Dinamica EGO 4 Vs Parallelism in Dinamica EGO 5

What are the results of these changes?

Dinamica EGO is now capable of using all available computer processing power, typically reducing model run times. This presents new opportunities for development of new features within Dinamica EGO and allows environmental modelers to easily incorporate additional complexity into their models.