Sponsored By

In this Intel-sponsored feature article, Intel Software and Services Group application engineer and game development veteran Orion Granatir speaks about the importance of multi-threading and visual computing trends.

November 7, 2008

16 Min Read

Author: by Intel Visual Adrenaline Team

[In this Intel-sponsored feature article, Intel Software and Services Group application engineer and game development veteran Orion Granatir speaks about the importance of multi-threading and visual computing trends.]

Increased processing power is opening up new levels of game experiences. Dual- and quad-core CPUs and even GPUs are becoming the computing standard, and even more power will be available in the future with the many-core Larrabee architecture. But along with this potential comes new development challenges for game studios.

That's where Intel application engineer Orion Granatir comes in. Prior to joining Intel, Granatir worked for independent developer Insomniac Games, where he contributed to the PlayStation 3 titles Resistance: Fall of Man, Resistance 2, and Ratchet & Clank Future: Tools of Destruction, giving him a behind-the-scenes perspective on the rigors of developing a modern triple-A title.

Today, along with other members of the Intel® Software and Services Group, he educates developers about progress in the world of multi-threading and other emerging visual computing standards, and assists them with their own game projects. The editors of Gamasutra.com spoke with Granatir about the principles of multi-threading, current and upcoming trends in visual computing, and his work supporting developers.

What is your role at Intel?

Orion: At Intel, our group is part of Visual Computing Software Enabling -- we work with game companies to make their games work better on Intel products.

My group uses technical demos, presentations, collateral materials and other resources to help teach and influence people in the game industry to take advantage of what Intel is working on now, and what's coming out in the future.

Do you work directly with the studios?

Orion: Yes.

So a game that has an Intel splash screen when it loads might indicate that you've helped them out?

Orion: Yeah, seeing a full Intel splash screen or a game being packaged with an Intel logo usually means we've done some work to try to make the game run better.

What issues do you work on? Is multi-threading a big one?

Orion: Exactly. We help them tackle these challenges: (1) using multi-threading and learning how to use all of the cores Intel is putting in the CPUs, and (2) taking advantage of Intel® Graphics.

I assume you work primarily with PC developers then.

Orion: Yes, exclusively. That being said, most game companies nowadays do a PC version and support all the consoles as well.

These days, is multi-core equally relevant on PC and console? Do PC developers still mainly have to support single-core processors?

Orion: Specific numbers have been published on the actual percentage, but most of what is out there right now is at least dual-core, and those numbers will continue to increase. And you're right -- the consoles, such as the PlayStation 3's SPUs, are now supporting multiple cores or multiple co-processors.

This means multi-threading is becoming more relevant for all platforms, PC and console. The cool thing is, regardless of how many cores a system has, your game can take advantage of them if you set up the threading correctly. Your game can scale well to take advantage of not only a single core, but two, four, and eight cores -- whatever is coming down the road.

Same thing with consoles: if you set it up right, in theory, your PlayStation 3 game could scale well to whatever Sony has in mind for the PlayStation 4.

Going from the world of the console to the world of the PC might seem different at first, but the challenge is the same: It's all about taking advantage of the processing power, regardless of the manufacturer that is putting it in the platform.

Do you think that the multi-core presence on the console side has had a bounce-back effect by encouraging more multi-threading on the PC, where they may not have needed to before?

Orion: To a certain extent, yes. Having multi-core on the console means the dollars spent will just work better on all platforms. It's much more worthwhile.

How long do you think it will be until multi-threading is ubiquitous, or until developers can just think of development basically in those terms?

Orion: That time is already here. Nearly all of the processors that Intel is shipping, along with what AMD and everyone else are shipping, are at least dual-core. I read some marketing numbers that give the percentages, but nowadays the main spec of the games hitting the market is dual-core.

But the challenges remain. We might say to people, "Hey, we have this super kick-ass processor coming out. What can we do to support this or try to take advantage of these high-end machines?" They sometimes respond, "Well, we're really spending a lot of our time and effort trying to support some of these low-end machines." So there is still an abundance of those low-end machines floating around.

That's been part of the success of World of Warcraft or The Sims, which run successfully on lower-end machines.

Orion: Exactly. That's the nice thing about certain titles and what we're trying to accomplish -- there's the market for the low-end machines, but often there's a market for the high-end ones as well. Especially World of Warcraft, even though it runs well on extremely low-end hardware, it will take advantage of high-end hardware as well.

