SlideShare a Scribd company logo
Parallelizing
                           a Real-Time
                       Steering Simulation
                      for Computer Games
                              with
                             OpenMP
                               Bjoern Knafla and Claudia Leopold
                                 University of Kassel (Germany)
Dienstag, 11. September 2007                                      1
Dienstag, 11. September 2007   2
Steering a flock of birds



Dienstag, 11. September 2007                2
Dienstag, 11. September 2007   3
Dienstag, 11. September 2007   3
Dienstag, 11. September 2007   3
Bird




Dienstag, 11. September 2007          3
Bird
                               Boid




Dienstag, 11. September 2007          3
Bird
                                Boid
                               Agent



Dienstag, 11. September 2007           3
Dienstag, 11. September 2007   4
CPU
                               core




Dienstag, 11. September 2007          4
Dienstag, 11. September 2007   4
CPU    CPU    CPU    CPU
                               core   core   core   core

                               CPU    CPU    CPU    CPU
                               core   core   core   core

                               CPU    CPU    CPU    CPU
                               core   core   core   core

                               CPU    CPU    CPU    CPU
                               core   core   core   core




Dienstag, 11. September 2007                               4
Dienstag, 11. September 2007   4
Outline




Dienstag, 11. September 2007             5
Outline
                    1. Steering behaviors




Dienstag, 11. September 2007                5
Outline
                    1. Steering behaviors
                    2. OpenSteerDemo




Dienstag, 11. September 2007                5
Outline
                    1. Steering behaviors
                    2. OpenSteerDemo
                    3. Bad parallelization




Dienstag, 11. September 2007                 5
Outline
                    1. Steering behaviors
                    2. OpenSteerDemo
                    3. Bad parallelization
                    4. Parallelization that works




Dienstag, 11. September 2007                        5
Outline
                    1. Steering behaviors
                    2. OpenSteerDemo
                    3. Bad parallelization
                    4. Parallelization that works
                    5. Performance




Dienstag, 11. September 2007                        5
Outline
                    1. Steering behaviors
                    2. OpenSteerDemo
                    3. Bad parallelization
                    4. Parallelization that works
                    5. Performance
                    6. Summary


Dienstag, 11. September 2007                        5
Steering behaviors



Dienstag, 11. September 2007                        6
Dienstag, 11. September 2007   7
Dienstag, 11. September 2007   7
Dienstag, 11. September 2007   7
Dienstag, 11. September 2007   7
Alignment
Dienstag, 11. September 2007               8
OpenSteerDemo




Dienstag, 11. September 2007                   9
OpenSteerDemo
                               Testbed for the open source library
                               OpenSteer from Craig W. Reynods




Dienstag, 11. September 2007                                         9
OpenSteerDemo
                               Testbed for the open source library
                               OpenSteer from Craig W. Reynods
                               Simulates steering behavior of agents




Dienstag, 11. September 2007                                           9
OpenSteerDemo
                               Testbed for the open source library
                               OpenSteer from Craig W. Reynods
                               Simulates steering behavior of agents
                               Game-like C++ real-time application




Dienstag, 11. September 2007                                           9
OpenSteerDemo
                               Testbed for the open source library
                               OpenSteer from Craig W. Reynods
                               Simulates steering behavior of agents
                               Game-like C++ real-time application
                               OpenGL




Dienstag, 11. September 2007                                           9
OpenSteerDemo
                               Testbed for the open source library
                               OpenSteer from Craig W. Reynods
                               Simulates steering behavior of agents
                               Game-like C++ real-time application
                               OpenGL
                               http://opensteer.sourceforge.net


Dienstag, 11. September 2007                                           9
Main loop




Dienstag, 11. September 2007               10
Main loop


                               Input   Update   Output




Dienstag, 11. September 2007                             10
Main loop


                                                Graph-
                               Input   Update
                                                  ics




Dienstag, 11. September 2007                             11
Input stage


                                                     Graph-
                               Input     Update
                                                       ics


                                       Time step t



