Smoke Demo at Work
To demonstrate the framework’s power, Intel built a graphical demo that allows a viewer to visualize the framework’s performance advantage. The scene depicts a farmhouse under siege by meteor strikes, which are causing raging fires to erupt in the surrounding trees (see Figure 7).
Figure 7. The Smoke demo running with all eight processing threads active.
The Smoke demo allows the viewer to control the number of worker threads that can access jobs created by the framework. Matching the number of threads to the total number of accessible threads in a system (eight threads with the Intel Core i7 Processor) offers the best performance, but Intel’s demo allows for running on multiple iterations of thread counts in order to see the performance gains the framework provides.
Figure 7 shows the demo running with eight total threads with a frame rate of 74 fps on our Intel Core i7 Processor-based test system. You can see that all eight CPUs in the performance box are evenly loaded, and the total CPU utilization is in the upper 80 percent range. You can also see the breakdown in workload for each system in the demo, including procedural fire, trees, AI, physics and so on.
Figure 8. The same area of the demo using four threads of processing.
Here we reduced the thread count in Smoke from eight threads to four and with the demo set at four worker threads as in Figure 8, the system uses approximately 46 percent of the total CPU power and an average frame rate of 49 fps—a 50 percent drop from our eight-thread performance.
Figure 9a. With only two active threads the performance of the demo is affected drastically.
Figure 9b. The same work can be done with just a single worker thread, although performance is affected.
Figures 9a and 9b show the same scene running with two worker threads and a single worker thread, respectively; performance drops more than significantly in each downward step. The demo runs more than 6.7x faster with eight worker threads than with a single thread, which proves that with a properly implemented multi-threaded game engine developers can really push performance on systems with any number of processing cores.
What Smoke Means Today
While we might immediately jump to the conclusion that this multi-threaded framework was built with Intel’s new many-core graphics architecture in mind, adopting Smoke-like designs in today’s gaming engines has clear benefits. With the Intel Core i7 Processor now on the scene, systems with four hyper-threaded cores (and thus allowing for eight logical threads) are going to be streaming into the gaming scene. Taking advantage of that processing power is definitely a challenge, and a design similar to what we have described in this article will allow game developers to use much more of the available processing horsepower than do gaming titles today.
Intel’s software development team built Smoke simply to demonstrate that an efficiently threaded gaming engine for any number of threads is possible. While we do not expect to see game developers pick up on the design directly and port this exact framework to their own games, Intel does present the code freely to all game developers at http://Whatif.intel.com, helping to educate the market on what is possible with today’s and tomorrow’s CPU hardware.
Having software that can completely utilize the hardware in our PCs is not just a neat technology topic, but is important to current and future computing on a higher level as the demands for power-efficiency and green technologies take a front-row seat in the global market.
And while we definitely need to see increased efficiency in all areas of processing, gaming is equally important and equally lucrative: After all, what’s the use of all the work without a little play? The Intel Smoke framework is a fantastic forward-looking example of how software developers can utilize Intel hardware for the best possible user experience.
|
The real chalenge would be using more complex scene to render from 1 thread to 8 threads. For exemple a farm 8 time bigger or with a lot more rigid body.
The Smoke team is working on another demo called Horsepower. This demo is supposed to show “perceivable difference" based on the number of available threads; very similar to what you are suggesting. In Horsepower, with an increasing number of threads the demo will be able to process more objects animating, using physics, and running AI. All of the source code for Smoke is available here: http://software.intel.com/en-us/articles/smoke-game-technology-demo. Please feel free to experiment with Smoke and I’d love to hear what you do with it.
There is a lot of work to do for the last part :)
About Horsepower, it seems to be very interesting, can you give us more informations ?
I'am interesting about horsepower because I'am actualy working on a demo of my own with physics and 3D only, no animation (object or 2D), no particules, no AI. And of course I expected more objects to be compute based on the number of availlable threads :p
We will release Horsepower early next year. This demo adds LODs and multithreaded animation to the Smoke framework. The Horsepower demo shows a hilly scene with a large number of herding horses. The number of horses is dependent on the number of available threads and compute power. Just like Smoke, we are planning on giving away all the source code.
Keep me up-to-date on your demo. It sounds like an interesting project ^_^
You can have videos of our demo over here http://www.acclib.com/2009/01/load-balancing-23012009.html
Like I said before it's just a technological demo, not a game demo :)
Rgds
VIncent
On a corei7, I can deal with 4x more spheres on 8 threads (compare to 1 thread). Test is here : http://www.acclib.com/2009/01/load-balancing-corei7-27012009.html
Vincent
developers will find these series of articles helpful in reaching greater performance in their games.
We have already presented our first phase of optimization work on Smoke at the Intel Developer Forum in September. Luckily, the presentation was recorded and is already live on
Intel Software Network. Part 1 of the video can be found here: http://software.intel.com/en-us/videos/optimizing-a-video-game-smoke-fanning-the
-flames-to-really-make-it-burn-part-1/ which also has links to the rest of the presentation. The slides can be found here: http://www.intel.com/go/idfsessions
The presentation reviewed the demo code design and then showed a complete performance study, with step-by-step use of Intel tools:
- Benchmark and measure a baseline
- Find common memory and data race bugs with Intel® Parallel Studio
- Drill down into hot spots in the code, and highlight why they're hot with Intel Parallel Studio and Intel® VTuneTM Analyzer
- Find concurrency problems with Intel® Thread Profiler
- Show some speedups made in the code
We are planning to release the updates we made to the Smoke code in the coming weeks, which includes a performance speed up and a port of the code to
Visual Studio 2008. Both an executable and source code will be made available, as usual.
Please let us know if you have any suggestions for making Smoke better!