Presentation is loading. Please wait.

Presentation is loading. Please wait.

The Effects of Parallel Programming on Gaming Anthony Waterman.

Similar presentations


Presentation on theme: "The Effects of Parallel Programming on Gaming Anthony Waterman."— Presentation transcript:

1 The Effects of Parallel Programming on Gaming Anthony Waterman

2 Topics to Discuss Are online games conceptually parallel? What portions of a game benefit from parallelization? Graphics Processing Units (GPUs) General-Purpose Computing on Graphics Processing Units (GPGPU) History of Parallel Programming in Consoles Parallelization = Game Development Success?

3 Online Client-Server Games are Conceptually Parallel Clients are identical programs with different data (SPMD - Single Program Multiple Data) Multiple client computers take input from a user, execute local game functions, and communicate necessary information to the master server Server takes information from the clients, executes local server-side functions, and communicate necessary information back down to the clients ServerClient AClient BClient C Both the clients and the server contribute to as well as make up the overall state of the game

4 Additional Similarities Between Client/Server & Classical Parallel Programming Communication between processors/computers is time consuming Communication time can create bottle necks in both applications Both applications can use local sequential functions to compensate Client/Server Game Classical Parallel Application (Prime Number Sieve) Communication Bottleneck appears as: Game lag Sluggish response time Significantly slower completion time Solution: Local prediction of upcoming game state Locally calculated starting values

5

6 What portions of a game benefit from parallelization? Graphics Graphics in video games are not accomplished in the same way movies/videos are done In a video game, what the player sees is created as the game is played Processors must decide what color each pixel needs to be in order to show the correct image Graphics Processing Units (GPUs) are responsible for nearly all video game graphics

7 Graphics Processing Units (GPUs) A GPU is essentially a chip with tiny built-in processors or cores often referred to as shaders designed to process graphics Shaders are simplistic by design and are used to process large magnitudes of image data to create the desired picture Generally divided into two types (though others exist) Vertex Shaders – process 3D data in order to display it on a 2D screen Pixel Shaders – determine the color and attributes of a pixel The number of shaders vary by GPU, but the most recent console GPUs have 768 (Xbox One) and 1152 (PS4)

8 What portions of a game benefit from parallelization? Physics Many modern games have simulated physics Simulation Games are generally built around a complex physics environment What happens in the game is a direct result of a multitude physics equations and parameters

9 Possible Implementation for a Rocket Engineering Game Basic Algorithm for Physics Simulations Setup Each component and connection has structural strengths, attributes, current velocity, etc. Each processor is responsible for modeling 1 or more components/connections Algorithm Force analysis on each component/connection Computation intensive, requires some communication to solve for forces from other components Strength computations to determine if any component/connection will fail Highly computation intensive and parallelizable*** Update components/connections if failures have occurred Summation of forces on each set of connected components to determine acceleration Apply acceleration to update each component’s current velocity and position Move forward one time step and repeat

10 Possible Implementation for a Rocket Engineering Game Analyze Force Vectors Check Forces Versus Component/ Connection Strengths Check Forces Versus Component/ Connection Strengths Update Components/ Connections Force Summation for Each Set of Connected Components to Determine Acceleration Apply Accelerations to Update Component Velocities and Positions Advance Time Step … … … … … … … … … … … … … … … … … … … …

11 What portions of a game benefit from parallelization? Artificial Intelligence (AI) AI is an essential component to most video games AI programs generally involve large data sets and robust decision trees, making them prime candidates for parallel computation Another parallelizable function closely linked to AI is pathfinding Pathfinding uses decision tree algorithms to find the most direct/desired path by checking a vast number of possible paths

12 What portions of a game benefit from parallelization? World Generation Example: Minecraft On the PC version of Minecraft, maximum blocks that can be generated in a world is approximately 921,600,000,000,000,000. *This example is only to show the scale of what could be accomplished. Minecraft generates small portions of the world procedurally.

13 What portions of a game benefit from parallelization? Character Generation Custom created characters are common among RPGs Using the same slider type architecture, characters could be created using parallel computing This could be especially useful for generating multiple characters at once Machine created characters should be created intelligently

14 General-purpose computing on graphics processing units (GPGPU) What is GPGPU? GPGPU is the use of graphics processing unit’s inherent parallel structure to perform non- graphic calculations GPGPU is used in the #2 ranked supercomputer in the world, the Titan which takes advantage of Nvidia GPUs In gaming, GPGPU can help with some of the more computation intensive tasks such as AI and physics modeling PlayStation 4 is one console that is confirmed to use their GPU in physics simulation applications GPGPU applications are constrained by limited number of operations the GPU cores are able to process

15 General-purpose computing on graphics processing units (GPGPU)

16 History of Parallel Programming in Consoles First use of multiple processors Non-parallel applications (Late 1980’s) 4 th Generation of gaming consoles Super Nintendo Entertainment System (SNES) Sega Genesis/Mega Drive Used Central Processing Unit (CPU) + Graphics Processing Unit (GPU) + Sound Processor Distinct processors carried out specific tasks

17 History of Parallel Programming in Consoles Multiple Processors (Parallel applications) Sega Saturn (1994) (5 th Gen) First console to use 2 CPUs Game developers lacked the ability to program parallel game components Processors were primarily given separate tasks

18 History of Parallel Programming in Consoles Xbox 360 (2005) (7 th Gen) Tri-core CPU with shared memory GPU consisting of 48 cores PlayStation 3 (2006) (7 th Gen) Cell microprocessor using a "Power Processing Element" (PPE) and 6 available “Synergistic Processing Elements” (SPEs) First commercial use of the cell microprocessor architecture in any system, not consoles exclusively GPU consisting of 32 cores (Some graphics tasks handled by Cell CPU)

19 History of Parallel Programming in Consoles Current Generation of Consoles (8 th ) Xbox One (2013) (8 th Gen) CPU consists of 2 quad-core processors, 8 cores total GPU consisting of 768 cores *** PlayStation 4 (2013) (8 th Gen) CPU consists of 2 quad-core processors, 8 cores total GPU consisting of 1,152 cores ***

20 Recent Parallelization Popularity (CPU) 2000-2015

21 Recent Parallelization Popularity (GPU) 2000-2015

22 Not all games require parallelization in order to be successful Parallelization provides benefits: Better graphics More accurate simulations Smarter artificial intelligence Etc. Some games, most notably Independent or Indie games, succeed through captivating gameplay and story Parallelization is a tool that expands a developers options in terms of game design Parallelization = Game Development Success?

23

24 Questions?


Download ppt "The Effects of Parallel Programming on Gaming Anthony Waterman."

Similar presentations


Ads by Google