Dienstag, 11. September 2007                                  12
Update stage


                                                     Graph-
                               Input     Update
                                                       ics


                                       Time step t



Dienstag, 11. September 2007                                  13
Graphics stage


                                                     Graph-
                               Input     Update
                                                      ics


                                       Time step t



Dienstag, 11. September 2007                                  14
Next main loop cycle


                                                       Graph-
                               Input      Update
                                                         ics


                                       Time step t+1



Dienstag, 11. September 2007                                    15
Update stage


                                                Graph-
                               Input   Update
                                                  ics




Dienstag, 11. September 2007                             16
Agent update
                                        Update
                                         agent

                    read + write       read + write   read + write     write

                       Agent
                                      Neighbors       Random.        Graphics
                       state

                               references




Dienstag, 11. September 2007                                                    17
Time step t
                In state t-1

                    Update     Update   Update         Update
                     agent      agent    agent   ...    agent
                       0          1        2              n



                Sequential
                    agent
                   update
                    order
Dienstag, 11. September 2007                                    18
Time step t
                In state t-1

                    Update     Update   Update           Update
                     agent      agent    agent   ...      agent
                       0          1        2                n



                Sequential                             Neighbors
                    agent
                   update
                    order                              In state t-1
Dienstag, 11. September 2007                                          18
Time step t
                               In state t-1

                   Update       Update        Update         Update
                    agent        agent         agent   ...    agent
                      0            1             2              n



                Sequential
                    agent
                   update
                    order
Dienstag, 11. September 2007                                          19
Time step t
                    In state t            In state t-1

                    Update       Update    Update              Update
                     agent        agent     agent        ...    agent
                       0            1         2                   n



                Sequential
                    agent
                   update
                    order
Dienstag, 11. September 2007                                            20
Time step t
                               In state t              In state t-1

                    Update     Update       Update         Update
                     agent      agent        agent   ...    agent
                       0          1            2              n



                Sequential
                    agent
                   update
                    order
Dienstag, 11. September 2007                                          21
Time step t
                               In state t              In state t-1

                    Update     Update       Update          Update
                     agent      agent        agent   ...     agent
                       0          1            2               n



                Sequential                                 Neighbors
                    agent
                   update
                    order                                  In state ?
Dienstag, 11. September 2007                                            21
Bad parallelization



Dienstag, 11. September 2007                         22
Dienstag, 11. September 2007   23
Questionable reliability
                     and correctness


Dienstag, 11. September 2007                  23
No speedup




Dienstag, 11. September 2007                24
No speedup




Dienstag, 11. September 2007                24
Main
                 parallelization problems


Dienstag, 11. September 2007                25
Dienstag, 11. September 2007   26
Race conditions




Dienstag, 11. September 2007                     26
Race conditions

                                Global variables, deep inheritance
                                hierarchies, strongly interdependent
                                classes




Dienstag, 11. September 2007                                           26
Race conditions

                                Global variables, deep inheritance
                                hierarchies, strongly interdependent
                                classes

                               Non-determinism




Dienstag, 11. September 2007                                           26
Race conditions

                                Global variables, deep inheritance
                                hierarchies, strongly interdependent
                                classes

                               Non-determinism

                                Order of agent updates and random
                                numbers




Dienstag, 11. September 2007                                           26
Race conditions

                                Global variables, deep inheritance
                                hierarchies, strongly interdependent
                                classes

                               Non-determinism

                                Order of agent updates and random
                                numbers

                               Non-thread-safe functions

Dienstag, 11. September 2007                                           26
Parallelization
                                that works


Dienstag, 11. September 2007                     27
Guiding ideas




Dienstag, 11. September 2007                   28
Guiding ideas
                               Update order independent simulation




Dienstag, 11. September 2007                                         28
Guiding ideas
                               Update order independent simulation
                               Agent modification only dependent on its
                               steering vector




Dienstag, 11. September 2007                                             28
Guiding ideas
                               Update order independent simulation
                               Agent modification only dependent on its
                               steering vector
                               Minimize synchronization




