backtop


Print 50 comment(s) - last by surt.. on Mar 15 at 2:37 PM

Intel says parallel software is more important for many-core CPUs like "Larrabee"

Multi-core processors have been in the consumer market for several years now. However, despite having access to CPUs with two, three, four, and more cores, there are still relatively few applications available that can take advantage of multiple cores. Intel is hoping to change that and is urging developers of software to think parallel.

Intel director and chief evangelist for software development products talked about thinking parallel in a keynote speech he delivered at the SD West conference recently. James Reinders said, "One of the phrases I've used in some talks is, it's time for us as software developers to really figure out how to think parallel." He also says that the developer who doesn’t think parallel will see their career options limited.

Reinders gave the attendees eight rules for thinking parallel from a paper he published in 2007 reports ComputerWorld. The eight rules include -- Think parallel; program using abstraction; program tasks, not threads; design with the option of turning off concurrency; avoid locks when possible; use tools and libraries designed to help with concurrency; use scalable memory; and design to scale through increased workloads.

He says that after half a decade of shipping multi-core CPUs, Intel is still struggling with how to use the available cores. The chipmaker is under increasing pressure from NVIDIA who is leveraging a network of developers to program parallel applications to run on its family of GPUs. NVIDIA and Intel are embroiled in a battle to determine if the GPU or CPU will be the heart of future computer systems.

Programming for processors with 16 or 32 cores takes a different approach according to Reinders. He said, "It's very important to make sure, if at all possible, that your program can run in a single thread with concurrency off. You shouldn't design your program so it has to have parallelism. It makes it much more difficult to debug."

Reinders talked about the Intel Parallel Studio tool kit in the speech, a tool kit for developing parallel applications in C/C++, which is currently in its beta release. Reinders added, "The idea here [with] this project was to add parallelism support to [Microsoft's] Visual Studio in a big way."

Intel says that it plans to offer the parallel development kit to Linux programmers this year or early next year. The CPU Reinders is talking about when he says many-core is the Larrabee processor. Intel provided some details on Larrabee in August of 2008.

One of the key features of Larrabee is that it will be the heart of a line of discrete graphics cards, a market Intel has not participated in. Larrabee is said to contain ten of more cores inside the discrete package. If Larrabee comes to be in the form Intel talked about last year it will be competing directly against NVIDIA and ATI in the discrete graphics market.

NVIDIA is also rumored to be eyeing an entry into the x86 market as well. Larrabee will be programmable in the C/C++ languages, just as NVIDIA's GPUs are via the firms CUDA architecture.



Comments     Threshold


This article is over a month old, voting and posting comments is disabled

RE: What am I missing here?
By nn on 3/12/2009 6:37:07 AM , Rating: 2
No there are a lot of things which are naturally parallelizable, even in a office suite. Of course it might not make sense to run the GUI itself on lots of threads. Although if you have a toolkit that supports it nicely, like Apple's new event loop or using a Larabee auto parallelizing render backend even that could be quite doable.

Then if you only think two threads or a fixed number of threads
you're thinking far too small. The key is data driven parallelization (that is what he meant with "tasks" I think).

But just consider the tasks which are slow. Recently I had to wait for a very long time for OpenOffice to load a large .doc document to convert it into its internal format. File conversion is something that is inherently parallelizable: there's no reason it couldn't process each page in parallel as soon as the data comes in from the disk controller. In Reindeer's terminology each page could be a "task". There's no synchronization needed there either except for finally queueing the pages into a list.

Or what takes a long time for for me is searching strings in a large PDF (which I do often). Again strings search is something that is very easily parallelizable: no significant serial Amdahl component in there.

Instead of going through the whole document one by one partition it into N chunks (N as many as I have CPU threads) and search those in parallel and display the results in order. Sure that could waste some work because I may be only interested in the first match, but there's enough CPU power available now so why not use it?


"Let's face it, we're not changing the world. We're building a product that helps people buy more crap - and watch porn." -- Seagate CEO Bill Watkins

Related Articles
Intel Talks Details on Larrabee
August 4, 2008, 12:46 PM













botimage
Copyright 2014 DailyTech LLC. - RSS Feed | Advertise | About Us | Ethics | FAQ | Terms, Conditions & Privacy Information | Kristopher Kubicki