Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
parallelism_on_dinamica [2020/04/08 21:11]
argemiro
parallelism_on_dinamica [2020/04/09 15:58]
argemiro
Line 13: Line 13:
 === How we change Dinamica EGO infrastructure and make everything as much parallel as possible? === === How we change Dinamica EGO infrastructure and make everything as much parallel as possible? ===
  
-Before version 5, Parallelism in Dinamica EGO was handled by the Virtual Machine (VM) and the Functor Library (FL) directly, without global coordination. This caused uneven distribution of work between computing systems and sub-optional use of the machine resources. The Task Library was introduced in Dinamica EGO 5 to address such problems, by creating a global system for handling and processing work. We restructured the VM and FL sub-systems 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). These tasks are distributed to underlying computing systems such as processor cores and graphics processing units (GPU) and the workload is balanced by the use of the work-stealing approach. In version 5, every computing unit is able to manipulate and transform data in parallel (e.g., parts of an image can be read and written simultaneously) and also communicate,​ synchronize and exchange data with its siblings.+Before version 5, **Parallelism** in Dinamica EGO was handled by the Virtual Machine (VM) and the Functor Library (FL) directly, without global coordination. This caused uneven distribution of work between computing systems and sub-optional use of the machine resources. The Task Library was introduced in Dinamica EGO 5 to address such problems, by creating a global system for handling and processing work. We restructured the VM and FL sub-systems 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). These tasks are distributed to underlying computing systems such as processor cores and graphics processing units (GPU) and the workload is balanced by the use of the work-stealing approach. In version 5, every computing unit is able to manipulate and transform data in parallel (e.g., parts of an image can be read and written simultaneously) and also communicate,​ synchronize and exchange data with its siblings.
 \\ \\
 \\ \\
Line 20: Line 20:
 \\ \\
 ===Tasks + Work Stealing in Dinamica EGO 5=== ===Tasks + Work Stealing in Dinamica EGO 5===
-{{ :​apresentacao_do_powerpoint_-_dinamica_ego_5_-_fip_cerrado.pptx_2020-04-07_12-30-32_trim.mp4?​800x600 |}}+\\ 
 +Watch the video below and follow the Tasks + Work Stealing in Dinamica EGO 5: 
 +\\ 
 +\\ 
 +{{ :​paralel_legend.png?​1000 |}} 
 +{{ :​apresentacao_do_powerpoint_-_dinamica_ego_5_-_fip_cerrado.pptx_2020-04-09_12-43-09_trim.mp4?​800x600|}}
 \\ \\
 \\ \\
Line 32: Line 37:
 \\ \\
 ===What are the results of these changes?=== ===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. 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.
Line 38: Line 44:
 {{ :​parel_5.png?​1200 |}} {{ :​parel_5.png?​1200 |}}
 \\ \\
-{{ :​p13.png?​600 |}} 
 \\ \\
-{{ :​parel_6.png?​1200 |}}+{{ :​p13.png?​700 |}} 
 +\\ 
 +\\ 
 +Loop content is wrapped in a given number of tasks. Each task is responsible for running the loop step for a sub-set of the loop inputs:  
 +\\ 
 +\\ 
 +{{ :​parel_6.png?​800 |}}
 \\ \\
 \\ \\