Dienstag, 11. September 2007                                             28
Guiding ideas
                               Update order independent simulation
                               Agent modification only dependent on its
                               steering vector
                               Minimize synchronization
                               Finish parallel processing before graphics
                               stage



Dienstag, 11. September 2007                                                28
Guiding ideas
                               Update order independent simulation
                               Agent modification only dependent on its
                               steering vector
                               Minimize synchronization
                               Finish parallel processing before graphics
                               stage
                               Interfaces for explicit context


Dienstag, 11. September 2007                                                28
Refactorization



Dienstag, 11. September 2007                     29
Split agent update
                                     Agent update


                                   Sim.      Modify
                                   agent     agent



                                    Agent
                                   update
                                    order
Dienstag, 11. September 2007                          30
Simulate agent stage
                               read + write    Sim.
                                               agent
                   Steering
                    Vector                       read                 read     write


                                               Agent                         Render-
                  Random.                                      Neighbors
                                               state                         Feeder
                      Agent                   Agent public

                      state                              references

                  Agent private


Dienstag, 11. September 2007                                                           31
Simulate agent stage
                               read + write    Sim.
                                               agent
                   Steering
                    Vector                       read
                                                     on st            read
                                                                             on st     write
                                                   c                    c
                                               Agent                                 Render-
                  Random.                                      Neighbors
                                               state                                 Feeder
                      Agent                   Agent public

                      state                              references

                  Agent private


Dienstag, 11. September 2007                                                                   31
Modify agent stage
                               read   Modify
                                      agent
                   Steering
                    Vector            read + write

                                       Agent                       Render-
                  Random.                              Neighbors
                                       state                       Feeder
                      Agent           Agent public

                      state                      references

                  Agent private


Dienstag, 11. September 2007                                                 32
Modify neighbor data
                             structure
                                                     Modify
                                                     neigh-
                                                      bors
                   Steering
                    Vector           read                 write

                                   Agent                          Render-
                  Random.                          Neighbors
                                   state                          Feeder
                      Agent       Agent public

                      state                  references

                  Agent private

Dienstag, 11. September 2007                                                33
Refactor update stage


                               Input   Update   Output




Dienstag, 11. September 2007                             34
Split update stage

                                           Update stage



                                         Sim.       Modify



                               Sub-stages: simulation and modification


Dienstag, 11. September 2007                                            35
Old update stage

               Update agent              Update agent           Update agent

            Sim.               Modify   Sim.    Modify         Sim.    Modify
            agent              agent    agent   agent    ...   agent   agent
              0                  0        1       1              n       n



 Sequential
 processing
     order
Dienstag, 11. September 2007                                                    36
Time step t

                                         Agents in state t-1

           Sim.                Modify      Sim.      Modify          Sim.    Modify
           agent               agent       agent     agent     ...   agent   agent
             0                   0           1         1               n       n



 Sequential
 processing
     order
Dienstag, 11. September 2007                                                          37
Time step t

                    Agent in state t                        Agents in state t-1

            Sim.               Modify    Sim.    Modify         Sim.       Modify
            agent              agent     agent   agent    ...   agent      agent
              0                  0         1       1              n          n



 Sequential
 processing
     order
Dienstag, 11. September 2007                                                        38
New update stage

                   Simulation sub-stage                  Modification sub-stage

        Sim.                   Sim.          Sim.    Modify   Modify          Modify
        agent                  agent   ...   agent   agent    agent     ...   agent
          0                      1             n       0        1               n



 Sequential
 processing
     order
Dienstag, 11. September 2007                                                           39
Time step t

               Agents in public state t-1

        Sim.                   Sim.          Sim.    Modify   Modify         Modify
        agent                  agent   ...   agent   agent    agent    ...   agent
          0                      1             n       0        1              n



 Sequential
 processing
     order
Dienstag, 11. September 2007                                                          40
Time step t

                Agents in public state t-1

         Sim.                  Sim.          Sim.    Modify   Modify         Modify
         agent                 agent   ...   agent   agent    agent    ...   agent
           0                     1             n       0        1              n



 Sequential
 processing
     order
