Twilight of the GPU — an Interview With Tim Sweeney
cecom writes to share that Tim Sweeney, co-founder of Epic Games and the main brain behind the Unreal engine, recently sat down at NVIDIA's NVISION con to share his thoughts on the rise and (what he says is) the impending fall of the GPU: "...a fall that he maintains will also sound the death knell for graphics APIs like Microsoft's DirectX and the venerable, SGI-authored OpenGL. Game engine writers will, Sweeney explains, be faced with a C compiler, a blank text editor, and a stifling array of possibilities for bending a new generation of general-purpose, data-parallel hardware toward the task of putting pixels on a screen."
For once I'm reading an 'xzy is going to die' article that doesn't sound like utter rubbish. Could it be that, for once, the one stating this actually knows what he's talking about?
My last custom realtime GPU was a Geforce Ti4200. I'm now using a Mac Mini with GT950. Mind you, Blender *is* quite a bit slower on the 950, even though it runs with twice the sysclock, but I'm not really missing the old Geforce. I too think it highly plausible that the GPU and the CPU merge within the next few years.
We suffer more in our imagination than in reality. - Seneca
He talks about the impending fall of the fixed function GPU.
and it sucks hard. takes too much time.
Read radical news here
He seems to be talking nonsense.
Or do I need a GPU to calculate that?
I just browsed the article and it looks like what he's saying is that as GPU's become more like highly parallel cpu's we will begin to see API's go away in favor of writing compiled code for the GPU itself. For example, if I want to generate an explosion, I could write some native GPU code for the explosion, and let the GPU execute this program directly... rather than being limited to the API's capabilities.
So essentially, we will go back to game developers needing to make hardware specific hacks for their games... some games having better support for some cards, etc.
API's are there for a reason... lets keep em and just make them better.
Sometimes the best solution is to stop wasting time looking for an easy solution.
Multi core processing sucks tit
and it sucks hard. takes too much time.
I know, isn't that awesome...
Personally I can't wait to get my hands on one just for that reason.
Somehow I don't think there's going to be lack of a standardized API much like OpenGL or DirectX even if it's possible to write code for the GPU as easily as the CPU.
The APIs at the most basic level allow Joe and Bob to build their own system, throw whatever graphics card they can find in it and have the same game run on both systems.
As soon as you start coding for a specific GPU you're going to be treating PCs like consoles. I don't care to have to buy multiple graphics cards to play various games.
APIs are for compatibility and general purpose use. The option of flexibility is great for industry use where you're running rendering farms all running identical hardware and custom software.
Work Safe Porn
Is C the best language for parallel processing? C is designed for an iterative, single-process system. When massively parallel processors (whether general purpose or for graphics specifically) become popular, there should be a paradigm shift in the popular medium-level language. Something more along the lines of APL might be appropriate.
For the last decade or so, it seems like the rendering side was abstracted away into either DirectX or OpenGL, but if the author is correct, those abstractions are no longer going to be a requirement.
While I don't know a lot more about the various other rendering techniques that the article mentions, it seems like there might be an opportunity emerging to develop those engines and license them to the game companies.
I suspect that game companies won't want to get into the graphics rendering engine design field themselves, but there's real possibility for a whole new set of companies to emerge to compete in providing new frameworks for 3D graphics.
--
Hey code monkey... learn electronics! Powerful microcontroller kits for the digital generation.
GPUs are going to be driven by the same things that drive game consoles & set top boxes. You can copy pure software, but you can't copy dedicated chips. You can copy video rendered by a CPU but not video rendered on a dedicated chip. Dedicated chips are going to stay cheaper than CPUs for many years. Just because you can decode HDTV in software doesn't mean there still isn't huge momentum behind set top boxes and DTCP enabled GPU's.
He seems to be talking about the "twilight" of graphics API's rather than the "twilight" of GPU's.
Still a very interesting article though - I didn't know the graphics guys were also interested in more general languages for the API. I always thought CUDA was more of means to tap the general-purpose computing market without disturbing the graphics market. Seems like it is good for everybody though.
Standards based programming isn't going anywhere. That's crazy. We need Direct X, OpenGL, JMF, & MHP if only to outsource large chunks of the programming to cheaper divisions. How great it would be if everyone could base their career on hand optimizing ray tracing algorithms for SSE V, but the economy would never support it. These things have to be outsourced to select groups, firewalled behind a standard & higher paid programming done to the standard.
I have a bit of trouble with tech-speak, but I read the article as suggesting the GPU was on its way out entirely, meaning on a multi-core system one (or more) of the cores could be used to render a game's graphics while the rest of the cores do the rest of the work.
If that's correct, I wonder if this would make the PC platform attractive to gamers and programmers again? Eliminating the need for a $500 graphics card - and one of the hurdles to programmers - all of a sudden makes a cheap, but processor-powerful PC pretty attractive for gaming.
Also, it would eliminate the "runs best on" nonsense.
... ago, the man is a moron and out of touch. Now don't take that the wrong way because he's said stupid shit like this before.
He thought that GPU's would become totally integrated into the CPU 10 years ago and it was only "a few years away".
The man is missing the big piece of the puzzle: Memory bandwidth. Without memory bandwidth those amazing graphics are not possible. PC main memory cannot even begin to approach the bandwidth of a dedicated solution. Sometimes I wonder if programmers like these need a lesson about hardware design.
"why not standardization on the hardware level, instead? then, almost all code written for the hardware would be "generic" and "native"."
Because API's allow for change without throwing away the past.
I just don't get how they can be saying this at all.
Ok... so from the article we have:
Which they say is remarkably true.
HUH?
So, all these new GPUs really don't speed up your machine? So I can take my nvidia 8800 OUT of my box, leave it to an onboard graphics chipset and I'll be getting the same performance will I?
Yeah.
Right.
I don't see AT ALL how they're getting this right?
Please someone enlighten me, as I'm not seeing it from where I'm sitting.
I think he was implying that it would be rolled up for most games in their engine. So developers would pay a licensing fee for the engine which sort of defined an api for the developers to use.
Well.. maybe. Or Maybe not. But Definitely not sort of.
If we are going back to the "old" days...
Why can't we skip all this OS nonsense, and just boot the game directly?
After all that will make sure that you get the MOST out of your computer.
Who the hell is Jim Sweeny?
oh. Tim Sweeny.
Who the hell is Tim Sweeny?
See Ivan Sutherland's Wheel of Reincarnation. The idea is that CPUs get faster and graphics move there; then busses get faster and graphics moves to dedicated hardware; rinse and repeat. http://www.anvari.org/fortune/Miscellaneous_Collections/56341_cycle-of-reincarnation-coined-by-ivan-sutherland-ca.html
--- Often in error; never in doubt!
He is talking about custom rendering engines that would run on dedicated processors close to the video memory (such as on current generation GPUs). You could probably write a custom rendering engine in CUDA right now -- might not be all that great, but bandwidth would be a non-issue since it is running on the video card.
I think too many see his reference to CPU and think of CPUs running on the motherboard. Whereas he is looking at CPUs as any processor in the system, including the GPU cores running on current generation video cards.
Not sure why Tim Sweeney gets so much flack, he is the lead developer for a pretty popular 3d rendering engine...
As with so many things...this was already done in the Amiga back in the 1980's.
I disagree.
Direct hardware programming has always been the best in terms of performance. However, it is the worst in terms of compatibility. If you're programming consoles, this is just fine. If you're programming for PCs, not so much.
It will never go back to programming for specific pieces of graphical hardware. I'd say that each vendor MIGHT make a major chipset, and that those chipsets would be coded for, and everything else gets API'd, but even this is unlikely. If a company had to have two or three sets of programmers for their graphics, each team for a different major chipset, we'd see more expensive games or prettier games with crappier gameplay.
Even the OpenGL/DirectX split takes a heavy toll on programming resources for game developers.
Job? I don't have time to get a job! Who will sit around and bitch about being broke and unemployed then?
"Not sure why Tim Sweeney gets so much flack, he is the lead developer for a pretty popular 3d rendering engine..."
Just because he's a good programmer doesn't mean his statements about other things will be true, each statement must be taken individually.
Tim sweeney said 10 years or so ago the GPU would be integrated into the CPU, it hasn't happened.
Not only that the bandwidth requirements are off the charts for modern GPU computing. Sometimes I wonder if these programmers are even aware of wtf it is they are saying. I know lots of programmers who know dick all about the relationships in hardware. Tim sweeney borders on being one of those types of programmers. It's like he's so focused on development he's not seeing the forest from the tree's.
Also game engine's are many man projects, tim sweeny would be just one single dude on a team, nothing notable IMHO.
Tim Sweeny has been saying this since 1999.
"There are really countless possibilities. I think you'll see an explosion of new game types and looks and feels once rendering is freed from the old SGI rendering model. "
Hmmm. That reminds me. When are we getting rid of the Von Neumann architecture?
Shai Schticks:"You don't make peace with friends, you make peace with enemies"
...that Tim Sweeney is a god! Ever since I first saw a pic of unreal in the early 90's I've kept an eye on his career and his brilliance never ceases to amaze me.
Another quality interview with him where he demonstrates unparalleled insight into graphics. He and Carmack should combine forces and produce the definitive game engine.
Then give it to Valve and let them add their brilliant gameplay!
Anyone bought a hardware encryption processor?
Anyone bought a Dialogic voice board?
No probably not. You see eventually all hardware collapses into the CPU(s).
But the problem is that Games and Graphics are the Lamborghinis of computing. Performance uber alles. So I'm not convinced that anything short of the biggest quad core machines has the general purpose in software performance sufficient to away with these big honking graphics cards. Maybe not and smaller machines can do it but it's just as likely you buy a nanoITX daughterboard for your PS3 (or whatever the analog is to that next year) to handle all the 'other' computing requirements too.
"It seems to me that Tim puts a bit too much faith in compilers."
Itanium
Shai Schticks:"You don't make peace with friends, you make peace with enemies"
I hope that it goes back to programmer controlled rendering. I'm not a programmer by trade, but I like coming up with my own systems, and I cant tolerate the rules set in place by an API, which is why I havnt done much hobby graphics programming in a while. I predict that GPU's will die, and that we will just expand on multi core processing by automating it, so that programmers wont have to consider how many cores their application runs on, the load balancing will just be done under the hood, automatically. As a side note, why is it that source runs so well? I'm not really up to speed on it, but dosnt source use some unique method that runs it primarily off of the GPU?
Assuming this does in fact happen in the future... when will it happen?
First let's be clear that by "it" I mean the complete disappearance of the GPU market.
To answer, first ask: who will be among the last ones to be willing to part with their GPU?
I think the answer to this question is: gamers.
Which leads me to the condition of the 'when' (not the date of course).
And that condition is: when the integrated GPU/CPU is capable of performing under the JND (just noticeable difference) threshold of what the separate GPU itself could do.
In other words, once they start to output graphics which aren't discernibly different (which are so realistic that you cannot tell the difference) then at that point the separate GPU will perish because there is no longer a motive for it to continue to exist, as no human perception can tell them apart.
I do not respond to cowards. Especially anonymous ones.
What I got from the article wasn't so much the 'fall of the GPU' as a move away from the fixed APIs e.g. DirectX and OpenGL.
In which case, would this be a huge bonus for Linux ?
A lot of people say they use Linux for work but have Windows installed on the same machine so they can run games. If the games programmers are going to be writing C/C++ code that runs on the CPU or GPU, then in theory this cuts out the proprietary graphics APIs and makes the games much more portable. Could this mean that more of these games will be ported to Linux ?
Ok so you state that memory bandwidth requirements for GPUs are off the charts. Where do you propose to get more memory bandwidth than on the CPU itself? Seems to me if you want memory bandwidth there is no better place to be than on the cpu die...
Could you get around this by "compiling" the game for individual PUs?
And having it failing to run on newly released architectures? GPU instruction sets change much more often than even the Mac platform's m68k to PowerPC to x86 to x86-64.
But it could be as simple as buying a game, and on install getting a PU specific file either from disc, or for newer iterations from a download server.
Until the publisher goes out of business or just decides to discontinue porting an older game's PU specific files to newer video cards in order to encourage users to buy^W license the sequel. And then you get into microISVs that don't have the money to buy one of each make and model of video card against which to compile and test a game's PU specific files.
"Take a 1999 interview with Gamespy, for instance, in which he lays out the future timeline for the development of 3D game rendering that has turned out to be remarkably prescient in hindsight:
2006-7: CPU's become so fast and powerful that 3D hardware will be only marginally beneficial for rendering, relative to the limits of the human visual system, therefore 3D chips will likely be deemed a waste of silicon (and more expensive bus plumbing), so the world will transition back to software-driven rendering."
Nuff said.
You are very, very wrong. The history of computer hardware has been one where extra functionality is moved from the cpu for speed, folded back in a few years later for efficiency, and farmed out to an add-on card for speed some time later...
See http://catb.org/jargon/html/W/wheel-of-reincarnation.html for details.
Assuming he means Emacs, then this is the way God intended it to be.
So developers would pay a licensing fee for the engine which sort of defined an api for the developers to use.
Right now, computer graphics programming students use OpenGL. What would these students be able to afford should OpenGL become irrelevant?
You will be writing in a high level language like C++ and it will be compiled to run on the CPU/GPU
Then why aren't commercial games already distributed as C++ source code so that they can be recompiled for AMD or Intel CPUs?
So you won't need API's like OpenGL or DirectX anymore.
Then what will computer graphics programming students use to write a demo of rotating Platonic polyhedra textured with "Hello World"?
If the CPU and the GPU are one, they compete for memory access. That's why the GPU is separate, and has its own memory. Putting them together is a bizarre idea.
Anyone bought a hardware encryption processor?
Anyone bought a Dialogic voice board?
No probably not. You see eventually all hardware collapses into the CPU(s).
Modem makers took a lot of heat from Slashdot users and other fans of alternative operating systems when they tried to turn their modems into glorified sound cards by moving the modulating and demodulating to the CPU. The reason you don't hear much about winmodems in 2008 is because dial-up's market share has declined in urban areas. Compare cable modems and DSL modems, which still do their modulating and demodulating in dedicated external boxes.
So I'm not convinced that anything short of the biggest quad core machines has the general purpose in software performance sufficient to away with these big honking graphics cards.
Heck, the PLAYSTATION 3's Cell processor has eight cores (one PowerPC and seven DSPs), and it still relies on the NVIDIA RSX GPU to draw triangles.
"Ok so you state that memory bandwidth requirements for GPUs are off the charts. Where do you propose to get more memory bandwidth than on the CPU itself? Seems to me if you want memory bandwidth there is no better place to be than on the cpu die..."
Again you're missing the point, "the jack of all trades, master of none" problem, not to mention the space requirements. GPU's complexity is nothing like the old style co-processor units that were integrated into the core. They require ridiculous amounts of cutting edge ram to get that kind of performance, and they need a lot of ram to output the results of those calculations.
I don't see CPU's integrating 512MB to 2GB of ram in the near term future given heat and die size considerations, and we haven't even touched the extremely low bandwidth between modern cpu's and main memory in PC's (which is much much less then a modern GPU).
The GPU will play it's part for as long as is necessary. I don't rule out that perhaps one day it will be technically feasable but it is nowhere near that day, it's at least a decade or more away.
We've seen this time and time again, processors go through evolutions of integrating and seperating. We went from mainframes to PC's and with the net 'back to mainframes' but notice how each device play's their role, each one didn't totally obsolete the other, they just have become more specialized at their tasks.
I didn't say they would release the source code. Only that they would write directly to the CPU/GPU
Then how can publishers assure users that a title still on store shelves is compatible even with a PC manufactured after the game went gold?
The same things they used before OpenGL/DirectX became prevalent. The same things they used during the DOS era.
Which took an order of magnitude longer to get going from scratch than a typical GLUT or AllegroGL app. Because developer time is still valuable, software rendering won't make the OpenGL API go away, even if only because of OpenGL in software.
If it weren't, linux gaming wouldn't be in the situation that it is.
DirectX is better established, better run, and better performing.(Some of this is because Microsoft didn't upgrade versions of OpenGL for a long time, but a lot of it is the fact that the OpenGL folks, like most standards bodies, spend so much time deciding on anything whatsoever that they get left in the dust).
If what this guy is suggesting becomes the case, rather than forcing every little guy out of the market, it might break the back of DirectX(which given that it's established, well known, and at the moment actually superior) which might mean more portable games, which would of course be good for Linux, Apple and everyone else.
I think one thing is clear... the man owns a lot of Intel stock.
Mod me down, my New Earth Global Warmingist friends!
If they're not curling their toes and mimicking a seizure, you're doing it wrong, or she's got some issues.
http://www.goaskalice.columbia.edu/2524.html
Developers will use [future coprocessor cards] just like they use CPU's at the moment.
Which means they'll have to both be x86, or both be ARM, or both be some other architecture that NV and ATI can agree on. goodluckwiththat.
I think you missed the words "graphics programming students" in the parent post.
They use OpenGL, whether or not it is better or worse than DirectX.
I want to hear what John Carmack thinks about this.
Does he agree/disagree and why?
I always like seeing two giants in the industry debate on high level topics. It gives some insight into trends... and I just plain dig gaming anyway...
Most people aren't thought about after they're gone. "I wonder where Rob got the plutonium" is better than most get.
What Tim Sweeney predicted back in the 90-s was that by 2006-7 CPU's would overpower GPU-s. It's the end of 2008, and we're at least 5 years away from CPU-s catching up with the future GPU hardware, and at least 10 years away from standards and engines emerging on mainstream hardware, which will challenge DirectX+OpenGL.
Now he's at it again, and I could understand him, as we often get caught predicting what we want to happen, for what we think will happen. General purpose vector computing power is far better and more interesting for a game engine developer, but he doesn't take any of the remaining economics into account.
For a new piece of technology to be picked up by most people, it has to provide substantial improvement over the current status-quo in some area that matters, while providing good DirectX/OpenGL drivers that people can run (at that point) over two decades of CAD/games/rendering software that uses those technologies.
Not to mention that those CPU-s with general purpose instruction sets, should somehow match the efficiency, cost and performance of GPU-s with fixed pipelines and limited instruction sets. Not a trivial task by any means.
Don't forget where the current growth is: smart phones, ultra mobile laptops, and laptops. Those devices tend to use far more dedicated hardware than desktops, because it's far more efficient (for ex. video/audio playback on smart phones is hardware accelerated).
Every other graphics blog talks about Larrabee like it's going to take your baby away. It won't. It will suck, just like every other Intel graphics chip. The problem isn't that Intel can't make fast chips, it's that they don't have the graphics experience to come close to ATI and NVidia.
Intel is good at cheap, "good enough" graphics for office machines - the freebie that does the bare minimum, which satisfies 95% of all users out there. That's where they should stay. It's a good market for them, an excellent candidate for chipset/CPU integration, and an area the other players don't put too much focus on. Yeah, you can get NVidia/ATI graphics onboard, and they're decent, but it's not their bread and butter.
If anything, I fully expect the GPU to become more important over time, but it would be nice to have 100% complete software fallback, allowing any game or app to run on any hardware. You might get a slideshow with onboard video, but it should still be allowed to run. None of this DirectX hardware versioning - it defeats the point of having a middleware API in the first place! It would also let developers code whatever effects they want, allowing hardware to accelerate them if present, while still being every bit as stunning on software emulation - just slower!
It would mean an end to "DirectX 10 effects", which I think is a damned good thing! If anything, DX10 has shown us its tricks are nothing special, all of them feasible with DX9 primitives, just a little more of them. That sort of artificial feature bloat would be a thing of the past with the adoption of a general-purpose graphics programming language.
-Billco, Fnarg.com
My understanding is that the majority of games are already building off of an existing engine, rather than the raw api frameworks. I would guess that computer graphics programming students would actually program in the native language, learning how to implement efficient graphics algorithms. Really creating a simple ( albeit insufficient) software 3d graphics engine isn't that difficult.
Well.. maybe. Or Maybe not. But Definitely not sort of.
Maybe if game writers have to write directly for the GPU then suppliers will have to open up their hardware specs for their graphics cards. This would be a victory for free software.
My machine language course in University was MIPS/RISC, and while a few more systems are using that now, it was pretty irrelevant then.
So long as the general approach to rendering doesn't change it won't matter all that much, and there will always be a cheap, but largely inadequate and irrelevant system for students to work with.
How long has audio been around? Have you ever seen an audio chip integrated into the CPU? Most of them are done by onboard chips, not on the CPU.
I don't mean to nitpick, but I don't think that is it at all. But I am not a rendering programmer, so you'll have to forgive me if I'm wrong.
Deferred rendering has nothing to do with the order of primitives, but rather, pushing back the more expensive calculations to the point where you can do them in a single pass on the entire screen at once, instead of on every pixel of every fragment you draw. If I draw TERRAIN and CRATE onto the screen in a forward renderer, I will draw the entire TERRAIN, and pay the cost the Lighting BRDF on every pixel in it (Assuming I am not doing fancy Z-testing chicanery). I then draw the crate, and pay the cost of lighting every pixel of the crate. It works out to something like For-Models( For-Lights ). Someone with a CS degree can put that into Big-O notation I'm sure. With a deferred renderer, I draw the depths and normals to a giant screen space G-Buffer, then when everything is done, draw the lights using this data. This way, I will never call the lighting equation for a given light on one pixel twice. This is something like For-Models + For-Lights.
That said, you are right about a wave of optimizations for G-Buffers. Drawing all those fullscreen quads is fill-rate heavy, and faster memory access, and more memory (those G-Buffers are HUGE) helps a lot. Similarly, better use of Z-Testing is making standard Forward Renderers behave a lot more like deferred renderers.
I wasn't trying to be pedantic, just hoping to add a little knowledge to the pot.
Just one example: You use OpenGL so that you a) do not need to implement basic graphics functionality yourself and b) that you have a portable interface to the graphics system. Same for DirectX.
This guy has no clue at all or has been paid off.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Intel is going to push the GPU into the CPU in their next Core i7 archtecture. The problem is that Intel makes the worst GPUs on the planet and I don't want their graphics on my computers.
They are the problem of the PC industry. They make awesome CPU chips but their graphics are hurting the PC industry and they are focused on putting the graphics inside of the CPU so that it will be cheaper and run much hotter. No thanks.
nt.
Tim sweeney said 10 years or so ago the GPU would be integrated into the CPU, it hasn't happened.
Isn't Intel working on integrating the GPU and CPU? Hence, the monthly statements by Nvidia that they are not afraid of Intel. With the development of multi core CPU it is now possible to economically integrate the GPU into the CPU. I expect in about 2 years we will see the first multi core CPU with an integrated GPU from Intel. This would make Sweeney prediction about 10 years early. I guess he is a futurist.
In other news...
A man whose company makes its money writing game engines says, "APIs are going to go away. It's going to be very, very hard to build a game engine in the future when you can't rely on the APIs anymore. So everyone'll have to switch to the few companies that build game engines instead. Like mine. I recommend you start now and save yourself the headache."
Hmm, I detect no bias whatsoever.
Well, almost as little as when nVidia tells the world that they have seen the future and it's in GPGPUs replacing CPUs. Amazing how everyone has seen the future, it supports their business model and the rest of us can save ourselves a lot of pain if we jump on what pays them well.
Call me stupid, but from what I saw from Larrabee it centers around a new specialized very wide vector unit to do most of the work. So far for a any plain old C compiler
It's not uncommon for lower-end graphics cards to use ordinary DDR2 (the GeForce 9500 GT has a DDR2 version), and you can get some surprisingly powerful GPUs integrated into a motherboard chipset, which don't have the 100W+ coolers a cpu or dedicated cards can (there's an integrated GeForce 8300 in an AM2+ motherboard).
I wouldn't be at all surprised to see the lower end GPUs being embedded in the CPU instead of the chipset.
It's also interesting to note that the guy being interviewed is in the business of making 3D engines.
Now ask the question: would 3D engine makers perhaps have something to gain if OpenGL and DirectX would be scrapped, as the interview suggests?
Most game dev labs wouldn't have the resources to build their own engines from the scratch using a C++ compiler, making them to - wait for it - licence a 3D engine like the one this guy is selling.
So in summary, the article paints a picture from the future which would be very beneficial to interviewee, so I'd take it with a grain of salt. Either we'd get some de facto 3D engines replacing OpenGL and DirectX, or the game developers will waste time recreating each new graphics technology advancement into their own engines.
http://codeandlife.com
"I wouldn't be at all surprised to see the lower end GPUs being embedded in the CPU instead of the chipset."
You're still ignoring the memory bandwidth issue, the bandwidth to main memory is still at least 10x worse then on card DDR2 with wide memory interface. Integrated on CPU means that the memory that will be used for the gpu will be main memory which is infinitely slower then on card memory, this is lost on the integrationists.
Infinitely slower? Even with the memory controller in the CPU as well (like all modern cpus), and using DDR2 (or even DDR3) ram?
What about my comparison with graphics chips integrated into motherboard chipsets? Especially the example I gave, which has to go to the CPU for memory access anyway, as for that CPU socket the CPU has the memory controller, not the motherboard chipset? That one seems to work well enough to me, and could only work BETTER by being integrated into the cpu, with access to a better power rail and being closer to the memory controller and ram.
There are other problems like the latency issues. If you have the GPU on the CPU, you still have latency to and from ram, along with other programs, not just the GPU. You have bus competition between two sets of devices in which the memory is shared between programs and the gpu itself which effectively cuts the bandwidth by a decent percentage when the program is running.
I think the point of the article is that computing paradigms are merging. You won't have a CPU and a GPU. You'll have one thing that looks like both. In other words, you'll have a multicore, parallel, vector machine. And that, absolutely, positively, will happen. Larrabee, or something like it, is the future. If you hold AMD stock, sell now, because Fusion doesn't sound anything like Larrabee and is going to seem positively draconian by the time it comes out.
In the '80s and '90s, if you wanted decent sound, you had to fork out for a dedicated soundcard. Something like the Creative AWE32 springs to mind. These days, all the sample replay, effects processing and mixing is done by the CPU and a buffer's worth of data is placed in memory waiting for a DMA transfer to a pair of DAC's.
From what I could gather from TFA, Sweeney is predicting that the processes which are currently handled by a dedicated 'Graphics Processor' will instead be executed by the main general-purpose CPU(s) and fed to a frame buffer for final display on the monitor.
Squirrel!
Couldn't the hardware remain relatively the same (i.e. dedicated fast VRAM and bus) but the programs sent to it be simple C++ programs that are parallelized with the help of the compiler?
I don't think Sweeney is that away from reality. He did not say that all the graphics will be run from the main PC bus. He said that the fixed function processors will be a thing of the past, and since they will be general purpose, there would not be a need for an API between the applications and the hardware.
Let's see what John Carmack has to say about this...
And that word processor will STILL run better than Microsoft Word!
I hold very few opinions. I hold information based on observation and fact. If you wish to disagree, please use facts.
Ah, but with a multicore chip, you can HAVE a bunch of copied dedicated chips. :) Particularly as we scale up to 16 core or 32 core chips.... Suddenly you could have the equivalent of 30 Geforce GPUs and still retain a dual core CPU for the rest of the game code.
I hold very few opinions. I hold information based on observation and fact. If you wish to disagree, please use facts.
I think a more likely scenario is an open source ray tracing or other rendering technique engine running most games and 3d applications. Of course there will be some competitors and clones, but they will eventually fade away as the GPL code improves inevitably over time being worked on by so many game companies and other 3d programmers constantly. You might even see a scenario where a single graphics engine runs 90% of 3d apps, games or otherwise! I'm extrapolating 10 years, I don't expect any of that to happen over night.
I hold very few opinions. I hold information based on observation and fact. If you wish to disagree, please use facts.
A decade away from now we will likely have massively multi core quantum chips, running at 256 bits or more. To even pretend that that kind of CPU wouldn't easily run ray tracing with 20 of it's cores tied behind it's back is pretty silly. I would shorten the time scale to 5-7 years. But I'm not profit, either, it could happen even sooner! The trend to more and larger multicore chips is pretty inevitable. When everyone's cell phone is a beowulf cluster of 128 bit x86 architecture cpus, a lot of this whole discussion is going to be completely invalid.
I hold very few opinions. I hold information based on observation and fact. If you wish to disagree, please use facts.
OK, so he was optimistic about 3-4 years. So?
I hold very few opinions. I hold information based on observation and fact. If you wish to disagree, please use facts.
Even if GPU's go away, there's no indication that libraries like OpenGL will go away. As a 3D graphics programmer who uses OpenGL and shaders, I know that no one will want to reinvent the wheel and rewrite all that low-level rasterizing, perspective correct texture mapping, and TnL code. Even when using shaders for as much as possible, you don't have to do all that by hand.
Will it be replaced by the NKVD (iN Kernel ViDeo) ?
Sweeney is right IMO. It is also one of the more important interviews and I recommend it to all that are currently doing computer graphics. This is essentially a RISC vs CISC debate again, and it shares all the common arguments with it. Given most of the industry today is a RISC design abstracted to a CISC interface, I agree with Sweeney and think that the true maturing will happen when the CPU and GPU will merge. Intels battleplan is many core approach. Specialized hardware is always faster clock for clock, but programmers appreciate generics everywhere, and since we do not pay for our GPUs per computation result they produce, an idle GPU is a waste. And it is idle half the time, being specialized as it is. Except of all the folks who play WOW 24-7.
I think the problem with this argument is that it still makes sense to break up the functionality into separate hardware. Then those that want to go hog wild with some aspect of the hardware can (like graphics). Putting all of the functionality into the CPU seems like it would lead to stagnation of technology, because only a couple of players would be able to make any real advances.
I don't understand why Sweeney thinks that the "death of the GPU" would entailthe death of all graphic APIs. By definition, an API is a programming interface that helps the programmer do certain jobs without having to code low-level stuff over and over again, right? So if graphics rendering starts being done by the CPUs instead of a dedicated GPU, how does this change the situation?
Yes, I understand that the APIs will have to be rewritten to accommodate the underlying hardware, and that some restrictions that were imposed by GPUs may go away if we use a general-purpose CPU instead...but why in the world does that mean the game programmers of the future will be confronted by nothing but a blank screen and a program editor? Don't we have APIs now for writing programs that run on CPUs? I'm pretty sure that in addition to the program editor, they'll still have graphics APIs—just newer and better ones.
In fairness, I have to say that this is a pretty short and shallow interview. Maybe Sweeney meant to say something like, "people who write game engines will have to start over from scratch, and rethink their basic tools". Maybe.
Great men are almost always bad men--Lord Acton's Corollary
"It's like he's so focused on development he's not seeing the forest from the tree's. Also game engine's are many man projects, tim sweeny would be just one single dude on a team, nothing notable IMHO." http://www.journalismcareers.com/gfx/apostropheposter.jpg
One comment dropped almost at random in the middle: "if it consumes far less power when you're running old DirectX applications".
Or if it consumes less power, period. And power is money. These guys are looking at the $600+ PC market. When they made the prediction about the death of the GPU in 2006 they were making games that took $2000 PCs to run well... and I'm sure a $2000 PC in 2006 would have been happy without a GPU. Now they're making games that take $600 PCs to run well, and those are high end. You can get a laptop for what, $400 now? You're not going to get a CPU or a GPGPU getting that kind of performance in a $200 PC or a $400 laptop for a few years, and by that time what's the low end going to be?
Again you're missing the point, "the jack of all trades, master of none" problem, not to mention the space requirements. GPU's complexity is nothing like the old style co-processor units that were integrated into the core. They require ridiculous amounts of cutting edge ram to get that kind of performance, and they need a lot of ram to output the results of those calculations.
I don't see CPU's integrating 512MB to 2GB of ram in the near term future given heat and die size considerations, and we haven't even touched the extremely low bandwidth between modern cpu's and main memory in PC's (which is much much less then a modern GPU).
The GPU will play it's part for as long as is necessary. I don't rule out that perhaps one day it will be technically feasable but it is nowhere near that day, it's at least a decade or more away.
Don't forget, integrating different functions onto one chip is much easier said than done. Putting RAM on a CPU die isn't that easy, and doesn't work that well, because the process technologies used between them are different. A lot of people think you can just put all kinds of different circuits on a single die (logic, memory, analog, etc.), and that just isn't the case. It can be done, but there's huge tradeoffs involved.
So what if the kinds of things that OpenGL and DirectX have implemented can now be done "efficiently enough" in high level code instead of dedicated hardware (albeit by making the whole system more expensive and power hungry... and that matters), that doesn't mean there isn't room for dedicated hardware, it just means the dedicated hardware needs to be doing something more sophisticated.
The raytracing acceleration in Slusallek's RPU was able to get 2008 CPU performance out of a low density FPGA implementation in 2005... with about the same hardware budget as a late '90s Rage II GPU, using an API called OpenRT - Open Ray Tracing.
Don't forget, integrating different functions onto one chip is much easier said than done. Putting RAM on a CPU die isn't that easy, and doesn't work that well, because the process technologies used between them are different. A lot of people think you can just put all kinds of different circuits on a single die (logic, memory, analog, etc.), and that just isn't the case. It can be done, but there's huge tradeoffs involved.
Thanks for the heads up. Everybody thinks it's as easy as shrinking the die, and circuits = same everywhere.
The thing they are not understanding is the architecture and actual structural geometry. Things are made of stuff, which has to be shaped properly, then the data has to circulate and be stored somewhere within a given period of time, and routed around, etc, etc.
The graphics controller on the xbox is separate from the cpus. The whole point of the article is merging the cpu and gpu onto one chip, requiring memory access to go over the same lines.
It is not the architecture referenced in the article, where GPU commands are integrated with the CPU commands. Please examine the specs from Microsoft:
There is a dedicated GPU, with a memory controller on-die. The CPU cores are on a separate die, and contain a separate instruction set. The CPU's memory access is tightly linked with the GPU so that the CPU can send geometry data to the GPU with no delays.
If anything, this represents a third architecture, more different from that discussed in the article than it is from a PC shared-memory architecture (except in the PC, the north bridge mediates the memory access, instead of the GPU.)
My point is entirely that if you merge the CPU and GPU command set into the same core, you will slow the system down. The XBOX360 gets speed from linking the CPU's geometry data send to the GPU's memory access, in essence allowing it to get a free pre-fetch. That's not what the article is about.