Future of 3d Graphics
zymano writes "Extremetech
has this nice article on the future of 3d graphics. The article also mentions that graphic card gpus can be used for non-traditional powerful processing like physics. A quote from the article, "GPU can be from 10 to 100 times faster than a Pentium 4 and Scientific computations such as linear algebra, Fast Fourier Transforms, and partial differential equations can benefit". My question - If these cards are getting so powerful at computations then why do we need a Intel/AMD processor at all? Just make a graphics card with more transistors and drop the traditional processor..."
... everybody would use his computer for 3D only, but I know a lot of people never do anything with 3D. And I don't think a computer for office-work benefits a lot of the GPU.
This is RiverTonic's sig.
...This is what the future releases of DirectX is supposed to address: The use of 3D renderers to render non-graphical elements and other work.
:-)
Good for the end user, but going to be a pain in the ass for software developers to take advantage of, is my guess.
alias uptime="echo '5:33pm up 22342352324 days, 6:28, 2124315623 users, load average: 2432.40, 12312.31, 123123.19'"
My question - If these cards are getting so powerful at computations then why do we need a Intel/AMD processor at all?
Because not all of us play games all the time, some people do music production, some code, some do computer graphics(non-3D), etc etc.
There are plenty of uses for a computer other than playing games.Thats not to say that having external processors to offload work from the CPU is a bad idea, its a great idea, but don't fool yourself into thinking that ditching the CPU completely is a good idea, or even feasible.
I would expect such blatant racism on Fark, but on Slashdot? Mods please ban this asshole.
Because GPUs are specialized processors. They are only good at a couple of things: moving data in a particular format around quickly, and linear algebra. It is possible to do general-purpose calculations on a GPU, but that's not what it is good at, so you'd be wasting your time.
This is akin to asking why you shouldn't go see a veterinarian when you get sick. Because veterinarians specialize in animals. Sure, they might be able to treat you, but since their training is with animals you might find their treatments don't help as much as going to see a regular doctor.
In my opinion that's just a matter of definition. If it manages the core tasks of running the machine it's a CPU - i.e. a central PU - and not just a GPU since it handles more than the graphics.
That is as soon as there is no CPU and the GPU handles its tasks it becomes a CPU by definition!
While games/etc. will become more complex you'll need more and more CPU (not GPU!) power to calculate AI, scene (not render it but dynamically create it in vector source) etc.
the minute we stop using 'traditional' Intel/AMD CPUs in favour of NVidia/ATI, we'll have to drop 'traditional' NVidia/ATI and go back to Intel/AMD ;).
Seriously though, the design we have now is a good one. A strong, general-purpose CPU augmented with a specialized GPU for high-cost operations. Depending on how high the cost is (ie: iDCT for playing DVDs) we may want to start moving the work to the specialized cpu - this has been done with ATI cards for a couple years now.
You mean like: this?
Now, that press release was about two years old, and you can bet that ATI has advanced beyond that point (though I can't provide details).
Also, while not integrating a serious 3D graphics GPU, there's no reason that this can't be done -- except one -- and the same reason that a powerful CPU isn't integrated: heat dissipation.
But, for a "media processor", it sure is sweet.
You could've hired me.
Sorry to reply to myself, but a really simple example just occured to me.
Take your 486SX without a coprocessor... you can get an FPU (coprocessor) which does floating point operations MUCH faster than you can emulate them. However, you can't just use an FPU and ditch the 486, since the FPU can't do anything but floating point ops - it can't boot MS-DOS... it can't run Windows 3.1... it can't fetch values from memory... it can't even add 1+1 precisely!
My server
Aloha!
You wrote: My question - If these cards are getting so powerful at computations then why do we need a Intel/AMD processor at all? Just make a graphics card with more transistors and drop the traditional processor...
Congratulations! You have just reinvented Ivan Sutherlands Wheel of reincarnation which is exactly about this: Normal CPU:s are enhanced with specific functions to provide acceleration for a common task, the enhancments are getting so big that farming them out into a separate chip/module seems like a good idea. The separate thingy grows in complexity as more flexilibility and programmability is needed. Finally you end up with a new CPU. And then someone says.... You get the idea.
Here is a good take on Ivan Sutherlands story. And here is Myers and Sutherlands original paper.
Read, think and learn.
Doesn't mean you can't offload it to a DSP. Also depends on what your definition of handle absolutly realistic sound is. Sure, I can do a perfectly realistic reverb on a sound source by using an impulse based reverb, which actually samples a real concert hall and reproduces it. However that is limited in power. Suppose I have a non-real location, I want to describe it all mathematically and then have multiple different sound sources, all calculated correctly. That sort of thing is much more complex and intense.
However the real point of a sound DSP is to free up more CPU for other calculations. A game with lots of 3d sounds can easily use up a non-trivial amount of CPU time, even on a P4/AthlonXP class CPU. So no, it isn't critical like a GPU, it can be handled in software, but it does help.
Just as the subject says: our current GPUs can (easily) simulate any turing machine, and thus any other CPU, and in turn run all programs you may imagine.
:-)
It is done via fragment (pixel) programs (for the arithmetic instructions) and multiple 'rendering' passes (for program control). Ask Göögle if you want to know more about this interesting subject.
Just my 2 cc.
Best regards,
Daniel
Speaking as a CFD (computational fluid dynamics) researcher who has used graphics cards for some operations, I can tell you that GPU's are very fast, but they only work on streaming data, and most scientific problems involve a lot of non-streaming processing as well. Even with a perfect graphics card, you'd still need a general-purpose CPU to control things. Also, the floating-point support in all but the latest GPU's is very, very restricted (many of the fragment units are fixed-point and limited to a few specially-chosen operations, and even the latest GPU's don't have full 32-bit IEEE floats), and the linux support is weak and buggy. Still, I think you'll see more scientific GPU usage in the future.
My question - If these cards are getting so powerful at computations then why do we need a Intel/AMD processor at all?
A development this extreme is unlikely. However, what is very real is the fact that GPUs and CPUs are at least partially competitors.
If you are doing a lot of graphics then you the best computer for your money may be with a great graphics card and a so-so CPU. The better and cheaper GPUs Nvidia can make, the smaller the demand for state of the art Pentium's.
But unless there is a revolutionary development somewhere, we will probably see computers with both kinds of processors for a good while.
Tor
At our lab we have thought a lot about that. At any point in time, there is specialized hardware that can outperform (sometimes greatly) a general CPU. It can take the form of an accessible GPU, using signal processors, or even specialized vector processing units. On the horizon we start seeing FPGA-based systems for creating specialized computing units on the fly.
We have found, however, that as long as your system is a one-off creation, or to be used in a limited number of instantiations, it typically does not pay to use the stuff. The problem really is that, good as the solutions may be, it takes quite a bit of time to get up to speed with them. It can take upwards of six months to really understand a particular signal processor well enough to really utilize it well and to reformulate your problem in a way that is suitable for implementation using your special hardware. And by that time general computers have become cheaper and faster, and (if it's not a real-time application) you could have spent those six months letting a slower machine work it out.
A good reason for specialized hardware is when you produce the system in huge quantities; the benefits of the hardware is then used to decrease manufacturing cost, rather than increase performance.
Graphics cards are an interesting special case. You really need separate hardware for it in the first place, so the step towards producing better specialized hardware is not nearly as large as when you think about operations that today are performed by the host CPU - the hardware needs to be produced anyway, so why not improve on it? Just about all other specialized hardware have been implemented within the host CPU, rather than as discrete components - we have sort-of-vector processing, math processing and so on, but they're right on the motherchip, rather than add-on cards.
Trust the Computer. The Computer is your friend.
Not true. Newer cards appear to be IEEE 'extended' (there isn't a definition of the bitsize of extended from the spec, so even Intel's 80-bit format is considered 'extended') at 128 bits wide per color channel. This is pretty much the last word in accuracy as far as I'm concerned. Perhaps numerical analysts can come up with scenarios where 128 bits aren't sufficient, but I don't want to hear about them.
For some of the stuff that we do, we would kill for a slightly faster card. Right now, for simulation of IR imagery, we have to prefly a scenario where the sensor-carrying vehicle (use your imagination) flys a trajectory and we render the imagery along this path. This rendering consists of doing convolutions of background scenes with target information to generate a final image. At the end we have a 'movie'. This can take a few hours to run.
Afterwards, we run the simulation in realtime and play frames from this movie (adjusted in rotation and scaling, etc. because real-time interactions can result in flight paths subtly different from the movie) and show it to a *real* sensor and see what happens.
The point: if we could do real time convolution inside a graphics card and then get the data back out some way (we usually need to go through some custom interface to present the data to the sensor), then a lot of pain would be saved. First, we could move the video-generating infrastructure into the real time simulation, which would be simpler, we wouldn't have to worry about rotating and scaling the result since we'd be generating exactly correct results in the fly, we wouldn't have to worry about allocating huge amounts of memory (Gigabytes) to hold the video and all the concerns about memory latency and bandwidth and problems with NUMA architectures, and finally (maybe) we could change scenarios on the fly without having to worry about whether we already had a video ready to use.
I think the computational horsepower is almost there, but right now there's no good way to get the data back out of the card. On something like an SGI you get stuff after it's gone through the DACs, which mean you now have at most 12-bits per channel (less than we want, although you can use tricks for some stuff to get up to maybe 16-bits for pure luminosity data). What would be sweet in the extreme is to get a 128-bit floating point value of each pixel in the X*Y pixel scene. So if the scene were 640x480 then we'd get about 4.5Meg of data per frame at say 60Hz then we'd get about 281Meg a second to convert and send out.
Life would be sweet. Sadly, this is a pretty special purpose application, so I'm not too hopeful. What's weird is that only NVidia (and perhaps ATI) are coming up with this horsepower because of all the world's gamers, and vendors like SGI are left with hardware that is many, many generations old (although it does have the benefit of assloads of texture memory).
In short: need 1GB of RAM on the card and a way to get stuff back out after we've done the swoopty math.
GPUs are effectively stream processors, a class of devices whose architecture and programming model make then particularly efficient for scientific calculation.
Also known as vector processors.
The more things change...
Tarsnap: Online backups for the truly paranoid
Uhm... no. On a modern GPU you can apply 8 textures in one pass. That means you can have a 1x1 luminance texture with a value of "1" in it. You bind this texture to the 8 texture units and set your environment to perform blending and your blending function with factors 1 and 1 and you have effectively 8 additions per pass. Now you only need to figure out how many passes you need (5*10^7 / 8 with 8 textures + 5*10^7 mod 8 with that number of textures).
End result: the GPU is still twice as fast as the P4.
PS: Yes, I have ignored the problem of storing the value 5*10^7 in the framebuffer (or anywhere else on the card for that matter), but that wasn't your point.
I agree that GPUs are specified devices - their incredible speed is a direct result of this, in fact.
However, to say they "only push pixels" is so far off the mark its ridiculous. This might have been true 10 years ago (and probably not even then). If you read the article, you can see there are already people using OpenGL to do some pretty intensive linear algebra on their GPUs; even ignoring this, its obvious that 3d hardware is doing a lot of work before you ever see pixels on the screen.
I hope they never become completely general purpose in the sense of traditional CPUs, but there is some incredible functionality already there for matrix transforms etc; why not use it for something other than "pushing pixels"?
> The GPU allows you to do massively parallel computations, but penalizes you heavilly for things such as loops of variable length or reading memory back from the card outside of the once-per-cycle frame update, and the price of interrupting computation is prohibitive. Clearing the graphics pipeline can take a long, long time.
> Furthermore, while there have been a few papers published claiming the orders of magnitude increase in speed in these sorts of computations, none actually demonstrate this sort of speed-up. Everyone's speculating, but when it comes to it, results are lacking.
I looked in to using the GPU for vector * matrix multiplications over my Christmas vacation (yep, a Geek), and everywhere I turned I found people saying that whatever you gained in the number crunching you lost in the latency of sending your numbers to the GPU and reading them back when done. In the end I didn't even bother running an experiment on it.
But maybe conventional wisdom was wrong; elsewhere in the talkbacks I see links to a couple of
Sheesh, evil *and* a jerk. -- Jade
I haven't seen any graphics company produce a solution where the graphics processing power is increased by adding more GPUs to it. I know that tiled rendering exists: the Kyro cards, the Dreamcast and the Naomi coin-ops all use PowerVR-based technology which scales rather nicely. So, instead of completely replacing the graphics card, one could add small GPU chips to provide additional power to the graphics. It would me more cost effective and would allow Doom III and HL 2 without too much hussle.
The same goes for CPUs. The CPU power would increase if more CPU cores could be added on the fly. There was a company called InMOS technology that produced the Transputer chips that were able to perform in a grid: each chip had 4 interconnects for connecting other Transputers to it.
Of course, there are advances in buses, memory etc that all require total upgrades.
I think that the industry has overlooked parallelism as a possible solution to computation-intensive problems. Of course, there is a class of problems that can't be solved in parallel, as one computation step is fed with the results of the previous step...but many tasks can be parallelized: graphics rendering, searching, copying, compression/decompression, etc...anything that has to do with multiple data. It's a wasted opportunity. Instead, companies go for raw power. I guess its more profitable and less technologically challenging...Introducing parallelism in the hardware would require a new bunch of programming languages and techniques to become mainstream, too.
Finally, I would like to say that if quantum computers become a reality, then we will see pretty good reality simulators inside a computer, since their speed would be tremendous, many times the speed of todays top hardware.
In all the comments, I haven't found what was the most important point in the whole article. with all this GPU horsepower, Nvidia Chief Scientist David Kirk said that "the question becomes not how many more pixels can be drawn per second, but how much better pixels can be made to look, by synthesizing them in very different ways." He added that "it's the end of graphics as we know. Many new things will soon be possible with large scale streaming processors, which will create a whole new revolution in graphics." You can read this summary of the long ExtremeTech article for more details.
Sure, in a year or two we might have completely integrated System Processing Units, say an AMD64 built into an nForce, but until then here's what we got: Cheap Speed.
Most machines now have a funky fast GPU in them, and it's not utilised most of the time. If someone like SETI@home was smart, they would write a version of their processing code that works on it. All those mathematical or chemistry processing grid type things should jump on this technology.
We're talking about 10 to 100 times paster than a P4. Hells bells, 10 to 100 times! You could plug a hella-fast Graphics card into your ratty old K6 300 PC and it'll smoke a P4 for some specific number-crunchy tasks. Any scientific project that doesn't investigate this sort of thing is nuts.
"Just make a graphics card with more transistors and drop the traditional processor..."
The standard CPU is much much faster then the GPU. The GPU like the CPU is good for certain things, but not all.
As a guess, im thinking a CPU would be better then integer calculations and floting point calculations than a GPU.
However, as mentioned the GPU is a lot better at linear algebra.
What i've been pondering latly is that, why dont computers come with a standard GPU, just like our standard CPUs?
Maybe oneday when we all have 3D inriched desktops, that'll come to light (like MacOSX)
Giving IE users a taste of their own medicine since 2005 - http://pods.-is-a-geek.net/
Am I alone, or does anyone else think game graphics have been taken far enough for the moment? It seems to me that game developers have been progressing the visuals of games far more than the content. For instance, I'd be much more interested in a game with realistic physics or deformable terrain than some new lighting engine. Gameplay is based only lightly on graphic quality as far as I'm concerned, there are so many other elements that make a game great. I would like to see them focused on!