Dienstag, 11. September 2007                                                          41
Time step t

                Agents in public state t-1

         Sim.                  Sim.          Sim.    Modify   Modify         Modify
         agent                 agent   ...   agent   agent    agent    ...   agent
           0                     1             n       0        1              n



 Sequential
 processing
     order
Dienstag, 11. September 2007                                                          42
Time step t

                Agents in public state t-1

         Sim.                  Sim.          Sim.    Modify   Modify         Modify
         agent                 agent   ...   agent   agent    agent    ...   agent
           0                     1             n       0        1              n



 Sequential                                          Each agent is modified
 processing                                          based solely on its own
     order                                           state
Dienstag, 11. September 2007                                                          42
Parallelization



Dienstag, 11. September 2007                     43
Parallel update stage
                               Simulation                                  Modification
                                   S                   S               M   M   M




                               P                                   P
                                                               B                   B
                               a           S           S
                                                                   a   M   M   M


                                                               a                   a
                               r                                   r
                                                               r                   r   Update
                               a   S           S           S
                                                                   a   M   M   M

                                                               r                   r   neigh-
                               l                                   l
                                                               i                   i    bors
                               l       S           S
                                                                   l   M   M   M

                                                               e                   e
                               e                                   e                   Possibly
                                                               r                   r
                               l   S           S           S
                                                                   l   M   M   M       parallel

Dienstag, 11. September 2007                                                                      44
Parallel simulation
                                       sub-stage
                               Simulation                              Modification
                                   S                   S




                               P                                   P
                                                               B            B
                               a           S           S
                                                                   a
                                                               a            a
                               r                                   r
                                                               r            r    Update
                               a   S           S           S
                                                                   a
                                                               r            r    neigh-
                               l                                   l
                                                               i            i     bors
                               l       S           S
                                                                   l
                                                               e            e
                               e                                   e              Possibly
                                                               r            r
                               l   S           S           S
                                                                   l              parallel

Dienstag, 11. September 2007                                                                 45
Parallel modification
                                 sub-stage
                               Simulation           Modification
                                                M   M   M




                               P            P
                                        B                   B
                               a            a   M   M   M


                                        a                   a
                               r            r
                                        r                   r   Update
                               a            a   M   M   M

                                        r                   r   neigh-
                               l            l
                                        i                   i    bors
                               l            l   M   M   M

                                        e                   e
                               e            e                   Possibly
                                        r                   r
                               l            l   M   M   M       parallel

Dienstag, 11. September 2007                                               46
Parallel modification
                                 sub-stage
                               Simulation       Modification


                               P            P
                                        B            B
                               a            a
                                        a            a
                               r            r
                                        r            r    Update
                               a            a
                                        r            r    neigh-
                               l            l
                                        i            i     bors
                               l            l
                                        e            e
                               e            e              Possibly
                                        r            r
                               l            l              parallel

Dienstag, 11. September 2007                                          47
Performance




Dienstag, 11. September 2007                 48
Test-computer
                           Dual-processor dual-
                           core 2 GHz AMD
                           Opteron with 2 GB Ram

                           2x Nvidia 7800 GTX
                           graphics cards in SLI
                           mode

                           Linux OS




Dienstag, 11. September 2007                       49
Max speedups




Dienstag, 11. September 2007                  50
Max speedups
                               Comparison of OpenSteerDemo flock of
                               birds simulation with 4 threads with
                               OpenMP-disabled version




Dienstag, 11. September 2007                                          50
Max speedups
                               Comparison of OpenSteerDemo flock of
                               birds simulation with 4 threads with
                               OpenMP-disabled version


                               Whole application: ! 2.84




Dienstag, 11. September 2007                                          50
Max speedups
                               Comparison of OpenSteerDemo flock of
                               birds simulation with 4 threads with
                               OpenMP-disabled version


                               Whole application: ! 2.84


                               Update stage: !! ! 3.54