There are always going to be the enthusiasts, the ­edge people in the PC market; that's one of the cool things. Consoles are our stamps in time, but PCs are always going to be moving out to the edge with cutting-edge technology and development, because there's always an option to upgrade.

You end up getting certain games that fuel that -- games like Myst and Quake were almost ultimatums to PC gamers, strongly promoting CD-ROM drives and graphics accelerators, respectively.

Orion: That's a good point. It's true, and we are seeing it over and over again. PCs want to be like consoles, for the ease of testing and targeting one piece of hardware. Consoles want to be like PCs, for the ease of the development. You see that back-and-forth nature, one pushing the other.

Development is one of the things I really like about working in the PC area now. There are more tools; nothing is hidden and you can access everything.

And anyone who's getting into the game industry, whether it's a high school or college student, or whoever, you're always going to dip your toes in the PC waters. You're not going to be able to afford a console development kit or anything like that.

Does multi-threading present a challenge for that segment of developers who are starting out? Does it make it tougher enter the industry?

Orion: Yeah. It has been an issue. When I talk at conferences, like GDC, I often like to present a simple overview of threading to get people more familiar with it.

Colleges are finally providing courses on threading , and Intel is trying to help by having their internal software college provide academic resources, so schools can teach students about multi-threading, supporting multi-core, and in the future, many-core. If you look at anyone's roadmap hardware-wise, it's about getting more and more cores; it's not going away.

What are some basic principles or approaches you tend to advocate when it comes to the basics of threading?

Orion: Well, I've talked about threading, and I've given presentations about high-end ways of doing some interactions with threading across multiple systems, and at the end of one presentation a guy came up and said, "Oh, man! That was really cool. So, what's a thread?" I'm like, "Oh, wow!"

[laughter]

Then it dawned on me: "Okay, some people just need this to be explained very clearly." Multi-threading, multi-core, just means you can do multiple things at the same time. You can process high-end physics, you can process graphics, all at the same time -- like having multiple brains.

You can look at multi-core two ways. You can look at the aspect of functional decomposition, which in the game space means, "Okay, I'm going to run physics on this core. I'm going to run graphics on this core. I'm going to run animation on this core, and do them all at the same time." That concept is really clear and obvious to people.

The other way is to look at data decomposition. Instead of taking physics, for example, and pushing it all into one core, or trying to keep it all in one nice little package, you can break the problem down and spread it across multiple cores.

So you can say, "Out of 500 rigid bodies to work on with five cores, let's put 100 objects on each core and get them done five times as fast." Thinking that way allows you to scale well, because then you can say, "If I have a dual-core machine, I'll do 250 on each. If I have a five-core machine, I'll do 100 on each. If I have a ten-core machine, I can do 50 on each."

If instead you lock physics to only one core, as more and more cores are added, you won't be able to use the resources efficiently. But if you integrate it from the start and clearly define it, the problem will be easier to tackle.

Are there some common development misconceptions you see with multi-threading?

Orion: Definitely. When someone tackles multi-threading for the first time, especially in a game, they'll often ask, "So, what's taking a long time? Rendering. I'm going to put that on a separate thread. Okay, I'm multi-threaded."

But again, this doesn't load balance. You'll start getting lopsided results: If rendering's running on a core and taking a long time, your other one will finish its work and just sit around.

So instead of pushing rendering to one core, you need to start thinking about how to fundamentally break the problem apart, spreading it across cores, so you can render on not just one, but N cores.

This is a common issue, especially with game companies that have lots of money invested in massive engines that they've been working on for many years. Going back and adding threading into them can be a real challenge.

However, if you think about it from the start, it's not that bad because you can lay out all the interactions and how the data's going to play together nicely. It's when you have to go back and try to push and force it that you start running into problems. This is a lot of what people in my group spend time doing -- helping companies try to take on that challenge.

Can you mention any of the teams you've worked with?

Orion: Intel has worked on a lot of titles. If you go to any of the conferences or conventions with Intel there, you'll see us showing off games that we did, like Pandemic's Mercenaries 2 or Gas Powered Games' Supreme Commander. We're interested in helping out any big name title. And there's an entire support group for some of the smaller and indie games. I can't talk specifically about them, but I'm working on and supporting some really cool ones right now.

That's one thing I really like about working at Intel. At Insomniac I worked on only one title -- you arrive in the morning, check your bug list, and work on that -- and it got to be a grind. Here, I have x number of titles I'm working on. I can do some things over here or do some things over there. It's a variety of work, and it's more exciting.

