CPU or GPU? one or the other or both?

The transistor counts of both the CPU and GPU are escalating almost as fast as toxic assets from the sub prime mortgage meltdown.  As in every good debate there are usually 2 opposed sides to a given topic.  Political parties such as Democrats and Republicans thrive on the point versus counterpoint arguments.  This analogy certainly is applicable to the technology of semiconductors.  Gone are the days of the CPU as the center of the computer.  With the advancement of visual applications in both the commercial and entertainment sectors, graphic processing has made a claim as the center of the computer.  Today 50 years after the first silicon transistor, semiconductor advancements have exceeded industry predictions 25 years ago.  It is truly amazing that computer and graphic processor transistor counts have gone from 100s of millions and exceeded the billion of transistor ceiling!  That is one large mass of circuits that have to be designed, verified, placed, routed and timed for chip signoff.

As the industry has pretty much hit the celing on clock speed, multiple instances of cores have appeared.  However having a quad-core CPUWrath_of_the_Lich_King does not mean that your office productivity suite will run faster on your desktop as this application is single threaded.  Applications that are muti threaded will be able to take advantage of mutiple cores.  A good example is visualization hypervisor software that will run on multiple bare metal cores.  When you are managing multiple virtual machine instances many cpu threads come in handy.

It is obvious that word processing applications do not need extreme graphics processing either.  Then what does require high end graphics?  The graphics capability of the microprocessor is pretty impressive these days.  I can think of two areas: high end video games and visualization software for high end computer modeling and manipulation.  Both of these areas have a viable market as evidenced by the sales of popular gaming consoles out there such as PlayStation3 and the new consoles under development.  In the commercial sector 3D crash simulations are very cost effective for automobile manufactures when designing a safer automobile.

Ferraris and Fiat Cinquecentos both can go 50 mph (80 kph).  However not everyone has the need or monetary opportunity to purchase a Ferrari.  The same applies for CPU and/or GPUs depending on what you are trying to do.


4 thoughts on “CPU or GPU? one or the other or both?

  1. Hello,
    for the GPU, you are only talking about 3d graphics (although it can also be used for 2d graphics) and not at all about the GPGPU. It is true that not many such applications are currently available, but they are starting to come.
    Also, there is no reason for the office productivity suite to be mono-threaded. Just to give a trivial example, the spell/grammar checker could run in some other thread, the rendering (which could use the GPU) can be done in some other thread (or even process), etc.
    Now I still agree with the conclusion that CPU/GPU each have some applications where they are more suitable than the other.

  2. You might want to take a look into non-3D uses for GPUs. That ranges from media processing, video compression/decompression, audio compression but also potentially encryption, virus pattern matching, ultrasound image processing and so much more.
    The general rule of thumb is: if it is multi-core friendly, then one should look at using a GPU.

  3. Good points. High end HPC environments are starting to program GPUs for their intense number crunching ability. All that wasted polygon generation… 😉

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s