Dienstag, 11. September 2007                                          50
Summary



Dienstag, 11. September 2007             51
Dienstag, 11. September 2007   52
Refactored first




Dienstag, 11. September 2007                     52
Refactored first

                               Simplicity!




Dienstag, 11. September 2007                     52
Refactored first

                               Simplicity!

                               High-level design to min. synchronization




Dienstag, 11. September 2007                                               52
Refactored first

                               Simplicity!

                               High-level design to min. synchronization

                               Explicit context




Dienstag, 11. September 2007                                               52
Refactored first

                               Simplicity!

                               High-level design to min. synchronization

                               Explicit context

                               Deferred computation




Dienstag, 11. September 2007                                               52
Refactored first

                               Simplicity!

                               High-level design to min. synchronization

                               Explicit context

                               Deferred computation

                               Identified slices for data-parallel
                               computation

Dienstag, 11. September 2007                                               52
Thank you!



Dienstag, 11. September 2007                53

More Related Content

PPT
orchid island 蘭嶼
PPTX
How to Deal with an Overbearing Mother w/o Audio
PPTX
Absolut Vodka (V M )
PPTX
Evaluation question 1res
PPTX
Presentation1
PDF
Physics of Trust OOP 2016
PDF
Grafico diario del dax perfomance index para el 13 08-2013
PDF
8 ways to cheer up during a hard day at work
orchid island 蘭嶼
How to Deal with an Overbearing Mother w/o Audio
Absolut Vodka (V M )
Evaluation question 1res
Presentation1
Physics of Trust OOP 2016
Grafico diario del dax perfomance index para el 13 08-2013
8 ways to cheer up during a hard day at work

Viewers also liked (14)

PDF
Acs towards a gold standard database
PDF
6th lesson
PPTX
LinkedIn for education: An Implementation Aid
PDF
Test driven infrastructure development
PPT
Helsinki book launch jenn lim delivering happiness_45_16.9
PPT
Локальная_система_позиционирования
PPTX
Big ideas 2015
PPTX
MEC / CES - January 6, 2015
PPTX
PDF
Impacto de las tics en las practicas educativas pedi00190 tabla1 3
DOCX
Network Security Expert and Risk Analyst
PPTX
CISOs are from Mars, CIOs are from Venus
DOC
Resume milind patil
PPTX
Atlassian User Group, AUG Wiesbaden, 25 October 2012
Acs towards a gold standard database
6th lesson
LinkedIn for education: An Implementation Aid
Test driven infrastructure development
Helsinki book launch jenn lim delivering happiness_45_16.9
Локальная_система_позиционирования
Big ideas 2015
MEC / CES - January 6, 2015
Impacto de las tics en las practicas educativas pedi00190 tabla1 3
Network Security Expert and Risk Analyst
CISOs are from Mars, CIOs are from Venus
Resume milind patil
Atlassian User Group, AUG Wiesbaden, 25 October 2012
Ad

Recently uploaded (20)

PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Empathic Computing: Creating Shared Understanding
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
MYSQL Presentation for SQL database connectivity
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Unlocking AI with Model Context Protocol (MCP)
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Empathic Computing: Creating Shared Understanding
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
MYSQL Presentation for SQL database connectivity
NewMind AI Weekly Chronicles - August'25-Week II
Advanced methodologies resolving dimensionality complications for autism neur...
Programs and apps: productivity, graphics, security and other tools
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Unlocking AI with Model Context Protocol (MCP)
The AUB Centre for AI in Media Proposal.docx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Assigned Numbers - 2025 - Bluetooth® Document
MIND Revenue Release Quarter 2 2025 Press Release
Per capita expenditure prediction using model stacking based on satellite ima...
Spectral efficient network and resource selection model in 5G networks
Review of recent advances in non-invasive hemoglobin estimation
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Ad

