Project “Smoke” N-core engine experiment Threading for Performance AND Features.

Slides:



Advertisements
Similar presentations
Threads, SMP, and Microkernels
Advertisements

Enhancing Spotfire with the Power of R
MINJAE HWANG THAWAN KOOBURAT CS758 CLASS PROJECT FALL 2009 Extending Task-based Programming Model beyond Shared-memory Systems.
MANIFEST DESTINY 560group3 Abe Kim David Straily Jarrod Freeman Abdul Mod-Rokbi “The future of RTS games...”
Game Content Development (Game Content Development)
MotoHawk Training Model-Based Design of Embedded Systems.
THQ/Gas Powered Games Supreme Commander and Supreme Commander: Forged Alliance Thread for Performance.
DEV392: Extending SharePoint Products And Technologies Through Web Parts And ASP.NET Clint Covington, Program Manager Data And Developer Services - Office.
Browsers and Servers CGI Processing Model ( Common Gateway Interface ) © Norman White, 2013.
Flash Workshop Flash Workshop :: Agenda  Introductions  Look at a few Flash Examples  Flash Web Sites  Flash Web Applications  Flash Games.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
Accelerating Machine Learning Applications on Graphics Processors Narayanan Sundaram and Bryan Catanzaro Presented by Narayanan Sundaram.
By Steven Taylor.  Basically a video game engine is a software system designed for the creation and development of video games.  There are many game.
Threading Games for Performance – Architecture – Case Studies.
Introducing MagicInfo Videowall 2
AGD: 5. Game Arch.1 Objective o to discuss some of the main game architecture elements, rendering, and the game loop Animation and Games Development.
CHAPTER 17 Creating an Interactive 3D Environment © 2008 Cengage Learning EMEA.
Parallel Game Engine Design or How I Learned to Stop Worrying and Love Multithreading.
Comparing Python and Visual Basic
Games Development 2 Entity / Architecture Review CO3301 Week
CSE 381 – Advanced Game Programming 3D Game Architecture.
Lesson 1: Intro to Animation
Antigone Engine Kevin Kassing – Period
Character Animation Blending Abstract BSP Content Importing Digital Content Pipeline Extending Microsoft’s XNA Framework with BSP Content and Animation.
Micro Focus Net Express / Server Express in GDT Update.
Mark Nelson What are game engines? Fall 2013
M i SMob i S Mob i Store - Mobile i nternet File Storage Platform Chetna Kaur.
50mm Telescope ACS Course Garching, 15 th to 19 th January 2007 January 2007Garching.
GPUs and Accelerators Jonathan Coens Lawrence Tan Yanlin Li.
Multi-threading basics
Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output.
Chapter 14 Part II: Architectural Adaptation BY: AARON MCKAY.
Selected Topics in Software Engineering - Distributed Software Development.
Module 10 Administering and Configuring SharePoint Search.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Learning Unity. Getting Unity
AI in games Roger Crawfis CSE 786 Game Design. AI vs. AI for games AI for games poses a number of unique design challenges AI for games poses a number.
‘Fire’: The Procedural Method Investigation of Procedural Trees and Fire:
Games Development Game Architecture: Entities CO2301 Games Development 1 Week 22.
PwC New Technologies New Risks. PricewaterhouseCoopers Technology and Security Evolution Mainframe Technology –Single host –Limited Trusted users Security.
1 © 2005 Cisco Systems, Inc. All rights reserved. Session Number Presentation_ID Cisco Public Cisco Unity Connection Notification Jane Rygg Core Services.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Havok FX Physics on NVIDIA GPUs. Copyright © NVIDIA Corporation 2004 What is Effects Physics? Physics-based effects on a massive scale 10,000s of objects.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
Chapter 5 Introduction To Form Builder. Lesson A Objectives  Display Forms Builder forms in a Web browser  Use a data block form to view, insert, update,
SCRIPT PROGRAMMING WITH FLASH Introductory Level 1.
Learningcomputer.com SQL Server 2008 – Management Studio.
Cross Language Clone Analysis Team 2 February 3, 2011.
11 Computers, C#, XNA, and You Session 1.1. Session Overview  Find out what computers are all about ...and what makes a great programmer  Discover.
JavaScript Introduction and Background. 2 Web languages Three formal languages HTML JavaScript CSS Three different tasks Document description Client-side.
CITA 171 Section 1 DOS/Windows Introduction. DOS Disk operating system (DOS) –Term most often associated with MS-DOS –Single-tasking operating system.
Game Developers Conference 2009 Multithreaded AI For The Win! Orion Granatir Senior Software Engineer.
High degree of user interaction Interactive Systems: Model View Controller Presentation-abstraction-control.
1 Copyright © 2008, Oracle. All rights reserved. Repository Basics.
Today Threading, Cont. Multi-core processing. Java Never Ends! Winter 2016CMPE212 - Prof. McLeod1.
Windows Vista Configuration MCTS : Internet Explorer 7.0.
Lecture 1 Page 1 CS 111 Summer 2013 Important OS Properties For real operating systems built and used by real people Differs depending on who you are talking.
Multi-threading the Oxman Game Engine Sean Oxley CS 523, Fall 2012
Game Engine Architecture
The Purpose of game Engines
Parallel Objects: Virtualization & In-Process Components
Software Architecture in Practice
Game Engine Architecture
Many-core Software Development Platforms
Chapter 4: Threads.
Interface Programming 2 Week 1
Chapter 4: Threads & Concurrency
Games Development Game Architecture: Entities
Games Development 2 Tools Programming
Games Development 2 Entity / Architecture Review
Presentation transcript:

