Parallel programming challenges

Multicore CPUs are mainstream nowadays. The number of CPU cores is quickly increasing. Getting the most from multicore processors is becoming an increasingly difficult task for programmers. Just adding more CPU cores will not make existing software to run faster. To get most out of the multicore CPUs you need to write your software in such way that it performs many tasks in parallel in different CPU cores. In this way you get the power from all CPU cores. The class of applications for which parallel processing is useful is growing rapidly.

Most computing intensive problems that a user will encounter at home are easily parallelizable, i.e. video encoding, gaming, photoshop filters, webbrowsing and so on. There exist whole classes of software that have been doing parallel execution, be it through threads, processes or messaging, for decades. Look at any high performance server software, look at apache, or database software.

You can read often how parallel programming is very complicated for programmers. Parallel programming can be simple and straightforward or very complicated depending what you are planning to do. Parallelism typically falls into two buckets: Data parallel and functional parallel. The first challenge is identifying what is what. The second challenge is synchronizing parallelism in as bug free way as possible while retaining the performance advantage of the parallelism.

Doing fine-grained parallelism will take long time to become mainstream because it is too abstract for most. Changing industry tool-chains to something entirely new takes many many years.

Short term solution for parallel programming problems will come in threaded/parallel frameworks that used with traditional programming languages.

The parallel programming support on popular programming languages is not up to date. C and C++ provide no assistance in keeping track of locks needed in parallel programs syncronization. In Java, the problem was at least thought about, but “synchronized” didn’t work out as well as expected.

Some programmers might even go on many years thinking that parallelism is an operating system feature, not a language issue. At the OS level, in most operating systems, the message passing primitives suck. What you usually want is a subroutine call; what the OS usually gives you is an I/O operation.

Does parallel processing require new languages? blog posting will give you some more information related to parallel programming.

7 Comments

  1. Mary Pingtown says:

    It was extremely interesting for me to read that blog. Thanks for it. I like such topics and everything that is connected to them. I definitely want to read more on this site soon. By the way, rather nice design this site has, but how about changing it from time to time?

    Mary Pingtown
    paper towel holder

    Reply
  2. Matthew C. Kriner says:

    I found your site via yahoo thanks for the post. I will bookmark it for future reference. Thanks Webmaster Community

    Reply
  3. Lawerence Degrass says:

    wow, awesome blog article.Really looking forward to read more. Will read on…

    Reply
  4. female comp says:

    Really nice post to track it at least as for me. The only question I have, why haven’t you you add that article to social bookmarking sites? That may bring big traffic to this article.

    Reply
  5. Theresia Gosda says:

    This post is usefull.

    Reply
  6. flirt fans says:

    “I will bookmark your blog and keep checking for new details about once a week”

    Reply
  7. online reputation management services says:

    Very descriptive blog, I loved that a lot.
    Will there be a part 2?

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

*

*