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
parallelism_on_dinamica [2020/04/08 20:57]
argemiro
parallelism_on_dinamica [2020/04/09 16:03] (current)
argemiro
Line 3: Line 3:
 ==== What is Parallelism?​ ==== ==== What is Parallelism?​ ====
 \\ \\
-The term Parallelism (in Computer Science) refers to a technique that allow two or more computing tasks to execute at the same time. On modern systems, parallelism can be achieve in two different ways: either by executing tasks in the same time slice (and pausing the inactive tasks to give an impression of concurrency) or by having multiple processing units that physically execute tasks simultaneously. Since modern processor architectures are composed of many cores, the later method strongly surpasses the former in terms of speed and ease of programming. In such systems, programmers must adapt their software to take advantage of Parallelism,​ taking into account concurrent access to data. To do that, data is usually broken into equal independent slices that are processed in different computing units but a fundamental problem arises when this data is not easily separable or is dependent of many computing iterations. In order to deal with this situation, software developers and architects developed many algorithms and techniques to minimize communication between computing units and data dependency. To this end, it can even be an advantage to do the same computation twice on different units to prevent synchronization.+The term **Parallelism** (in Computer Science) refers to a technique that allow two or more computing tasks to execute at the same time. On modern systems, ​**parallelism** can be achieve in two different ways: either by executing tasks in the same time slice (and pausing the inactive tasks to give an impression of concurrency) or by having multiple processing units that physically execute tasks simultaneously. Since modern processor architectures are composed of many cores, the later method strongly surpasses the former in terms of speed and ease of programming. In such systems, programmers must adapt their software to take advantage of **Parallelism**, taking into account concurrent access to data. To do that, data is usually broken into equal independent slices that are processed in different computing units but a fundamental problem arises when this data is not easily separable or is dependent of many computing iterations. In order to deal with this situation, software developers and architects developed many algorithms and techniques to minimize communication between computing units and data dependency. To this end, it can even be an advantage to do the same computation twice on different units to prevent synchronization.
 \\ \\
 \\ \\
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.
 \\ \\
 \\ \\
-{{ :​3c6c66e0-383c-4a1c-a9e6-b9c0d4c09fa4.jpg?​800 |}}+{{ :​3c6c66e0-383c-4a1c-a9e6-b9c0d4c09fa4.jpg?​1000 |}}
 \\ \\
 \\ \\
 ===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.
 \\ \\
 \\ \\
-{{ :p11.png?600 |}}+{{ :parel_5.png?1200 |}} 
 +\\ 
 +\\ 
 +{{ :​p13.png?​700 ​|}}
 \\ \\
-{{ :​p12.png?​600 |}} 
 \\ \\
-{{ :p13.png?600 |}}+Loop content is wrapped in a given number of tasksEach task is responsible for running the loop step for a sub-set of the loop inputs: ​
 \\ \\
-{{ :​p14.png?​600 |}} 
 \\ \\
-{{ :p15.png?600 |}}+{{ :parel_6.png?800 |}}
 \\ \\
 \\ \\