Project “Smoke” N-core engine experiment Threading for Performance AND Features

“Smoke” is threaded for performance and features – here’s how! 2 Well partitioned, configurable Share source, demos, samples, workloads, white papers More info at Intel Developer Forum Engine + framework with typical game subsystems

Experiment with game tech – how does it all fit together? Explore performance on n-cores –Framework designed to scale to n threads –Which game architecture runs well with 8 threads? More? Try features –Procedural fire/smoke –Dynamic vegetation, etc. Measure them separately/together (to see interplay) –Core threading techniques –Physics –Dynamic vegetation –Fire/smoke, etc. Extend into the future 3

It’s working today! Display (Ogre3D) TaskManager Physics Sound Volumetric Smoke Procedural Fire Procedural Trees AI Animation User input/control Scripting Instrumentation Camera bot 4

The framework holds it together Heavy use of interfaces, easy to extend Minimizes thread sync via messaging Most of the code is in the Systems Engine Managers Framework Scheduler Parser Environment Service Platform Task Messaging (Change control) UScene UObject … Systems Definition Files Interfaces System 5

GDC 2007: Restructuring will take games to multiple processors! 6

Three configurations: Single thread – shut threading off Native threads Threading Building Blocks Thread count scales to HW (4-core here) Task Manager puts System’s update in pool Systems chunk the update for other threads Thread pool used by all systems (even external ones, like Havok) Task Manager: scalable n-core thread pool 7

AI System Graphics System Physics System Systems subscribe to change messages 8 Each system subscribes to changes it needs Decoupled communication reduces dependencies –Observer/Mediator Lower memory bandwidth Subscribe …

AI System Graphics System Physics System Physics AI Render AI... Tasks get subdivided 9 Scheduler invokes each system per frame System subdivides work into sub-tasks Using “natural” granularity Good middleware makes this easy

AI System Graphics System Physics System Physics AI Job Pool Render AI... Render Physics AI Tasks get subdivided All sub-tasks in single job pool

AI System Graphics System Physics System Physics AI Job Pool Render AI... Render Physics AI... AI Physics AI Physics AI Worker Threads Tasks get subdivided 11 Render N worker threads, 1 per processor core Sub-tasks spread out as needed

AI System Graphics System Physics System Physics AI Job Pool Render AI... Render Physics AI... AI Physics AI Physics AI Worker Threads Tasks post changes 12 Render Post changes Messaging (change control)

AI System Graphics System Physics System Physics AI Job Pool Render AI... Render Physics AI... AI Physics AI Physics AI Worker Threads Each thread has queued changes 13 Render Messaging (change control) C1 C2 C3 C4 C5 C6 C7

AI System Graphics System Physics System Physics AI Job Pool Render AI... Render Physics AI... AI Physics AI Physics AI Worker Threads Changes are sent to observers 14 Render C1 C2 C3 C4 C5 C6 C7 Change Occurred Messaging (change control)

Good news/bad news: systems can (must) chunk up work Some systems are very good at this (physics, fire, volumetric smoke, animation) Harder in other cases (graphics, script) 15

Sounds great, what makes this harder? Messaging system isn’t natural for sharing some data Service manager selectively exposes framework/system interfaces How do collision and AI work without data from multiple systems? 16

Graphics and animation show it all Using Ogre3D Extending window –Display performance stats –Debug output Extending Ogre’s animation –Drive skeletal based data to provide realistic creature expressions and locomotion –Use skeletons and weight maps –Hierarchical skeletal animation supports animation blending 17 Orion Granatir

Scene layout is configurable 18 Meteor.Object FireBall.Object Physics Properties FallingMeteorOnFire.Object + +

How do we put a scene together? 19 // Meteor 1 // Meteor 2... // Meteor 10 SmokeDemo.Scene

The fire system burns brightly! Propagates naturally Smart particle systems use heat particles from each fire to spread procedurally Configurable density, velocity, direction, etc. 20

Procedural trees Editable grammar and seeded parser –Easy to create an endless variety of trees Canopies can be added, changed, or removed for seasonal effects Create Forests: each seed creates a different tree 21

Physics rocks (and shatters)! Integrated physics –ODE/Newton –Havok (with CharacterProxy and BreakOffParts) –Bullet Physics Library Porting all systems to work with different physics Physics issues jobs that we put in thread pool as tasks

AI makes the world appear alive Flocks of chickens, herds of horses, and swoops of swallows all interact with the scene using custom AIs “Smart” enough to find companions, fear fire, and avoid falling objects AI was built from the ground up to be highly threaded AI drives velocity changes, uses Havok’s Character Proxy to interact w/environment 23

Sometimes, things go wrong Heavy contention on global sync objectPer-thread sync 24

What’s next for Smoke? Continuing development Look for public showing later in 2008 Code and white paper release to follow 25

Lessons learned (so far) Do: Evaluate the features of your middleware for integration. Find the best “chunking” in your systems. Measure, understand and tune your performance/content. Be the one that figures this all out! Don’t : Ignore thread interaction between systems, especially middleware. Panic. No one method works for everybody. Forget to share your great success stories at GDC 2009! 26

Questions from the attendees What do you think? Where should we go from here? Any favorite technologies we should integrate? Have you tried something like this? How did it go? Have you rejected trying something like this? Why? 27