You gave a talk recently where you said threading is easier than networking. What did you mean?

Orion: Yeah, that's the one I delivered at Austin GDC. At Insomniac I mostly worked on multiplayer networking code, and when I came to Intel, I began working on multi-threading. Actually, I found similarities between the two.

With networking, you're talking about multiple machines, each communicating and doing work, all of them working at the same time and sharing information. With multi-threading, it's kind of the same thing. You have a bunch of cores working at the same time and sharing data, and all working on tasks. However, instead of having to talk over the scary interwebs where information can get dropped, multi-threading works in a much more reliable way, because the work is distributed across multiple cores. Debugging is much easier because you don't need two machines with a connection between them to catch some of the possible hard deadlocks or race conditions.

Even better, you can use multi-threading when you're processing incoming network data by distributing the data across multiple cores. You'll get through the work faster and update your frame quicker, which will decrease the processing time and lower the latency.

Where is this all going with Larrabee?

Orion: To get a good idea of the hardware possibilities, I always encourage people to read the Larrabee paper that was released for SIGGRAPH. But it's really just talking about many-core devices.

When we say that Intel is going to continue to bring out processors with more and more cores, we are just talking numbers. The same principles are being used whether designing for two, four, or eight cores. It's just going to make threading and multi-threading more prevalent, really. Everyone, whether it's Intel, AMD, or someone else -- is pushing for more and more. This is just going to be another accelerated step.

What trends or upcoming developments in visual computing or multi-threading are you looking forward to?

Orion: Many really cool technologies are currently being worked on and receiving attention. That's one of the great things. When you're on a PC, you are talking cutting edge. At Intel, you're talking about yet-to-be released hardware. It's awesome to work with some of this stuff.

With visual computing, coming up with HD content has been a challenge. Many people are spending lots of their development dollars just trying to get their minds wrapped around this, which is why you are seeing an era where middleware is becoming king. People are looking for ways to decrease their costs, so they can spend more time and money on this massive task of cramming HD content through the pipeline.

Many companies, especially in the visual computing space, are trying to make it easier for game developers. In the next couple of years you'll see lots of ideas to make the HD world easier. HD will become second nature, and the industry will start worrying about other high-fidelity things, like high-fidelity physics, AI, or animation.

So we are gradually moving toward a period of more innovation, in which the industry will really shine with the latest and greatest hardware, and people will do kick-ass things with it. And let me tell you, there are some people working on some really kick-ass things. [laughter]

Are there any particular areas you think will benefit from this more than others? You always hear developers saying things like, "We're going to try putting AI on this thread and physics on this thread," but do certain areas stand to gain more?

Orion: Because of its visual power, most of the leading edge for games is being put into 3-D graphics. You will start seeing some really cool technologies in which people are trying things like ray tracing and other forms of rendering where before the horsepower to support them didn't exist. You will start hearing things like, "What do the CG movies do? How do they make their 3-D images look so good? What can we do to borrow more of that technology and put it into our games to make them look more impressive?"

And beyond graphics lie physics and applied physics. Those are just massive calculations -- you are talking tons and tons of math that makes my head spin. The more processing power, the more physics you can get. And physics can drive animation and collision, which is used for AI, and all sorts of things, whether it is cloth simulation or destruction of buildings. The things you can model with physics in high-level configurations -- well, we are just beginning to scratch that surface.

Have you worked with the Havok group?

Orion: Mostly Havok is still maintained as an independent company. Intel acquired them, but they're still doing their own thing. They are supporting all the platforms. A couple of projects I have been working on use the Havok middleware. It helps to have good contact points for when something goes wrong. They are doing some really awesome stuff. But just like everyone else in the industry, I have to look at their press releases to figure out what they are working on.

Any final thoughts?

Orion: Well, what really drew me to Intel was its work on cutting-edge technologies -- and some of the things that the industry in general is doing are just going to be awesome.

Over the last couple of years, some studios just haven't been able to survive the transition to HD. Then when sales began to tighten up everyone said, "Okay, here's my middleware, here's what's proven. Let's minimize the risk of HD content. We're going to put all of our dollars into digital content creation." One of the reasons I wanted to come to Intel was because that innovation is coming back with enough power to push this content properly. Developers can spend less time trying to optimize for their content and really start innovating around the content.

Exciting times.

Orion: Yeah, it's one of the things that gets me out of bed every day.

Read more about:

Features
Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like