Home | Get FREE Tools | Forums Login

Tools

Eight Cores, No Waiting

Multicore, Today and Tomorrow

Multicore today is found in applications like these:

Media Encoding: DivX*, Windows* Media Encoder with Advanced Profile, and some versions of the LAME* MP3 encoder are threaded, and show very impressive scaling. It’s worth noting that in our labs we’ve seen some media encoder performance scale 80-100% when going from a four-core to an eight-core system (see The Legal Stuff for system details about the quad-core system used for comparison). This kind of scaling indicates that even with an eight-core system like the one we’re showing you here, the front-side bus (FSB) is not the bottleneck. If it were, efficient scaling like this might not be possible.

3D Rendering: 3D graphics has always been an inherently parallelizable challenge, and multicore systems can dramatically accelerate the rendering of complex 3D images. Packages like Cinema* 4D, Lightwave*, 3DSmax implemented threading, and realized considerable performance scaling on multicore systems. The open-source 3D ray-tracer POV-Ray* supports n-number of threads, and because 3D graphics is an inherently parallelizable workload, it also scales very well when more cores are present in a system.

Distributed Computing Engines: Distributed computing takes very large workloads and breaks them up into small “work-units” that are then distributed across a network of computers. Each computer works on a single work-unit at a time, and when it completes, the computer sends this work-unit back to the main server that aggregates these work units back into a larger whole. You can think of it as a kind of mosaic design where each work-unit represents a single tile. You can also see that this is a kind of multicore computing model. Some of these engines use what could be considered a “layered” multicore model where the engine puts millions of CPUs to work on different projects, and because the compute engine running on the client system is threaded, those individual computers can get their work units completed much faster if they have multicore CPUs.

One such example is the Berkeley Open Infrastructure for Network Computing (BOINC) initiative, which sees powerful scaling when run on multicore systems. The BOINC engine powers projects like Rosetta@Home, which determines 3-dimensional shapes of proteins in research that may ultimately lead to finding cures for some major human diseases. Take a look at Rosetta@Home’s leader board. As of January 10, 2007, Intel-based platforms owned the top 14 spots for performance.

BOINC also powers SETI@Home, the search for extraterrestrial intelligence. Another example is a project, called SMPOV, that enables the POV-Ray 3D renderer to do distributed rendering using networked computers. The Stanford Folding@Home engine is yet another distributed computing engine, and it endeavors to understand protein folding, misfolding, and related diseases.

Games: Here the party is just getting started. Some of your favorite games already take advantage of multicore technology, including Quake* 4, Splinter Cell* Double Agent, Call of Duty* 2, Supreme Commander* and Age of Empires* III. Much of the first-generation threading in game engines accelerates physics and artificial intelligence (AI) game code. Most game engines are written as a large serial event loop, and while physics and AI have seen the early benefit, upcoming engines like the Source* Engine (Half-Life* 2 Episode 2) Unreal* Engine 3.0 (Unreal* Tournament 2007), CryENGINE* 2 (Crysis*) will take greater advantage of multicore systems to deepen your gaming experiences.

Multicore platforms also open up possibilities, where you can have demanding background workloads in flight like video encoding, and still have a great gaming experience. MMORPG games are good candidates where you can have your game cruising along smoothly on one display, while doing a number of other tasks that show up on your other display. And all of them run smoothly.

Home Theater PC and the Digital Home: Home Theater PCs (HTPCs) are primarily video-focused systems (playback, recording, transcoding, streaming), and video encoders are already threaded and can scale performance smartly on multicore platforms. The migration toward high-definition video will increase the system demands that video tasks place upon HTPCs, and multicore is key to seamlessly handling those workloads. Mulitcore allows an HTPC to simultaneously record several TV shows, recompress others to save disk space, stream content out onto your home LAN, and let you play a game. Sound cool? Yeah, we thought so too.

Intel® Virtualization Technology (Intel® VT) will even allow you to host multiple operating systems, where each OS can be allocated either a single core, or several cores. So if you like to use several Linux distributions as well as Windows*, multicore systems mean you don’t have to choose between them. Just run them all.


Multicore, Today and Tomorrow