Storage Informer
Storage Informer

Coding Scalable or Parallel Applications – It Is Not As Hard You Think

by on Jul.08, 2009, under Storage

Coding Scalable or Parallel Applications – It Is Not As Hard You Think

The need to write scalable applications has been important for programmers in the HPC community for years. Now, with the proliferation of multi/many-core processors or the availability of graphics adapters or data parallel accelerators with many ALU’s, developing scalable software is now a top priority for many programmers.

Andrew S. Tanenbaum stated at the USENIX ’08 conference last year that developing “sequential programming is really hard” … the difficulty is “parallel programming is a step beyond that.” 

I am not sure I completely agree with Andrew. 

Here is the point – parallel architectures will continue proliferate.  We will need to develop and refine parallel algorithms that exploit parallelism – now I think that is hard (e.g. developing and refining parallel algorithms). However, the actual programming of these new algorithms, while difficult, does not need to be hard.  What is grueling is having to know the intimate details of the hardware you are programming to – it is not just difficult, it is really challenging and more importantly it is very time consuming.

An approach at Intel with our tools is to abstract you away from having to know all the gory details of the hardware. Unfortunately, I have been around HPC for too many years and what is true is that software applications will always out distance any available hardware architecture.

I contend you need to have the flexibility to rapidly test your parallelization ideas and you need the versatility to adopt your application to new and evolving forms of a parallel hardware architectures as they become available in the market.  Locking yourself into a unique architecture with proprietary tools and languages may not be the best long-term idea for your application. 

Yes you will give up some performance by being abstracted away from the hardware.  However, what you lose in performance will be rewarded by your ability to quickly filter through more iterations of your parallelization ideas in less time.  You may actually find yourself designing and developing better approaches to parallelism because you were able to test more hypotheses. 

An additional by product of being abstracted away from having to know the intricacies of the hardware is your software will now be highly adaptable.  You will also see tremendous improvements on multi-core solutions and will be in a great position to potentially scale your application performance forward newer architectures are made available.

To learn more about Intel Software Tools and the benefits of optimizing your software on multi-core based solutions first visit


:, , , , , , , , ,

Leave a Reply

Powered by WP Hashcash

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...