Site Archive (Complete)
Java Blog: Parallel Processing for the Masses
Java
SWAINE'S CAFE

Black. No Sugar. Extra Caffeine.

by Mike Swaine
ERIC BRUNO'S BLOG

Java: The Daily Grind.

by Eric Bruno
March 05, 2007

Parallel Processing for the Masses

It wasn’t too long ago that multi-CPU computers were called servers and resided in data centers.

With the advent of multi-core computing, however, a growing number of everyday people are now paying bills, blogging, surfing the web, managing their digital pictures, and more, with what is essentially a multi-CPU desktop computer. This has experts asking the question, “Do people really need the power of multiple CPUs in their home computer?”

The answer is yes, for the same reason people have needed more than 640K in their home computers for the past 15 years. The real question we should be asking ourselves is how are we going to best take advantage of this power? This presents a real challenge as writing code to truly take advantage of more than one CPU is far more complex than one might think. There is an entire branch of computer science that studies this problem, called parallel computing.

Parallel computing can be more involved than simply creating java.lang.Threads in your Java application; that only helps with applications that perform multiple, individual, tasks simultaneously, such as web and application servers. For other applications, you need to figure out ways to break up the execution of a single task into pieces that can be executed in parallel, and then combined, where the result is an overall speedup in task processing. Debugging these applications can be a chore, also.

I’m sure, as you’re reading this, you can think of ways to accomplish this for the current application you’re developing. But doing this for every task in every piece of code you develop from this point onward can be very time-consuming. Never mind the issues around tuning based upon the actual number of cores that exist in the computers you deploy to. As with any programming problem, you need to spend less time on environment issues, and more time solving business problems.

There are companies with toolkits and frameworks to help you solve parallel computing problems. Pervasive Software’s soon to be released product, DataRush, is an example of a new product that aims to help developers tackle parallel programming challenges. DataRush goes through the trouble of breaking programming tasks into pieces that can be executed in parallel and then combined, so that you don’t have to. It then dynamically adjusts the application’s behavior according to the CPU cores and resources available on the target machine.

Sun’s CEO, Jonathon Schwartz, recently wrote an excellent blog entry about Sun’s efforts with parallel computing. He also does a good job of explaining how revolutionary multi-core computing is in general (it’s probably more revolutionary than many experts even realize right now). Instead of looking at it as a multi-threaded application, parallel processing problem, he looks at ways it can save space, power, and resources in the data center. With more computing power (namely, more CPU cores) in a single server, you can add the power of virtualization to run more than one OS, almost natively, on a single server. In fact, Sun has launched Project Neptune, which marries the parallelism of multi-core, and that of the OS, with the network.

What happens when the combined concepts of parallel processing and virtualization move out of the server, and into network devices, storage devices, and other areas of computing? Will your parallel programming skills and toolset be up to the challenge? Learn about the evolving new technologies in this area today, such as Project Neptune, and Pervasive DataRush, and be ready for the continued explosion in computing power in the years to come.

-EJB

Posted by Eric Bruno at 09:15 AM  Permalink




 
INFO-LINK


Related Sites: DotNetJunkies, SD Expo, SqlJunkies