Parallelizing a Real-Time Steering Simulation for Computer Games with OpenMP by Bjoern Knafla and Claudia Leopold (now Fohry)

  • 1. Parallelizing a Real-Time Steering Simulation for Computer Games with OpenMP Bjoern Knafla and Claudia Leopold University of Kassel (Germany) Dienstag, 11. September 2007 1
  • 3. Steering a flock of birds Dienstag, 11. September 2007 2
  • 8. Bird Boid Dienstag, 11. September 2007 3
  • 9. Bird Boid Agent Dienstag, 11. September 2007 3
  • 11. CPU core Dienstag, 11. September 2007 4
  • 13. CPU CPU CPU CPU core core core core CPU CPU CPU CPU core core core core CPU CPU CPU CPU core core core core CPU CPU CPU CPU core core core core Dienstag, 11. September 2007 4
  • 16. Outline 1. Steering behaviors Dienstag, 11. September 2007 5
  • 17. Outline 1. Steering behaviors 2. OpenSteerDemo Dienstag, 11. September 2007 5
  • 18. Outline 1. Steering behaviors 2. OpenSteerDemo 3. Bad parallelization Dienstag, 11. September 2007 5
  • 19. Outline 1. Steering behaviors 2. OpenSteerDemo 3. Bad parallelization 4. Parallelization that works Dienstag, 11. September 2007 5
  • 20. Outline 1. Steering behaviors 2. OpenSteerDemo 3. Bad parallelization 4. Parallelization that works 5. Performance Dienstag, 11. September 2007 5
  • 21. Outline 1. Steering behaviors 2. OpenSteerDemo 3. Bad parallelization 4. Parallelization that works 5. Performance 6. Summary Dienstag, 11. September 2007 5
  • 29. OpenSteerDemo Testbed for the open source library OpenSteer from Craig W. Reynods Dienstag, 11. September 2007 9
  • 30. OpenSteerDemo Testbed for the open source library OpenSteer from Craig W. Reynods Simulates steering behavior of agents Dienstag, 11. September 2007 9
  • 31. OpenSteerDemo Testbed for the open source library OpenSteer from Craig W. Reynods Simulates steering behavior of agents Game-like C++ real-time application Dienstag, 11. September 2007 9
  • 32. OpenSteerDemo Testbed for the open source library OpenSteer from Craig W. Reynods Simulates steering behavior of agents Game-like C++ real-time application OpenGL Dienstag, 11. September 2007 9
  • 33. OpenSteerDemo Testbed for the open source library OpenSteer from Craig W. Reynods Simulates steering behavior of agents Game-like C++ real-time application OpenGL http://opensteer.sourceforge.net Dienstag, 11. September 2007 9
  • 34. Main loop Dienstag, 11. September 2007 10
  • 35. Main loop Input Update Output Dienstag, 11. September 2007 10
  • 36. Main loop Graph- Input Update ics Dienstag, 11. September 2007 11
  • 37. Input stage Graph- Input Update ics Time step t Dienstag, 11. September 2007 12
  • 38. Update stage Graph- Input Update ics Time step t Dienstag, 11. September 2007 13
  • 39. Graphics stage Graph- Input Update ics Time step t Dienstag, 11. September 2007 14
  • 40. Next main loop cycle Graph- Input Update ics Time step t+1 Dienstag, 11. September 2007 15
  • 41. Update stage Graph- Input Update ics Dienstag, 11. September 2007 16
  • 42. Agent update Update agent read + write read + write read + write write Agent Neighbors Random. Graphics state references Dienstag, 11. September 2007 17
  • 43. Time step t In state t-1 Update Update Update Update agent agent agent ... agent 0 1 2 n Sequential agent update order Dienstag, 11. September 2007 18
  • 44. Time step t In state t-1 Update Update Update Update agent agent agent ... agent 0 1 2 n Sequential Neighbors agent update order In state t-1 Dienstag, 11. September 2007 18
  • 45. Time step t In state t-1 Update Update Update Update agent agent agent ... agent 0 1 2 n Sequential agent update order Dienstag, 11. September 2007 19
  • 46. Time step t In state t In state t-1 Update Update Update Update agent agent agent ... agent 0 1 2 n Sequential agent update order Dienstag, 11. September 2007 20
  • 47. Time step t In state t In state t-1 Update Update Update Update agent agent agent ... agent 0 1 2 n Sequential agent update order Dienstag, 11. September 2007 21
  • 48. Time step t In state t In state t-1 Update Update Update Update agent agent agent ... agent 0 1 2 n Sequential Neighbors agent update order In state ? Dienstag, 11. September 2007 21
  • 51. Questionable reliability and correctness Dienstag, 11. September 2007 23
  • 52. No speedup Dienstag, 11. September 2007 24
  • 53. No speedup Dienstag, 11. September 2007 24
  • 54. Main parallelization problems Dienstag, 11. September 2007 25
  • 56. Race conditions Dienstag, 11. September 2007 26
  • 57. Race conditions Global variables, deep inheritance hierarchies, strongly interdependent classes Dienstag, 11. September 2007 26
  • 58. Race conditions Global variables, deep inheritance hierarchies, strongly interdependent classes Non-determinism Dienstag, 11. September 2007 26
  • 59. Race conditions Global variables, deep inheritance hierarchies, strongly interdependent classes Non-determinism Order of agent updates and random numbers Dienstag, 11. September 2007 26
  • 60. Race conditions Global variables, deep inheritance hierarchies, strongly interdependent classes Non-determinism Order of agent updates and random numbers Non-thread-safe functions Dienstag, 11. September 2007 26
  • 61. Parallelization that works Dienstag, 11. September 2007 27
  • 62. Guiding ideas Dienstag, 11. September 2007 28
  • 63. Guiding ideas Update order independent simulation Dienstag, 11. September 2007 28
  • 64. Guiding ideas Update order independent simulation Agent modification only dependent on its steering vector Dienstag, 11. September 2007 28
  • 65. Guiding ideas Update order independent simulation Agent modification only dependent on its steering vector Minimize synchronization Dienstag, 11. September 2007 28
  • 66. Guiding ideas Update order independent simulation Agent modification only dependent on its steering vector Minimize synchronization Finish parallel processing before graphics stage Dienstag, 11. September 2007 28
  • 67. Guiding ideas Update order independent simulation Agent modification only dependent on its steering vector Minimize synchronization Finish parallel processing before graphics stage Interfaces for explicit context Dienstag, 11. September 2007 28
  • 69. Split agent update Agent update Sim. Modify agent agent Agent update order Dienstag, 11. September 2007 30
  • 70. Simulate agent stage read + write Sim. agent Steering Vector read read write Agent Render- Random. Neighbors state Feeder Agent Agent public state references Agent private Dienstag, 11. September 2007 31
  • 71. Simulate agent stage read + write Sim. agent Steering Vector read on st read on st write c c Agent Render- Random. Neighbors state Feeder Agent Agent public state references Agent private Dienstag, 11. September 2007 31
  • 72. Modify agent stage read Modify agent Steering Vector read + write Agent Render- Random. Neighbors state Feeder Agent Agent public state references Agent private Dienstag, 11. September 2007 32
  • 73. Modify neighbor data structure Modify neigh- bors Steering Vector read write Agent Render- Random. Neighbors state Feeder Agent Agent public state references Agent private Dienstag, 11. September 2007 33
  • 74. Refactor update stage Input Update Output Dienstag, 11. September 2007 34
  • 75. Split update stage Update stage Sim. Modify Sub-stages: simulation and modification Dienstag, 11. September 2007 35
  • 76. Old update stage Update agent Update agent Update agent Sim. Modify Sim. Modify Sim. Modify agent agent agent agent ... agent agent 0 0 1 1 n n Sequential processing order Dienstag, 11. September 2007 36
  • 77. Time step t Agents in state t-1 Sim. Modify Sim. Modify Sim. Modify agent agent agent agent ... agent agent 0 0 1 1 n n Sequential processing order Dienstag, 11. September 2007 37
  • 78. Time step t Agent in state t Agents in state t-1 Sim. Modify Sim. Modify Sim. Modify agent agent agent agent ... agent agent 0 0 1 1 n n Sequential processing order Dienstag, 11. September 2007 38
  • 79. New update stage Simulation sub-stage Modification sub-stage Sim. Sim. Sim. Modify Modify Modify agent agent ... agent agent agent ... agent 0 1 n 0 1 n Sequential processing order Dienstag, 11. September 2007 39
  • 80. Time step t Agents in public state t-1 Sim. Sim. Sim. Modify Modify Modify agent agent ... agent agent agent ... agent 0 1 n 0 1 n Sequential processing order Dienstag, 11. September 2007 40
  • 81. Time step t Agents in public state t-1 Sim. Sim. Sim. Modify Modify Modify agent agent ... agent agent agent ... agent 0 1 n 0 1 n Sequential processing order Dienstag, 11. September 2007 41
  • 82. Time step t Agents in public state t-1 Sim. Sim. Sim. Modify Modify Modify agent agent ... agent agent agent ... agent 0 1 n 0 1 n Sequential processing order Dienstag, 11. September 2007 42
  • 83. Time step t Agents in public state t-1 Sim. Sim. Sim. Modify Modify Modify agent agent ... agent agent agent ... agent 0 1 n 0 1 n Sequential Each agent is modified processing based solely on its own order state Dienstag, 11. September 2007 42
  • 85. Parallel update stage Simulation Modification S S M M M P P B B a S S a M M M a a r r r r Update a S S S a M M M r r neigh- l l i i bors l S S l M M M e e e e Possibly r r l S S S l M M M parallel Dienstag, 11. September 2007 44
  • 86. Parallel simulation sub-stage Simulation Modification S S P P B B a S S a a a r r r r Update a S S S a r r neigh- l l i i bors l S S l e e e e Possibly r r l S S S l parallel Dienstag, 11. September 2007 45
  • 87. Parallel modification sub-stage Simulation Modification M M M P P B B a a M M M a a r r r r Update a a M M M r r neigh- l l i i bors l l M M M e e e e Possibly r r l l M M M parallel Dienstag, 11. September 2007 46
  • 88. Parallel modification sub-stage Simulation Modification P P B B a a a a r r r r Update a a r r neigh- l l i i bors l l e e e e Possibly r r l l parallel Dienstag, 11. September 2007 47
  • 90. Test-computer Dual-processor dual- core 2 GHz AMD Opteron with 2 GB Ram 2x Nvidia 7800 GTX graphics cards in SLI mode Linux OS Dienstag, 11. September 2007 49
  • 91. Max speedups Dienstag, 11. September 2007 50
  • 92. Max speedups Comparison of OpenSteerDemo flock of birds simulation with 4 threads with OpenMP-disabled version Dienstag, 11. September 2007 50
  • 93. Max speedups Comparison of OpenSteerDemo flock of birds simulation with 4 threads with OpenMP-disabled version Whole application: ! 2.84 Dienstag, 11. September 2007 50
  • 94. Max speedups Comparison of OpenSteerDemo flock of birds simulation with 4 threads with OpenMP-disabled version Whole application: ! 2.84 Update stage: !! ! 3.54 Dienstag, 11. September 2007 50
  • 97. Refactored first Dienstag, 11. September 2007 52
  • 98. Refactored first Simplicity! Dienstag, 11. September 2007 52
  • 99. Refactored first Simplicity! High-level design to min. synchronization Dienstag, 11. September 2007 52
  • 100. Refactored first Simplicity! High-level design to min. synchronization Explicit context Dienstag, 11. September 2007 52
  • 101. Refactored first Simplicity! High-level design to min. synchronization Explicit context Deferred computation Dienstag, 11. September 2007 52
  • 102. Refactored first Simplicity! High-level design to min. synchronization Explicit context Deferred computation Identified slices for data-parallel computation Dienstag, 11. September 2007 52
  • 103. Thank you! Dienstag, 11. September 2007 53