Slashdot Mirror


Choice Overload In Parallel Programming

scott3778 writes to recommend a post by Timothy Mattson over at Intel's Research Blog. He argues, convincingly, that the most important paper for programming language designers to read today is one written by two social psychology professors in 2000. This is the well-known academic study, "When Choice is Demotivating: Can One Desire too Much of a Good Thing?" "And then we show them the parallel programming environments they can work with: MPI, OpenMP, Ct, HPF, TBB, Erlang, Shmemm, Portals, ZPL, BSP, CHARM++, Cilk, Co-array Fortran, PVM, Pthreads, windows threads, Tstreams, GA, Java, UPC, Titanium, Parlog, NESL,Split-C... and the list goes on and on. If we aren't careful, the result could very well be a 'choice overload' experience with software vendors running away in frustration."

288 comments

  1. Fortran by confused+one · · Score: 3, Funny

    Because I'm sick (in the head) I say we go with the Fortran option!

    'twas my second language; after BASIC. Ahhh, the fond memories...

    1. Re:Fortran by AuMatar · · Score: 2, Funny

      Dear god, the mind damage from Fortran don't just effect your logic skills, they effect your language centers as well! You can't even remember the difference between "fond" and "hell on earth".

      --
      I still have more fans than freaks. WTF is wrong with you people?
    2. Re:Fortran by Anonymous Coward · · Score: 4, Insightful

      Uh, most good parallel programming frameworks are cross-language. MPI has APIs in C, Fortran, and C++ (I believe) ... so does OpenMP. Also, most supercomputing programs are either written in C or Fortran. So, YES!, choose Fortran (and MPI) for all of your supercomputing needs. Or write it in C. Or write subroutines/functions in both languages and compile away (the newest version of Fortran will be fully C-compatible).

      The main differences between these parallel programming frameworks are ... the actual implementation of parallel programming! Is it distributed (MPI) or shared (OpenMP)? Does it have elegant syntax for accessing variables across processors (Co-Array) or just function based? Because there is no one true way to write a parallel program (it really depends on the algorithm), there will always be multiple frameworks to choose from. O well! The people who write parallel programs are typically smart enough to deal with excessive choices. (No comment on others).

    3. Re:Fortran by noidentity · · Score: 0, Offtopic

      "Dear god, the mind damage from Fortran don't just effect your logic skills, they effect your language centers as well! You can't even remember the difference between "fond" and "hell on earth"."

      You keep using that word. I do not think it means what you think it means.

      effect vs. affect

    4. Re:Fortran by AuMatar · · Score: 0, Troll

      I know what it means. I use the opposite words on purpose- to piss off grammar nazis.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    5. Re:Fortran by geminidomino · · Score: 1

      Read the whole post.

      "...effects your langauge centers as well!"

      That's just more evidence. Just say no to Fortran!

    6. Re:Fortran by try_anything · · Score: 3, Insightful

      Because there is no one true way to write a parallel program (it really depends on the algorithm), there will always be multiple frameworks to choose from. O well! The people who write parallel programs are typically smart enough to deal with excessive choices. (No comment on others).

      You're right; there's nothing more tragic than watching a programmer butcher his well-written program in a futile attempt to make it fit the only concurrency model he knows. Closely associating a language with a single, well-designed concurrency framework would at best do the same thing for it that Rails did for Ruby: bring it a flurry of popularity in the short run and damage its reputation in the long run as people doggedly apply the framework to unsuitable problems and blame the language for the results.

      On the other hand, at some point we're all supposed to face up to the end of the free lunch, and a fad for an exotic kind of concurrency might be a clumsy, spasmodic step in the right direction.
    7. Re:Fortran by Decado · · Score: 1

      You heard the man, lets all stop innovating and developing because there are too many choices already.

      --

      Slashdot: Proof that a million monkeys at a million typewriters can create a masterpiece

    8. Re:Fortran by TeknoHog · · Score: 3, Interesting

      I say we go with Fortran, because it supports array programming natively without any of this bolt-on stuff like OpenMP.

      --
      Escher was the first MC and Giger invented the HR department.
    9. Re:Fortran by Anonymous Coward · · Score: 1, Funny

      Oh, thanks for the confidence. In the fremtid I'll remember to only bruge words from my modersmål when I'm uncertain how a particular word should be stavet.

    10. Re:Fortran by TheDreadSlashdotterD · · Score: 1

      It doesn't help your argument when you're talking about language skills.

      --
      I have nothing to say.
    11. Re:Fortran by owlstead · · Score: 1

      Many languages have constructs for allowing multi-threaded operations (such as Java, which I use myself). I don't think that cross-language frameworks are the way to go, since they cross-language framework might not fit every language well. Maybe you could use them for some languages that are devoid from multi-threaded constructs. The (ok, rather extensive) Java API has pretty good support for parallel programming so I would not easily go for a different API. Furthermore, some languages are much more efficient when they use a certain construct than others, so choosing the same construct for each language might hinder performance.

      Of course, the actual constructs used to solve a problem may be rather much the same.

  2. Hmm by Prune · · Score: 1

    What's wrong with OpenMP?

    --
    "Politicians and diapers must be changed often, and for the same reason."
    1. Re:Hmm by confused+one · · Score: 1
      Actually (from the blog author's bio):

      Among his many roles at Intel, he was applications manager for the ASCI teraFLOPS project, helped create OpenMP, founded the Open Cluster Group... You might notice, he helped create OpenMP.
    2. Re:Hmm by Frumious+Wombat · · Score: 3, Interesting

      It's designed for shared memory boxes. This is great if you own an E25K, not so great if you've chained together a couple thousand itaniums.

      --
      the more accurate the calculations became, the more the concepts tended to vanish into thin air. R. S. Mulliken
    3. Re:Hmm by Bill,+Shooter+of+Bul · · Score: 3, Insightful

      The other choices are whats wrong with Open MP. The market needs to shake out the pretenders, before more people will make the correct choices. Thats the basic idea of this story.

      Having said that, I'm praying for Fortran 95 to take over. Its the only Malt Liquor I drink.

      --
      Well.. maybe. Or Maybe not. But Definitely not sort of.
    4. Re:Hmm by n+dot+l · · Score: 2, Informative

      It's useless in cases where you don't have shared memory (though, really, most "general-purpose" solutions are going to be useless in this case).

      It's implementation is, essentialy, compiler magic. This automatically rules it out in a lot of cases where you need precise control of what your code is doing. If, for example, you need logic to spin for a few cycles while a DMA operation completes (so as to not interrupt/stall something else - and yes, people do actually optimize to that level on some platforms) you can't really add that to OMP unless your compiler vendor is willing to make the change for you. With a library based solution you can grab the code and hack your little change into the scheduler without relying on third parties who may or may not be willing to accomodate you.

      That said, it's certianly not useless. I mean, it's damn amazing when it comes to quickly hacking some parallelism into a loop that wasn't really designed with multi-threading in mind.

    5. Re:Hmm by gronofer · · Score: 1

      Here's a list from Wikipedia.

      • Currently only runs efficiently in shared-memory multiprocessor platforms
      • Requires a compiler that supports OpenMP.
      • Scalability is limited by memory architecture.
      • Reliable error handling is missing.
      • Lack fine-grain mechanisms to control thread-processor mapping.
      • Synchronization between a subset of threads is not allowed.
    6. Re:Hmm by Anonymous Coward · · Score: 0

      Does HTML,XML, batch, and Bash shell scritping count? The reason I ask is that these are all that I know( and I don't do them well either,LOL). Well, do they?

    7. Re:Hmm by jimmydevice · · Score: 1

      Didn't he manage the Siemens/Intel IXP432 mainframe on a chip project back in the 80's? This can only end well.

    8. Re:Hmm by kramulous · · Score: 1

      But will the 'pretenders' be shaken out? An who makes the apparently correct choice? It is not really 'the people' that choose the implementation; it's the architecture of processor; machine architecture; connection between processors/nodes/bricks/blades; operating system; and compiler. The next step is to determine what is actually being implemented in parallel and the extent of that parallelism. Given the job, some jump out at me more than others. Admittedly, I know some better than others.

      Market determining 'who wins' actually scares me. Should I be glad that Microsoft beat everyone in the market? What does that say for the future?

      C/C++/Java/Bash; they're my poisons depending on the weather. It gets hot and cold here.

      --
      .
    9. Re:Hmm by Bill,+Shooter+of+Bul · · Score: 1

      In the sense that Microsoft's OS victory was one that was not tied to a specific hardware vendor, yes you should be glad. If Apple had been as successful, we'd be tied to them for hardware as well as software and there would be a higher barrier to market entry for competing OSes.

      But in this case we are talking about highly competent people choosing the right technology for there situation. I have confidence.

      --
      Well.. maybe. Or Maybe not. But Definitely not sort of.
  3. link to the paper by skywire · · Score: 5, Informative
    --
    Those who would give up essential liberty to purchase a little temporary safety, deserve neither liberty nor safety.
    1. Re:link to the paper by SurturZ · · Score: 3, Interesting

      Someone told me once there was a study where people also are more likely to choose something out of a group if it is clearly superior to another item in the group.

      I found this true for myself once, I was looking to buy a DVD and had the usual overload of choices. I noticed that there was a copy of "LXG movie only" for $30, but also a copy of "LXG with special features" for $20. This triggered me buying the LXG with special features. In hindsight, it was the fact that I "knew" I was getting a "bargain" that tipped me over the edge. No doubt it was a deliberate marketing ploy.

      A bit sexist to say this, but women seem to be especially targetted by "discount marketing" of this sort. Mainly with shoes :-)

    2. Re:link to the paper by Anonymous Coward · · Score: 0

      A bit sexist to say this, but women seem to be especially targetted by "discount marketing" of this sort. Mainly with shoes :-)

      I've too have noticed that if I have better shoes than the other men in a group, women tend to go home with me. Never thought of it as "discount marketing" though.

    3. Re:link to the paper by tehcyder · · Score: 1

      Someone told me once there was a study where people also are more likely to choose something out of a group if it is clearly superior to another item in the group.
      What, as opposed to being clearly inferior to another item? Am I missing something, or isn't this obvious? In your DVD example, you were going to buy a DVD anyway, it's not like the sneaky marketing made you buy two or anything.
      --
      To have a right to do a thing is not at all the same as to be right in doing it
    4. Re:link to the paper by Anonymous Coward · · Score: 0

      In hindsight, it was the fact that I "knew" I was getting a "bargain" that tipped me over the edge. No doubt it was a deliberate marketing ploy.

      Marketing ploy indeed. The best trick to beat a competitor when entering a market:
      1) Make the exact same product as the competitor, but sell it at a higher price, let's say 15% higher (What! you say?)
      2) Make another exact same copy, but with cheap plastic "golden buttons" and call it "Deluxe"; sell it double the price than the competitors product.
      3) Profit!

      The vast majority will think the 15% model must have 'something' better than the cheapo medol, and is still a good deal compared to the Deluxe model. In bonus you also sell a few deluxe model to snobish people at an outrageous profit margin. The competitor is now a low-level product for the poor.

    5. Re:link to the paper by gad_zuki! · · Score: 1

      A bit sexist to say this, but women seem to be especially targetted by "discount marketing" of this sort. Mainly with shoes

      Yeah and theyre terrible drivers too? AMIRITE? *crickets*

      I would say dudes fall for this more. Theres no shortage of "deal hunters" who see the paid-for Dell ads on a deal site and buy a laptop thinking they got some great deal, when theyre pretty much paying Dell's everyday prices. Heck, this "deal" means they bought a dell isntead of an HP, so even if there's a loss on the margins a little, it sure beats zero.

      Even then you have deal sites just doing the wishes of marketing. Many "clearance" items arent clearance at all, theyre just over-priced to begin with. Every brick and mortar electronics store is always having sales. Your grocery store gives you "discount" when you use a purchase tracking card. The incredible scam that is the cell phone industry works in a similiar way.

      Sorry, but this is unisex, if not male-dominated. Women arent usually afraid to pay full price for fashion.

    6. Re:link to the paper by ZorbaTHut · · Score: 1

      I don't believe he did indicate that he was going to buy that particular DVD, though. He thought LXG-with-special-features was a great deal, so he got it, even though without the LXG-movie-only option he may not have bought LXG at all.

      --
      Breaking Into the Industry - A development log about starting a game studio.
    7. Re:link to the paper by Anonymous Coward · · Score: 0

      Group 1 : 5 items of approximately equal quality/value.
      Group 2 : 1 item of the same quality/value as group 1, and 4 inferior items.

      Take a sample of people, and show them either group 1 or group 2. A far higher percentage of people who saw group 2 would buy the good item than people who saw group 1 would buy any item.

      This is why shops (supermarkets in particular) will always have an own-brand budget item that's of such obviously poor quality that no-one except the extremely price conscious would buy it. It's there to make you buy the more expensive products. Not to be confused with loss-leaders, although often they're the same branding (see Tesco Value in the UK. Tesco Value sliced white bread 7p per loaf is a loss-leader, Tesco Value "Citrus" [a bag containing small roughly spherical objects of varying shades of greeny-yellow] makes you buy the branded Jaffa oranges).

  4. Don't worry.... by Anonymous Coward · · Score: 5, Funny

    Microsoft will come along and tell you what your choice will be.

    1. Re:Don't worry.... by tomhudson · · Score: 5, Insightful
      > "Microsoft will come along and tell you what your choice will be."

      And they'll change it every three years, so as to make more money off of certifications, software sales, and save money by not having to fix bugs in that "old, obsolete" stuff that was so "shiney new" stuff so recently.

      If Microsoft wants to tell me what to do, they'd better be ready to sign a check with 6 figures to the left of the decimal point ...

    2. Re:Don't worry.... by confused+one · · Score: 1

      And they'll change it every three years, Damn, isn't that the truth.
    3. Re:Don't worry.... by deftcoder · · Score: 1

      they'd better be ready to sign a check with 6 figures to the left of the decimal point ...
      If it were Intel writing the check, they wouldn't lose too much money here.

      Fortunately, the RIGHT of the decimal point is nowhere near as important as the LEFT. :P
      --
      Peace sells, but who's buying?
    4. Re:Don't worry.... by Jarjarthejedi · · Score: 1

      *Hands tomhudson a check for 000001.00 from Microsoft*

      You are hereby instructed to use Basic, and only Basic, for all of your code.

      --
      There are two kinds of fool One says 'This is old therefore good' Another says 'This is new therefore better'- Dean Ing
    5. Re:Don't worry.... by confused+one · · Score: 1

      Dave, is that you?

      Unfortunately, that sounds like where I work... Even though I can make a (very good) case that it's NOT the best language to use for our application

    6. Re:Don't worry.... by Anonymous Coward · · Score: 0

      The good news is they'll sign you that check.

      The bad news is they have to run it through Excel first.

    7. Re:Don't worry.... by Tim+C · · Score: 2, Insightful

      What would you rather they do, stick with version 1.0 for the rest of time, never incorporating new features?

      You have to strike a balance - change stuff too fast and people avoid it as its unstable. Change things too slowly and people avoid it as it doesn't provide a required or desired feature that some competing product provides.

      To be honest, depending on what exactly it is, three years doesn't sound unreasonable. It's not like anyone's forcing you to get certified either - I don't know about your country or company, but we barely even look at a person's certs when deciding whether or not to hire them, experience is far preferable.

    8. Re:Don't worry.... by weicco · · Score: 1

      And they'll change it every three years

      So? I have VB code from 1993 which still runs properly. All the new code is written in C# and guess what? Everything runs side-by-side nicely on the same machine. Difference between 1993 and 2007 code is that old code is about 100000 lines longer which means more bugs and more testing. It's not that you need to rewrite everything every three year.

      --
      You don't know what you don't know.
    9. Re:Don't worry.... by Anonymous Coward · · Score: 0

      If Microsoft wants to tell me what to do, they'd better be ready to sign a check with 6 figures to the left of the decimal point ...


      Microsoft responds: "Updates... ...in progress... Long Tyme...bitch"

    10. Re:Don't worry.... by gbjbaanb · · Score: 1

      Difference between 1993 and 2007 code is that old code ... uses 10000 times more RAM and still performs slower than the old stuff did on a 10Mhz CPU! :-0

    11. Re:Don't worry.... by Alioth · · Score: 1

      Ah, $100000. In Zimbabwe dollars. (You might have enough there to buy half a loaf of bread)

    12. Re:Don't worry.... by CarpetShark · · Score: 1

      If Microsoft wants to tell me what to do, they'd better be ready to sign a check with 6 figures to the left of the decimal point ...


      Well done. That's really standing up for the right choices.
    13. Re:Don't worry.... by tomhudson · · Score: 2, Funny

      Hand in your geek card. Leading zeros are not significant, unless you're filming "Tora Tora Tora!"

    14. Re:Don't worry.... by tomhudson · · Score: 1

      You and I know that certs are a joke, but obviously there are enough people who believe otherwise that its a key part of Microsoft's lock-in strategy. Get people on the cert treadmill, and they have a vested interest in making it look like certs mean something ...

      There's no question that products should be improved, but there's a big difference between improving an existing product, and abandoning an existing, working product that you've gotten some of the major bugs fixed, for the next load of crapware/Vista.

      There was absolutely no need for either C# or .NET - they're both just there to attempt lock-in. The same goes for Silverlight.

    15. Re:Don't worry.... by tomhudson · · Score: 1

      > "Ah, $100000. In Zimbabwe dollars. (You might have enough there to buy half a loaf of bread)"

      Not legal tender where I am. Canadian dollars or Euros, please (and for the next little while, I'll accept US dollars at par to the loonie :-)

    16. Re:Don't worry.... by GeckoX · · Score: 1

      But C# and .NET are very viable for windows development. If that's what you're developing, it's the right tool for the job and WAY better than what was there before. .NET is much less of a lock in than VB was. C#/VB.Net is way easier than MFC or coding to the windows api via c/c++. And Mono actually works very well to get you out of the MS lock-in.

      Right tool for the job, and there are a LOT of windows dev jobs. Remember: It's a job, not a moral crusade. (If it is in fact a moral crusade for you or others...I'd suggest diverting your efforts towards something that actually matters ;)

      --
      No Comment.
    17. Re:Don't worry.... by GeckoX · · Score: 1

      That's great and all, except it's just not true.

      You have always been able to write good code or bad code, that hasn't changed. It's just gotten easier to write good code, or bad code ;)

      --
      No Comment.
    18. Re:Don't worry.... by tomhudson · · Score: 1

      16 years ago, a headhunter called me saying they had a client who was looking for c programmers. I said fine, as long as its not Microsoft. She asked why, and I told her I had heard enough stories about "management by screaming" at Microsoft. They've since "graduated" to throwing things. If I wanted to be around that sort of behaviour, I'd get a job in a daycare or kindergarten.

    19. Re:Don't worry.... by tomhudson · · Score: 1

      A little history lesson.

      C# was Microsofts' attempt to get people off java, because java is a threat to their platform monopoly. Dodn't work.

      When that didn't work, and LAMP made real headway in the server room, they announced there would be no IE7, disbanded the IE team, and said that everything would be .NET. They wanted to pull people away from browser-based apps, again because browser-based apps are a threat to their monopoly. That didn't work either. They had to reconstitute the IE dev team and come out with IE7 ... they also had to add tabbed browsing, because that was the #1 reason people were switching to firefox.

      Mono? Isn't that a disease? It certainly made my linux box sick until I "cured" it.

    20. Re:Don't worry.... by GeckoX · · Score: 1

      I know the history very well thank you, and that is a very creative and pessimistic take on a number of all but unrelated issues. .Net was indeed created partly to compete with Java, and that it does.

      IE had nothing to do with .NET. MS dropped the ball after getting complacent with their browser market share dominance with IE6. They thought it'd be 'the' browser for a good long time. Turns out they were wrong and had to scramble to stay in the game, which they did. Do you really think MS was naive enough to think they could replace what most people see as the internet (a browser) with a framework? IE was still to be the delivery mechanism regardless, so your argument there doesn't hold water.

      Mono! A disease! Haha! So funny I forgot to laugh.

      MS is way more open than they ever were in the past. Sure they do what they can to retain developers and extend their userbase...but it's a corporation. Shall we shit on Ford because they'd like to see everyone driving one of their cars?

      Never said everyone should move to .NET. Never said it was the best or anything like that. Merely stated that it's a very good tool for the job of doing windows development, and it has some added benefits that code you write CAN be run elsewhere thanks to projects like Mono. So thanks for shitting on all of that for no good reason :)

      --
      No Comment.
    21. Re:Don't worry.... by Anonymous Coward · · Score: 0

      They can only guarantee you 5 figures, somewhere in the mid-60k range, but I hear if you can work wonders with Office 2007 in the payroll department.

    22. Re:Don't worry.... by Hyram+Graff · · Score: 1

      If Microsoft wants to tell me what to do, they'd better be ready to sign a check with 6 figures to the left of the decimal point ... Microsoft would be very happy to sign that check. They'll be signing it on the back side while they take it to the bank.
      --
      0*0
      00*
      ***
    23. Re:Don't worry.... by tepples · · Score: 1

      we barely even look at a person's certs when deciding whether or not to hire them, experience is far preferable. Where do you recommend that people who just graduated find employment? Are they supposed to gain years of experience in fast food or retail before considering your company?
    24. Re:Don't worry.... by pablodiazgutierrez · · Score: 1
      You are hereby instructed to use Basic, and only Basic, for all of your code.

      And edlin as your default and only editor.

    25. Re:Don't worry.... by tomhudson · · Score: 2, Insightful

      You're re-writing history. Microsoft proposed .NET so that they could get people off of web-based applications. THAT is why they stopped developing IE after version 6. Talk to people who were in the financial industry, and you'll see the massive push they made to try to get everyone to switch from web apps to .NET apps.

      > "Shall we shit on Ford because they'd like to see everyone driving one of their cars?"

      We don't have to - their cars are shitty enough already :-)

      As for Mono, and Microsoft "shared-source" and other licensing in general, this guy is repeating what I said 3-4 years ago http://www.linux-watch.com/news/NS3695984068.html

  5. overload my ass by ILuvRamen · · Score: 0

    I don't remember reading anywhere that you have to pick all of them. Just go through the list like "ignore, ignore, ignore, aha I know that one" and pick one that you like or are good at and use that one. Then you ignore the rest and I just don't see where the overload happens. Maybe, possibly if a company is dumb enough to let every programmer just do whatever and nobody can read and understands each others' code and nothing works together cuz they all chose something different then yeah, overload time but that's just idiotic.

    --
    Google's Super Secret Search Algorithm: SELECT @search_results FROM internet WHERE @search_results = 'good'
    1. Re:overload my ass by ThirdPrize · · Score: 1

      So, which one should be taught in college? Now justify your choice over ALL the others. It's not really a question of which one do you like and use, its a question of which ones should be taught in the future and possibly become the de facto way of doing things.

      --
      I have excellent Karma and I am not afraid to Troll it.
    2. Re:overload my ass by gbjbaanb · · Score: 1

      none of them should be a defacto choice by virtue of being taught at university. Teach kids the concepts, use specialised languages that demonstrate what it is trying to achieve and how it is doing it. Don't ever try to teach kids so they come out with a book full of cut&paste examples of how to program. The moment they hit real work, they'll flounder otherwise.

      I was taught Concurrent Euclid for my threading classes. It taught me what was going on, and I can apply that knowledge to whatever language I have to use at my job, or whatever language I decide to use in the future.

  6. Why pick just one? by Anonymous Coward · · Score: 4, Funny

    Write concurrently in two languages, then you're sure to make full use of available CPU cores.

  7. It's drivel by Harmonious+Botch · · Score: 3, Insightful

    This whole idea of 'choice overload' is so much drivel, IMHO. And, no, I'm not trying to flame here.

    Have you ever known anybody to say: "There are just too many girls to choose from, I guess I'll go hide in the basement."?
    Or: "There are ten thousand restaurants in this city. I just can't cope. I'm going to stop eating."?

    A better label for the whole subject would be: " How a small minority of people fail to learn tree-pruning techniques, and dissolve in panic." Then we all could say: "Yep, sounds like my ex-girlfriend. Been there, done that. Next?"

    1. Re:It's drivel by shaka · · Score: 1, Funny

      Have you ever known anybody to say: "There are just too many girls to choose from, I guess I'll go hide in the basement."?
      Or: "There are ten thousand restaurants in this city. I just can't cope. I'm going to stop eating."?

      A better label for the whole subject would be: " How a small minority of people fail to learn tree-pruning techniques, and dissolve in panic." Then we all could say: "Yep, sounds like my ex-girlfriend. Been there, done that. Next?"

      Girls to choose from?! Ex-girlfriend?!?!! Last night just called, it wants your dream back!
      --
      :wq!
    2. Re:It's drivel by nycguy · · Score: 5, Insightful

      Actually, both of your analogies are poor. The problem with "choice overload" in the software context is that with so many platforms to choose from, no one platform builds the critical mass to be useful for a broad range of problems, and developers are almost certain to build systems and components that do not interoperate because they are built in separate frameworks. In software, there's a benefit to having everyone chose the same platform to build on.

      On the other hand, I don't know about the benefit of everyone chosing the same girl or the same restaurant, though--unless you like gang-bangs, long lines, etc.

    3. Re:It's drivel by Hemogoblin · · Score: 1

      How about choice overload for the restaurants? If there are thousands, some are going out of business? I'm sure this analogy is leading somewhere...

    4. Re:It's drivel by Harmonious+Botch · · Score: 1

      I don't recall mentioning software. Did I mention software anyplace? If I had, then they might be poor analogies.

      What I said was: "This whole idea of 'choice overload' is..." I was writing about the concept, not the particulars of the concept as applied to software.

      I'll agree with you that there are problems in making the choice about software, but they are concensus issues, not overload issues.

    5. Re:It's drivel by quarrelinastraw · · Score: 1

      It's not that much drivel, but it is subject to contexts. For example, it probably only applies to choices made among a choice set simultaneously, not to choices made sequentially. Deciding among 3 restaurants is probably easier than deciding among 40, even if there are hundreds of restaurants you're not considering. People doing parallel programming probably benefit from somebody making the initial choice for them or at least narrowing it down. Otherwise the more options you have to compare on a number of features the harder the problem becomes. In addition, there is psychological evidence that people with more choices tend to be less happy than people with fewer choices.

    6. Re:It's drivel by Otter · · Score: 2, Insightful
      Have you ever known anybody to say...

      That people don't consciously think something, let alone admit to thinking something, doesn't mean their behavior isn't driven by it.

    7. Re:It's drivel by Salamander · · Score: 1

      Well put. Just because there are many alternatives doesn't mean we should stop trying new things. Somehow, though, it's not surprising that someone at Intel would be pushing for earlier standardization. They're a player in this space, and I'm sure they'd like to tie everyone to their chosen flavor before the market heats up even more.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    8. Re:It's drivel by Lisandro · · Score: 2, Funny

      This whole idea of 'choice overload' is so much drivel, IMHO. And, no, I'm not trying to flame here.

      Ditto. You think too many choices of programming languages is a bad thing? Let's have two. And let one be Perl, that should be fun to watch.

      (Yes, i do like Perl :)

    9. Re:It's drivel by Anonymous Coward · · Score: 0

      Restaurant example: flawed because there is no significant penalty for choosing wrong.

      Girl example: flawed because lots of guys really do either go through a string of women, or even if monogamous, refrain from marriage because of a nagging suspicion that there might be a better choice out there.

      So you have one example that's pointless and another that's wrong.

      Would you like to try again?

    10. Re:It's drivel by thetorpedodog · · Score: 1

      Except it's not a small majority of people. A bit of quick searching reveals a slide presentation about this very subject which references the study and has lots of great links. It looks like a well-documented phenomenon to me.

      --
      This sig is certified free of self-referential humour!
    11. Re:It's drivel by symbolset · · Score: 1

      At a store by my home you can choose from 17 different options to buy water, not counting the hose for filling your radiator and three kinds of ice. The only omitted choice is water that costs less than gasoline. Choice is not inherently bad so I agree with you.

      --
      Help stamp out iliturcy.
    12. Re:It's drivel by ljw1004 · · Score: 2, Insightful

      Well, yes, humans do suffer psychologically if there's too much choice. As the number of girls to choose from increases, we get only marginal increase in happiness from the choice we've made, but we get progressively larger increase in unhappiness from regrets and second-guessing and worrying that our choice was sub-optimal.

      There's a good summary of the research in the article "The Tyranny of Choice" by Barry Schwartz, Scientific American, April 2004, pp. 70--75.

    13. Re:It's drivel by Frequency+Domain · · Score: 1

      There's more to the concept of choice overload than you may think. I found this talk to be quite interesting.

    14. Re:It's drivel by Harmonious+Botch · · Score: 1

      Ex-girlfriend was a nightmare. It can have her back.

    15. Re:It's drivel by QuantumG · · Score: 1

      lots of guys really do either go through a string of women, or even if monogamous, refrain from marriage because of a nagging suspicion that there might be a better choice out there. And we call those guys losers, laugh at them and move on.

      Perfect is the enemy of good enough. - Voltaire.
      --
      How we know is more important than what we know.
    16. Re:It's drivel by Alphax.au · · Score: 2, Informative

      This whole idea of 'choice overload' is so much drivel, IMHO. And, no, I'm not trying to flame here.
      I saw an episode of Catalyst where they interviewed the people who wrote that paper, and gave a demonstration at a supermarket using jars of jam: people threw up their hands and said that there were too many to choose from. The results are definitely not bogus.
    17. Re:It's drivel by CaptDeuce · · Score: 1

      This whole idea of 'choice overload' is so much drivel, ... Have you ever known anybody to say: "There are just too many girls to choose from, I guess I'll go hide in the basement."?

      So that's why I like living in the basement.

      --
      "Where's my other sock?" - A. Einstein
    18. Re:It's drivel by Frogbert · · Score: 1

      Logically thinking thats how you'd hope people would act, but you would be wrong.

      When someone is presented with a large number of options, with no real objective way to quantify the difference between them, people often choose to go without rather then risk making the "wrong" choice.

      Imagine going in to buy a dishwasher, assuming you don't trust what the salesman says and you have no ideas about what makes a good dishwasher, you are pretty much SOL when it comes to being able to tell the difference between what is a good one and what isn't. So what do you do? A lot of people decide to put off the purchase, even if they really do need a dishwasher.

      I'm reasonably sure I read some research about this phenomena somewhere. Therefore I've pretty much proven that I am correct.

      Please someone correct me if I'm wrong.

    19. Re:It's drivel by ScrappyLaptop · · Score: 1

      So that's why we are driven to choose only one; once you are locked into a platform (language, mate, restaurant) *and only then*, can it begin to fullful it's potential to maximize your happiness! No, really; it's not until you commit and focus deeply on that one platform that you learn not only the basic functionality (keywords / favorite romantic phrases / items on the menu) but the minute details to the point of being able to hack said platform into doing things no one else has thought of yet (I'll let your imagination do the work on this one)...

    20. Re:It's drivel by heinousjay · · Score: 1

      Ah, so then you just veered off-topic to rant about something. Good show.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    21. Re:It's drivel by mgblst · · Score: 1

      Yes, how insightful of you. In some areas choice overload is not a problem. The problem is that it is a problem in a lot of areas. You see this in the fact that some restaurants are found everywhere, no matter the fact that they serve the worst food. (McDonalds, Burger King, etc...) This is because people don't always like lots of choices, not because they are superior in anyway.

    22. Re:It's drivel by mgblst · · Score: 1

      Who the fuck needs a dishwasher? And even worse, who REALLY needs one.

    23. Re:It's drivel by bar-agent · · Score: 1

      This whole idea of 'choice overload' is so much drivel, IMHO.

      How can you say that? Of course choice overload is real! Saying otherwise is like saying the sky is green -- wrong on the face of it!

      Have you ever known anybody to say: "There are just too many girls to choose from, I guess I'll go hide in the basement."?

      Haven't you known anyone who's said "I like them both, I don't know which one to pick?"

      Or: "There are ten thousand restaurants in this city. I just can't cope. I'm going to stop eating."?
      What about "What do you feel like? Mexican, Chinese? ...I dunno. Let's just stay in and order pizza."

      Both those are examples of choice paralysis. Choice paralysis is just another way of saying indecision when there are several options and one isn't clearly better than all the rest.

      It is a real and known issue. Have you studied human factor or user interface design at all? Why do you think they recommend against long menus and lists?

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    24. Re:It's drivel by Anonymous Coward · · Score: 0

      >> Have you ever known anybody to say: "There are just too many girls to choose from, I guess I'll go hide in the basement."?

      You're not a regular on slashdot are you?

    25. Re:It's drivel by Anonymous Coward · · Score: 0

      On the other hand, I don't know about the benefit of everyone chosing the same girl or the same restaurant, though--unless you like gang-bangs, long lines, etc.

      Getting a +5 Insightful moderation for a post about gang-bangs is - like the subject says - Drivel.

    26. Re:It's drivel by pla · · Score: 1

      The problem with "choice overload" in the software context is that with so many platforms to choose from, no one platform builds the critical mass to be useful for a broad range of problems

      In this context, you don't really need "critical mass" or even "interoperability" (yet). You just need to pick a platform you like and work with it.

      I would also point out that at least two entries on the FP list (MPI and HPF) most definitely have "critical mass", in the sense that if you look at any arbitrary parallel processing project, you can lay good odds it will use one of those.

      The bigger problem here involves the skill involved in doing parallel code. As with my past rants against unnecessary multithreading, the same (and a few more) applies to parallelization - It takes both skill and brains, rather than just letting the app wizard set everthing up for you and you just fill-in-the-hooks. Any hack (in the derogatory sense) can write cute little VB or Java snippets. Only "real" programmers can pull off the careful planning it takes to distribute a load across several physically distinct execution contexts.

    27. Re:It's drivel by Anonymous Coward · · Score: 0

      You think too many choices of programming languages is a bad thing? Let's have two. And let one be Perl, that should be fun to watch.
      And the other will be LISP.
    28. Re:It's drivel by Anonymous Coward · · Score: 0

      "There are ten thousand restaurants in this city. I just can't cope. I'm going to stop eating."?

      I don't think your analogies are accurate. The point is that the expanded number of choices doesn;t't really create any benefits and may in fact be detremental. There may be thousands of restuarants, but I bet there have been times when you've had difficulty deciding where you wanted to go.

    29. Re:It's drivel by Eivind+Eklund · · Score: 1

      Have you ever known anybody to say: "There are just too many girls to choose from, I guess I'll go hide in the basement."? Yes, though they're saying it with their actions. And the people that say it are many, maybe most, single men. They don't try with any particular girl, because it hasn't gone as great as they hoped so far, and they won't take the risk of trying.

      Eivind.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    30. Re:It's drivel by Anonymous+Brave+Guy · · Score: 3, Insightful

      Have you ever known anybody to say: "There are just too many girls to choose from, I guess I'll go hide in the basement."?

      Have you never heard the expression "too much love will kill you"? Never been in (or seen) a situation where someone is torn between a relationship with one person and with another, when they genuinely care for both?

      The results of such a dilemma are usually very unpleasant for the losing party, and all too often don't work out for the others either because there's that nagging doubt about whether the eventual choice was the right one. People can put off making that choice for a long time, just to avoid the sadness and doubts. And that's (usually) just with two alternatives.

      Now, clearly a choice between programming libraries isn't going to have the same kind of emotional effect on a normal person. (I'd suggest that if it does for you, then you need to reevaluate your priorities in life!) But the basic situation is still the same: analysis paralysis, where you're so afraid of making the wrong choice that you don't commit to any approach at all.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    31. Re:It's drivel by Anonymous Coward · · Score: 0

      with so many platforms to choose from, no one platform builds the critical mass to be useful

      Interestingly, that argument also favors Windows over Linux/BSD/Unix/OSX, Internet Explorer over Firefox/Opera/Safari, et cetera. The stability and critical mass that a monopoly leads to is a good thing.

    32. Re:It's drivel by NewWorldDan · · Score: 2, Funny

      No, but I have heard people say, "There are just too many girls to choose from. I'll take the easy way out and hook up with one of the ugly ones." This apparently explains the continued existance of COBOL, FORTRAN and BASIC.

    33. Re:It's drivel by I.M.O.G. · · Score: 1

      That people don't consciously think something, let alone admit to thinking something, doesn't mean their behavior isn't driven by it.

      Like getting married... You don't hear anyone saying I'm getting married in order to foster a stable environment in which to procreate, despite the fact that its the primary driver. You'll hear words like love and commitment, but those are logical rationalizations that mask the base instinct upon which the institution of marriage is built.
    34. Re:It's drivel by Anonymous Coward · · Score: 0

      " How a small minority of people fail to learn tree-pruning techniques, and dissolve in panic." Then we all could say: "Yep, sounds like my ex-girlfriend. Been there, done that. Next?"

      From the "ex" part, I can only assume that she eventually learned tree-pruning techniques, and dumped an arrogant jackass like you.

    35. Re:It's drivel by Jeremi · · Score: 1
      Have you ever known anybody to say: "There are just too many girls to choose from, I guess I'll go hide in the basement."?


      Isn't that the Slashdot motto?

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    36. Re:It's drivel by try_anything · · Score: 1

      Have you ever known anybody to say: "There are just too many girls to choose from, I guess I'll go hide in the basement."?
      Yes, though they're saying it with their actions. And the people that say it are many, maybe most, single men.
      I think an overabundances of choices accounts for lots of single apathy, but not when it comes to people sitting at home. Here's what I've seen (or guessed) about chronically dateless guys I've known (and been):
      1. They have a firm idea of what they want and ignore every woman who doesn't qualify. A surfeit of choices can make people believe that any insanely detailed fantasy will be realized sooner or later, so this one can be chalked up to choice overload.
      2. Their behavior deters women from expressing interest, and they quite sensibly decide not to press women who don't show interest.
      3. They're so inexperienced that they can't recognize interest, which has the same effect as 2.
      4. They're too proud to date the women who show interest in them.
      5. They're depressed or have other mental problems.
      The guys who have a surfeit of choices are usually out there enjoying them, maybe not by screwing everything that winks at them, but by socializing and enjoying the mutual exchange of attention.

      (OT Male geek loneliness horse race! 2 comes out of the gate early, asserting a strong lead well before puberty. 3 quickly comes galloping up to share the lead by trapping cautious, self-conscious guys who won't move without knowing and can't learn without moving. 2 falls down immediately among non-geeks but maintains its position on the geek track by afflicting younger guys who can't express confidence because they're paranoid about accidentally seeming like smug assholes. 4 holds steady behind 2 and 3, seeming to bide its time. But it's a long race! 2, 3, and 4 steadily tire as geeks escape their clutches through alcohol and other drugs. 5 is the slowest horse on the track, but he's also the only one maintaining his speed. In fact, he's accelerating! He seems to be feeding off the cumulative effects of 2, 3, and 4. At age 35, 5 makes his move and surges into the lead! It's all #5 down the back stretch! And yes, at the finish line, when everyone is old and wrinkly and it's too late to care, 5 is the only horse left on his feet. What a race, ladies and gentlemen. Let's hear it for mental illness. Um... damn, that was a downbeat horse race. Let me emphasize that even though lots and lots of geeks were harmed in the making of this race, most of them were pastured out to stud while they were still young enough to enjoy it.)

    37. Re:It's drivel by try_anything · · Score: 2, Insightful

      A better analogy is the guy who goes to college and meets a bunch of smart, sexy, fascinating women [named Haskell, Erlang, and Lisp] and then lets his parents [college loans] pressure him into marrying a dull hometown girl [named COBOL] with a dowry [a job offer] and good family connections [predictable future employment.]

  8. obligatory.... by Anonymous Coward · · Score: 1, Funny

    I, for one Welcome our new Choice Overloads....

    1. Re:obligatory.... by Anonymous Coward · · Score: 0

      Sorry, you don't have that choice. Remember they are the Choice Overlords, so they get to choose, you don't!

    2. Re:obligatory.... by RuBLed · · Score: 1

      I also welcome our Peanut Butter - Ketchup - Banana Sandwich Overlords.

      Sadly that's how some of us had to do programming...

    3. Re:obligatory.... by phagstrom · · Score: 1

      Not funny, I actually read the title as

      "Choice Overlord In Parallel Programming"

      and that sounds like some scary stuff, mind you.

    4. Re:obligatory.... by Circlotron · · Score: 1

      You insensitive clod.

    5. Re:obligatory.... by CCFreak2K · · Score: 1

      Which one?

      --
      "Beware of he who would deny you access to information, for in his heart he dreams himself your master."
  9. intel is part of the problem (sort of) by Grond · · Score: 4, Interesting

    Quoth the blogger: "With hundreds of languages and API's out there, is anyone really dumb enough to think "yet another one" will fix our parallel programming problems?"

    Yet Intel touts its Threading Building Blocks library as just such a fix to many parallel programming problems. Now, TBB is a very nice product, and in many ways it is superior to a lot of existing libraries, APIs, and languages, but one gets the sense that maybe the left hand doesn't know what the right hand is doing at Intel.

    I might also draw an analogy to the open source world, where there are often dozens of solutions to both simple/mundane problems (text editors, media players, command line shells, etc) and more complex ones (window managers, Linux distributions, etc). I wonder if the free and open source software world wouldn't also benefit from a "culling of the herd," so to speak.

    1. Re:intel is part of the problem (sort of) by Arabani · · Score: 3, Insightful

      Yet Intel touts its Threading Building Blocks library as just such a fix to many parallel programming problems. Now, TBB is a very nice product, and in many ways it is superior to a lot of existing libraries, APIs, and languages, but one gets the sense that maybe the left hand doesn't know what the right hand is doing at Intel. Do note that this is from the blog of a single developer at Intel. It's really just his own opinion of the situation, and nothing more. There's a big difference between what one guy thinks and says, and what the marketing department decides to do.
    2. Re:intel is part of the problem (sort of) by Anonymous Coward · · Score: 0

      "With hundreds of languages and API's out there, is anyone really dumb enough to think "yet another one" will fix our parallel programming problems?"

      I sure hope not, but hopefully someone might be smart enough to think "yet another one" will fix a parallel programming problem.

      Until someone invents the perfect tool for all jobs, you're going to have to settle for identifying the best tool for your job, and that's going to take legwork. If legwork scares you, then go with whatever some consultant or sales person convinces you is the best tool for your job, and shell out whatever bucks they ask when they need a few more to make it actually work right for you.

    3. Re:intel is part of the problem (sort of) by Rufus211 · · Score: 1

      Quoth the blogger: "With hundreds of languages and API's out there, is anyone really dumb enough to think "yet another one" will fix our parallel programming problems?"

      Yet Intel touts its Threading Building Blocks library as just such a fix to many parallel programming problems. Now, TBB is a very nice product, and in many ways it is superior to a lot of existing libraries, APIs, and languages, but one gets the sense that maybe the left hand doesn't know what the right hand is doing at Intel.

      Not only TBB, but they're also currently working on a NEW language called Ct that's mentioned in the blog. If "yet another one" is such a bad thing, then why is his own group working on one?

      A note from Tim's bibliography:

      I've am also actively involved with the OpenMP shared memory programming API. I've worked on all the OpenMP specifications "out there" today and I am CEO of the corporation that "owns" OpenMP (the OpenMP Architecture review Board).


      A slight conflict of interest maybe?
    4. Re:intel is part of the problem (sort of) by Fulcrum+of+Evil · · Score: 2, Funny

      It isn't a silver bullet, but if it helps, so much the better; I like having lots of bullets to choose from.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    5. Re:intel is part of the problem (sort of) by Max+Littlemore · · Score: 1

      I wonder if the free and open source software world wouldn't also benefit from a "culling of the herd," so to speak.

      I suppose we could cull the hurd but, seeing as there's never a stable version and noone uses it or really cares, what would we gain?

      Oh herd, sorry, my mistake... carry on...

      --
      I don't therefore I'm not.
    6. Re:intel is part of the problem (sort of) by mgblst · · Score: 1

      Orwell was a prophet

      Wow, what an insult to Orwell. Why do you try to tie his genius and foresight with religious overtones.

    7. Re:intel is part of the problem (sort of) by Aladrin · · Score: 1

      Because he can use a dictionary.

      http://dictionary.reference.com/browse/prophet

      5. a person regarded as, or claiming to be, an inspired teacher or leader.
      6. a person who foretells or predicts what is to come: a weather prophet; prophets of doom.
      7. a spokesperson of some doctrine, cause, or movement.

      All 3 of those apply. Of the remaining 4, 1 refers to a specific person, and the other 3 are indeed religious. Maybe I just don't go to church enough, but when someone says 'prophet' I think 'someone who predicts the future accurately' first and 'religious' a distant second.

      Of course, context helps a hell of a lot, too.

      --
      "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
    8. Re:intel is part of the problem (sort of) by thomas.galvin · · Score: 1

      ...there are often dozens of solutions to both simple/mundane problems (text editors, media players, command line shells, etc)... Text editors are mundane? Someone hasn't started NetBeans lately...
    9. Re:intel is part of the problem (sort of) by ILongForDarkness · · Score: 1

      If "yet another one" is such a bad thing, then why is his own group working on one? For a pay check?
    10. Re:intel is part of the problem (sort of) by mgblst · · Score: 1

      I see your point, but I still think the word has strong religious connotations for the majority of people. I like Orwell a lot, and have gone on to read most of his books, which were mainly concerned with the horrible conditions of people in the early years. (Down and out in London and Paris, the Clergymans Daughter, Keep the Aspidistras flying, etc...)

  10. Simple solution by Anonymous Coward · · Score: 0

    Just write each thread in a different language!

  11. The danger is real... by Anonymous Coward · · Score: 0

    If we aren't careful, the result could very well be a 'choice overload' experience with software vendors running away in frustration.

    It's true! Just look at how the large number of available programming languages is driving people away from software development. If we could only limit it to just a few options then people might not be so afraid to start programming.

    Or we could be serious for a minute and say that a useful marketing tactic is perhaps not "the most important paper for programming language designers to read today".

  12. Choice is good by Anonymous Coward · · Score: 1, Interesting

    While many of these technologies overlap, I think that each serves a niche that is important. I think it would be very difficult to design a language that is easy to use which combines the whole superset of what all of them cover. IBM is attempting to try and create a langugae that covers a lot of it with its experimental X10 languagehttp://domino.research.ibm.com/comm/research_projects.nsf/pages/x10.index.html. While it works, it can be very painful to program in. In the case of parallel and concurrent programming, I think choice is good.

  13. more choice is better... quantitatively by Karl+the+Pagan · · Score: 1

    "We (that is, computer companies) want to sell hardware. To do that, we need software."

    of course... efficiency doesn't matter, it's even sometimes detested by those selling bigger CPUs.

    Parallel programming frameworks are not an assortment of jams with a coupon. In addition to a qualitative (like / dislike) evalutaion of the code style and API there are quantitative measurements of how these frameworks handle different tasks and the results that they produce when applied to various problems.

    Now... I'm no big python user, but Stackless python is at least interesting and I would do myself a disservice by not evaluating it. I need to know why it is or isn't quantitatively better.

    The only problem that exists with too many choices in computing is supporting and not forcing the deprecation of legacy APIs (something like Java Collections Vector vs ArrayList, extensive use of String vs CharSequence, etc).

  14. good lord. by russellh · · Score: 4, Insightful

    and I say that as an atheist.

    Ok, first: he writes as if all choices are equivalent. One jam might as well be the same as another, they just differ by taste. It's not like I walk into the store already invested raspberries. It's not as if Java programmers are going to decide that the Fortran parallel library is better, so why not just switch to Fortran.

    Second, I doubt explicit parallel programming is going to be mainstream anytime soon. No, make that ever. Ever! Parallel programming will only happen in the mainstream when it is handled implicitly by the language, like a dataflow language. Asking normal programmers to deal with parallel programming is trouble when basic logic eludes most of them.

    Third, all you people, including the author of TFA, who think that more than one or two standards is bad thing ("the great thing about standards is there are so many to choose from!") it's time to wake up: the world is not about to consolidate. The future is going to require C3PO and R2D2: there will be so many fricking languages and standards that your translator is going to require AI and legs to come along with you. For every one thing that fades away, eventually, probably 10 or 100 replace it. The future is a big mess.

    --
    must... stay... awake...
    1. Re:good lord. by Anonymous Coward · · Score: 0

      it's not a mess, it's a singularity

    2. Re:good lord. by blackcoot · · Score: 1

      i disagree about the choices being equivalent. having sampled from several, but not all of those options, i can say with near certainty that the choice is not like that of choosing what flavor of jam you like. the choice is really which major surgery you'd like to undergo without benefit of anesthetic.

      on the one hand, you have things like openmp which uses special comments to give hints how to essentially vectorize code on a shared memory machine (and likely a UMA machine at that). on the other extreme, you have things like MPI which is not a language, but an API (several, actually, there are C, C++, Fortran, Java and Matlab bindings) which is designed to solve a very different problem (think SIMD v. MIMD), i.e. parallelism on a distributed memory, distributed processor machine (i.e. a cluster). it happens that MPI is general enough that vendor supplied MPI implementations may do very clever things so that when you run your MPI code on your cray or zomgsomanyprocessors! smp box your program doesn't force all the data through the loopback device. the remaining approaches are basically Qt's moc for parallel programming -- they ingest a dialect of C or Fortran and spit out C or Fortran that's been augmented with the appropriate calls to MPI, PVM, pthreads, etc.

    3. Re:good lord. by Anonymous Coward · · Score: 0

      Ah, dataflow. It's too bad LabVIEW's (http://zone.ni.com/devzone/cda/tut/p/id/6422) not a "real" language. Built in multi-core, multi-threaded compiler support, multi-platform portable... and most folks can even manage to draw two squares to make their processes parallel.

      Have fun with all that text, though.

    4. Re:good lord. by weicco · · Score: 1

      Absolutely right. Singularity and F#. Can't wait to get my hands on those.

      --
      You don't know what you don't know.
    5. Re:good lord. by CounterZer0 · · Score: 1

      It is the business of the future to be dangerous.

    6. Re:good lord. by Sloppy · · Score: 1

      all you people, including the author of TFA, who think that more than one or two standards is bad thing..

      It's not a "bad thing," from a technical viewpoint. Nobody (?) really thinks that consolidation is the right answer.

      But the point is, having "too much freedom" (!?!) does have unexpected psychological effects. I've encountered this phenomenon in a different way, and my favorite personal example is to blindside someone with the following task...

      Make up a joke. Now.

      Unless you're an experienced improv comedian, that can be hard. Too hard? Then try this task:

      Make up a joke involving a travelling salesman and a farmer and an animal.

      Whoa. That's actually easier. How did adding a constraint -- taking away your freedom of action -- make it it easier? (This is where I usually start raving about Le Ton beau de Marot...) There's something about guidance (for lack of a better word), whether it's enforced by a thematic constraint, or subtly implied by poverty in your toolkit (the old "when the only tool you have is a hammer.." proverb), that tends to get people doing stuff, instead of wondering what to do.

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  15. Choices are Good by ChaoticCoyote · · Score: 4, Insightful

    Choice is good if it provides different tools for different tasks. The list provided is somewhat silly, since several of the technologies address completely different issues and applications. There's a reason Sears sell thirty different shapes of hammers -- all nails are not the same.

    After considerable deliberation and experimentation, I've shosen OpenMP for most task-parallel applications. The syntax is simple, it operates across C, C++, and Fortran, and it is supported by most major compilers on Linux, Windows, and Sun. The only quirk has been problematic support in GCC 4.2, but that will likely be cleared up within a few months. For cluster work, I tend to use MPI, because it has a long history and good support. I'm sure other tools have good versatility in environments different from those I frequent.

    1. Re:Choices are Good by khallow · · Score: 1

      I disagree. The problem is that making a decision takes some amount of time. If just hearing the list of choices takes longer than it does to make the decision, especially if the decision is one time and the knowledge unlikely to be reused (say because it is forgotten by the time the person needs to make the decision again), then you have too many choices.

      However, here I don't see that as being a real problem. Maybe if there were millions of languages and just finding one that did the job were a pain. But I don't see that many choices for a weighty decision.

    2. Re:Choices are Good by ChaoticCoyote · · Score: 1

      The problem with this articles is that the set of choices is false and confusing. For example, MPI and Java do not really belong in the same conversation; one is a tool for distributing workloads across servers, and the other is a general purpose programming language -- two very different things.

      Choice is good. Choosing from a poorly-defined list is bad.

  16. Bullshit by n+dot+l · · Score: 4, Insightful

    They created two displays of gourmet jams. One display had 24 jars. The other had 6.

    The larger display was better at getting people's attention. But the number of choices overwhelmed them and they just walked away with out deciding to purchase a jam. Er. Sorry, in my experience programmers tackle parallel programming because it's somewhere in the requirements of their program that they do so, not because it sounds cool. It's not like multi-threading is a random fad or anything. The only way this would have been a relevant comparison is if the group of people had been pre-screened to those who definitely intend to buy a Jam of some sort.

    On top of that, if this really is something that affects programmers then why the hell aren't we all rendered utterly useless by the number of programming languages? Or all the possible ways one could format code? Etc.

    But hey, the guy's writing in a "research" blog and, as in academia, when you don't have anything real to contribute you can cite something completely unrelated and pretend it has relevance.

    Honestly, this sounds vaguely like "there's too much to choose from, so everyone just use Intel Thread Building Blocks, K? You can't possibly do better so just use our stuff because we cover all cases..."
  17. Benefits of same platform? by Anonymous Coward · · Score: 0

    On the other hand, I don't know about the benefit of everyone chosing the same girl or the same restaurant, though--unless you like gang-bangs, long lines, etc.
    Sounds like what happened with the Windows platform.
  18. Continued:Bullshit by n+dot+l · · Score: 1
    Yes, I RTFA'd. I know, he didn't dwell on TBB. Yes I saw his conclusion:

    But don't waste my time with new languages. With hundreds of languages and API's out there, is anyone really dumb enough to think "yet another one" will fix our parallel programming problems? No, I still don't agree. If people think they can do better than all the others they should damn well try, and if they do manage to do better (and don't license themselves into obscurity) then their ideas will spread and be useful to many. If he doesn't want to hear about it, fine, his loss. I for one dislike the notion of locking ourselves into turd-polishing mode.

    [And next time I won't hit submit and then reply to myself when I meant to just hit preview...I hope]
  19. No, it describes Analysis Paralysis by HaeMaker · · Score: 1

    Too many choices between languages, where in many of them the pros and cons balance and cancel for your particular application, can be deadly.

    1. Re:No, it describes Analysis Paralysis by timeOday · · Score: 4, Insightful
      Meh. This is a good example of social sciences run amok. You do some interesting little study, but then try to apply it to everything in the world. Here are some reasons why the analogy between parallel programming languages and choosing a flavor of jam (yeah, that's what the study was about) might not hold:
      • Jams are functionally equivalent; the choice is inconsequential. This is far from the case with programming languages, which have meaningful differences.
      • Programming languages solve important problems, so a choice will be made. You can't just give up on the whole idea and walk away as with specialty jams.
      • There are so many different aspects of a language, you can have a great number of them, yet they can all be very different from each other.
      • Significant resources are devoted to developing and choosing parallel languages. This greatly increases the number of choices that can be evaluated. Consider how much time you spend shopping for the right car vs. a jar of jam.
      Now would be a terrible time to stop developing parallel languages, because the problem is just now coming to the forefront with the limits of single-core performance pushing back and multi-cores taking over. I'm suspect the parallel programing paradigm of the next 40 years hasn't been invented yet, and I'm almost certain it hasn't yet been popularized. So I say, let a hundred flowers bloom.
    2. Re:No, it describes Analysis Paralysis by Anonymous Coward · · Score: 0

      Jams are functionally equivalent; the choice is inconsequential
      Boy, you got a lot to learn about jam. Bet you think biscuits come in a can too. I have to admit though, your description fits what is sold in the stores all too well. If you get a chance, listen to Jerry Clower's "My Mama Made Biscuits", those things in the store ain't biscuits. Haven't seen any real biscuits in a restaurant in years either, though a few do come close. Good jams, jellies and preserves? Maybe some people still canning, if you find the right spot and someone with a clue and they invite you to share maybe you will find out that jams are not functionally equivalent and for that matter, different kinds taste vastly different, especially if they are real jam. Unfortunately I haven't tasted any in years or met anyone with the clue and the sources for the required fruits to create that wonderful topping for biscuits and, only if your rushed or out of flour, toast. Talking about this is reminding me how much I miss eggs from chickens running free on the farm too, bright deep orange yolks and a taste far superior to what you get in the store. Throw in some home cured and smoked ham or some home made sausage and gravy and you would have a wonderful breakfast. Well, being as I am offtopic and making myself suffer, will just hit the submit button so maybe someone else who remembers can suffer with me.
    3. Re:No, it describes Analysis Paralysis by Anonymous Coward · · Score: 0

      Jams are functionally equivalent; the choice is inconsequential.
      Whoa hold it right there, buddy! You're obviously not married! Have you ever come back from groceries shopping with the wrong kind of jam? Heh, didn't think so. Because "the choice is inconsequential" is certainly what I told her, but it only made it worse :-D
    4. Re:No, it describes Analysis Paralysis by happyemoticon · · Score: 1

      The study's findings are pretty believable whenever the choice is trivial and the chooser is not in a good place to make an informed decision. When the choice is important, the chooser better damn well get informed, and if the chooser is informed, they are in as good a position as anyone to decide what they want to eat or code.

      And sure, it probably would be better for someone doing their first or second parallel project to only have a few options, most of which are considered very good. Maybe it'd even be better for more experienced people, because they'd have more colleagues in each set. But it's a pretty immature field compared to other areas, and that's why there are a bunch of options. Once some are shown to be conclusively better, the herd will thin out naturally.

    5. Re:No, it describes Analysis Paralysis by Anonymous Coward · · Score: 0

      Now would be a terrible time to stop developing parallel languages, because the problem is just now coming to the forefront with the limits of single-core performance pushing back and multi-cores taking over.

      You could have written this sentence 20 years ago and people would have agreed with it back then, too. And there was a great deal on work in parallel programming back then, most of which seems to have been forgotten again.

    6. Re:No, it describes Analysis Paralysis by jimdix · · Score: 1
      I think somewhere along the line you may have been confused about what you are comparing.

      Jams are functionally equivalent; the choice is inconsequential. This is far from the case with programming languages, which have meaningful differences.
      As you mention Jams are functionally equivalent (they provide you with sustinence when you eat them, and they generally taste nice).
      However I would say programming languages are also functionally equivalent.
      To quote wikipedia:

      A programming language is an artificial language that can be used to control the behavior of a machine This implies that all programming languages can be used to control the behaviour of a machine.
      Flavours of different Jams are not equivilent (raspberry != plumb because they taste different), just as flavours of programming languages are not equivilent (java != visual basic because they taste different)

      Programming languages solve important problems, so a choice will be made. You can't just give up on the whole idea and walk away as with specialty jams.
      The beauty of parallel programming is that you don't have to use it if you don't want to. Granted your software may not gain any benefit when running on a multi cored machine, but you program will still work.

      To me TFA offers the opinion that most programmers will just ignore using parallel programming, and carry on as they do now if there is too much choice available to them.
    7. Re:No, it describes Analysis Paralysis by supersnail · · Score: 1

      A better analogy might be screwdrivers.
      Just one manufacturer has 200 to choose from and there are hundreds of manufactures.

      Would life be easier if there were just two manufacturers who produced one screwdriver each?

      Lots of choice allows you to choose the right tool for the job.

      Have a big java application thats needs a little multiprocessing -- then use java threads.

      Want to find all the common sequences in hte primate genomes -- get yourself a specialist parallel programing language (say Fortress).

      Want to simulate a Hurricane, but all the basic physics is encapsulated in a dozen Fortran libraries get yourself a Fortran PP library.

      Life is simpler when you think.

      --
      Old COBOL programmers never die. They just code in C.
  20. frontier? by thatskinnyguy · · Score: 1

    I read a lot of whining in the comments for this article. Let me put this in a different perspective: this is more like a frontier in programming that we're on here. In the past, a single core processor running serial code was fine on any desktop. Any applications needing parallel programming was run on high-end servers or Beowulf Clusters. They weren't for the average computer user out there.

    Now we have all these new-fangled dual/tri/quad core processors in the average microcomputer. It would be foolish to let all that computing power go to waste by running code is series. It just became economical for just about every application to be written in parallel.

    And by-the-way... GET OFF MY LAWN!

    --
    The game.
    1. Re:frontier? by deftcoder · · Score: 1

      Economical?

      Maybe from a CPU usage standpoint, most definitely NOT from a development standpoint. Time is money, son.

      --
      Peace sells, but who's buying?
    2. Re:frontier? by thatskinnyguy · · Score: 1

      hmmm Cycle time appears to be cheap.

      --
      The game.
  21. HAH! by chris_eineke · · Score: 1
    My LM-2 beats all yo puny non-programmable languages!

    (mapcar* #'traveling-salesman '(ottawa sydney new-york berlin))
    --
    "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
    1. Re:HAH! by frank_adrian314159 · · Score: 1

      Hah yourself baby! Look at my xectors and xappings on my *Lisp-driven CM-2!

      --
      That is all.
  22. Re:JAVA SUCKS!!! by Anonymous Coward · · Score: 0

    Speaking of being able to "prune" your tree of possible development choices, Java should be the first to go.

  23. libraries, books, standardization, ... by bcrowell · · Score: 4, Interesting

    I've been gradually trying to learn more about functional programming, partly because I think fp techniques and ways of thinking come in handy even if you're programming in a procedurally oriented language, and partly because fp seems like a paradigm that is likely to get more and more useful as we get machines with more and more cores. Okay, fp!=parallel, but, e.g., one of the big selling points of Erlang is supposed to be that it lends itself to completely transparent use of parallel processors.

    The choice overload does seem like kind of an issue to me. For as long as I continue to keep programming comfortably in the procedural languages I'm comfy with (e.g., perl), I'm never going to really wrap my mind around the radically different ways of thinking that you get in a more fp world. I'm been thinking for a long time that it would be fun to do a coding project in ocaml ... or haskell ... or lisp ... or erlang ... or -- you get the idea.

    The trouble is, it's really not clear what to hitch my wagon to. Ocaml seems to have a very high quality implementation, but its garbage collector isn't multithreaded, the only book you can buy is in French (it's nice that you can download the English version for free, but I'd prefer to buy something bound), and the availability of libraries (and documentation for them) isn't quite as wonderful as I've gotten used to with perl. Lisp could be cool, but I hate the fact that it's not standardized, and I'm not convinced that eschewing arbitrary syntax really carries more pros than cons. Haskell? Maybe, but it sounds like putting on a hair shirt. The list goes on. I really feel like a deer in the headlights.

    1. Re:libraries, books, standardization, ... by ljw1004 · · Score: 2, Informative

      F# is an implementation of ocaml on .net, so it benefits from microsoft's fast multithreaded garbage collector. Also you get lots of libraries and documentation for free. I've switched most of my preliminary programming to F#, to be reimplemneted in C# or C++ depending on what's needed. The reimplementation's always between 4 and 10 times as big (in terms of lines of code).

    2. Re:libraries, books, standardization, ... by Coryoth · · Score: 2, Informative

      Okay, fp!=parallel, but, e.g., one of the big selling points of Erlang is supposed to be that it lends itself to completely transparent use of parallel processors. Mostly what makes Erlang good for parallel programming, however, it is its Actor model, no shared memory, message passing, based approach to concurrency that provides that; the FP side is somewhat incidental (it certainly doesn't hurt, but it isn't required). You can have similarly clean and easy parallelism, as long as you take a message passing style approach, in a non-FP language: take a look at SCOOP for Eiffel which provides fairly transparent parallel code with an OO language.
    3. Re:libraries, books, standardization, ... by poopdeville · · Score: 1

      I was in a position similar to yours, but for different reasons. I mention this only to make my biases apparent. Take this with a grain of salt. The first language I learned was the procedural fragment of Perl. I learned how to use OO Perl after a while, but I didn't really understand wtf was going on until I learned a less byzantine object system -- namely, Ruby's. Now, I very much appreciate Perl's dynamic programming abilities. And, similarly, I appreciate Ruby's dynamic and metaprogramming functionality. I got a lot of use out of it. But the more I learned, the more I wished was possible. Ruby is very nice, and is currently my favorite language, but its metaprogramming facilities are too inflexible for me. So I learned some functional languages.

      Since you mentioned that you're interested in Lisps, I suggest you start learning functional languages with Scheme. It does have a specification -- in fact, it is rather short. (Common Lisp has a specification too, but Scheme's is shorter than its index). The syntax is simple, and the language, while rather anemic for a functional language in terms of features, it still has all the strengths of a functional language. There are lots of good books available.

      Erlang is another suggestion. The syntax is ugly, so it might not seem as elegant as something like Scheme. Your post was motivated by your desire to learn effective concurrent programming practices, so I must mention that concurrency, within certain limits determined by your algorithm, is essentialy an implementation issue for functional languages. Essentially, a functional program is run by creating a parse tree of functions and applying beta-reduction. If function invocations are on separate branches, they can occur concurrently. It's up to the interpreter/compiler to make that happen. Erlang is a great concurrency system because Ericsson wrote a very good concurrent interpreter (and related supporting technologies). Scheme is a good target for a concurrent interpreter as well.

      I realize I'm rambling. Pardon my awkward phrasing. I am sleep deprived.

      --
      After all, I am strangely colored.
    4. Re:libraries, books, standardization, ... by Anonymous Coward · · Score: 0

      You should definitely learn functional programming, regardless which of the languages you chose. I do have to put in a vote for "pure" functional languages over the "just use [imperative/procedural language of choice] because it has [some resemblance of lambda functions or lazy evaluations or whatever]".

      Since it sounds like you are coming from a background with Perl, I would suggest that Erlang might be very interesting to you (not to detract from Haskell or O'Caml). Like Perl, Erlang is dynamically typed (Haskell and O'Caml are strongly typed but use type inference), but it does some very cool stuff with pattern matching to provide polymorphic functions and allow you to add type checking to exactly the parameters you want. The process model and messaging system are also unbelievably cool (especially after traditional parallel programming (MPI, PVM, explicit thread management such as pthreads, OpenMP, etc.).

      If Erlang isn't interesting to you, Haskell is also very, very cool (there is something truly amazing about corecursion and infinite arrays, and curried functions were a revelation for me the first time I encountered them). The really big difference between Haskell and Erlang in terms of concurrency is that in Haskell concurrency is implicit (or, rather, is closely tied to the lazy evaluation strategy), whereas Erlang uses eager evaluations and explicit parallelism (you have to create your own processes (kind of like threads) and manage messaging between them yourself).

      For most pure (or semi-pure) functional languages, the hardest things to wrap your head around initially will be using single assignment semantics (no destructive updates like in imperative languages) and changing the way you think of functions and data (and, in particular, being able to think of functions as data). This is also why I think it is so important to learn functional programming in a proper functional language; you will otherwise start "cheating" by using the programming model you are most familiar with, thereby missing out on the opportunity to learn something new and interesting.

      Have fun!

    5. Re:libraries, books, standardization, ... by cryptoluddite · · Score: 1

      and partly because fp seems like a paradigm that is likely to get more and more useful as we get machines with more and more cores. Well a functional language is just a declarative language where you explicitly state what parts can be run in parallel -- these choice points are called functions and the parallel parts are called parameters. An example:

      Functional:
            return add(calculateA(), calculateB());

      Iterative:
            ## BEGIN ANY ORDER
            tmpA = calculateA();
            tmpB = calculateB();
            ## END
            return add(A, B);

      What's really needed is an iterative language that can easily express these points where operations can happen in any order. For instance, something like:

            return add(fork(calculateA()), fork(calculateB()))

      where you are saying that the iterative process calculateA and calculateB can be done in parallel, but cannot affect each other (raise an error, or they get a 'lightweight' copy of anything they use, state is only read-only, etc).

      The problem with functional language that the majority of code is not functional, but they make you put everything in terms of that with 'exceptions' for sequential code and states. If you have "a*b+c" you cannot do "b+c" before "a*b". And high-level code is not usually functional either... you have to confirm the order before you bill the credit card, and so on.
    6. Re:libraries, books, standardization, ... by beringreenbear · · Score: 1

      Don't just think "it might be fun to..." Get yourself a copy of "The Little Schemer" and get started learning pure recursion. I cut my teeth on scheme (it's a derivation of LISP) and consider it to be a fantastic foundation to understanding how to efficiency use C/C++/Java/Perl/Ruby... I use a lot of different programming languages, depending upon the problem and languages available to me.

      From my POV, functional programming gives a solid groundwork for understanding object orientation, parallel logic, concurrency, and working around system limitations.

      Good Luck.

    7. Re:libraries, books, standardization, ... by Anonymous Coward · · Score: 0

      > Lisp could be cool, but I hate the fact that it's not standardized

      So you haven't met the Common Lisp standard or the Scheme standard (respectively the union and the intersection of preceeding Lisps)?

      Conceptually, most of the functional programming languages aren't that different. (There is a slight divide between the graph reduction languages like Haskall and it's derivatives and the direct reduction languages like Scheme). Much like procedural languages, once you've learnt the concepts, it's easy to move between them.

      Get yourself a copy of "Structure and Interpretation of Computer Programs" :

      http://mitpress.mit.edu/sicp/

      read it, do *all* of the exercises and you *will* be a better programmer and you *will* understand functional programming.

      Next...

    8. Re:libraries, books, standardization, ... by DragonWriter · · Score: 1

      What's really needed is an iterative language that can easily express these points where operations can happen in any order.


      By "iterative" do you mean "imperative"? It seems to me that Oz might be a viable choice here, given the way that threads are both syntactically and operationally lightweight.
    9. Re:libraries, books, standardization, ... by Anonymous Coward · · Score: 0

      (it's nice that you can download the English version for free, but I'd prefer to buy something bound)

      This may be spitting in the wind here, but I hope you realize that your local print shop (e.g. Kinkos) can make a bound version (like a decent, hard cover bound version - not just a spiral bound report cover) of any electronic document you want. Granted, it won't be free, but it will probably be slightly cheaper than an equivalent sized book in the local bookstore.

  24. A rare cynical comment... by uglyhead69 · · Score: 2, Insightful

    There are hundreds of languages that support loops, variable assignments, recursion, definition of subroutines and Joe knows what else.

    Language constructs to support mp are bound to be just as numerous. I'm not normally one to be so dismissive of a post, but I think this one of the more pointless items ever shared with erudite little community.

  25. Silly... by ed.markovich · · Score: 4, Insightful

    That's just silly. There are two types of programmers that could be making choices like this, and neither one of them would suffer from too much choice.

    The first kind is a programmer just trying to paralelize existing code. In that case, the choice of threading platforms is pretty much obvious. Existing Windows code? Use windows threads. C/C++ on Unix? Pthreads probably. Java code? Java threads... Probably not even 2 seconds worth of thought will go into considering the alternatives (and that's probably fine)

    The other type of programmer is one who's actively looking to develop high performance paralelized software. I am talking about cases where performance is the primary objective and it drives the choice of programming language and platform. In these cases, the nuance of the different thread models might matter but the programmer of this type would be happy (rather than scared) to investigate all the options. After all, if he didn't care, he'd just go with the default choices like the first programmer.

    1. Re:Silly... by mosch · · Score: 1

      In these cases, the nuance of the different thread models might matter but the programmer of this type would be happy (rather than scared) to investigate all the options. After all, if he didn't care, he'd just go with the default choices like the first programmer. But his boss probably doesn't want him spending hours upon valuable hours of time investigating different languages. And besides, his boss is thinking of completely different factors, like "Can I hire more programmers who know this language? Will that be more difficult in ten years?" and the programmer questions like "Does the implementation match the documentation" and "is the run-time really up to production quality standards?" aren't always easy to answer in a day, or a week. This choice is not a blessing, it's a very expensive curse. I'm unsurprised that slashdot doesn't get this, because slashdot loves Linux, and Linux is a perfect example of why too much choice makes things worse.

  26. Video on the paradox of choice by grumbel · · Score: 3, Insightful

    A nice video about the The Paradox of Choice is available at Google Video. It is an interesting topic, but I don't think it applies all that much to parallel programming. The issue isn't that there are to many languages, but simply that there are a bunch of very well established languages that provide you little to no help with writing parallel programs properly, so everybody just continues to write their programs the way they did the last 20 years and thus takes little or no advantage of the available multiprocessor systems. And I doubt that just reducing the choice would help much at all about that right now, since we really still don't know how to write parallel programs on a large scale (i.e. in a way that everybody can and does it), so some more research and experimentation is needed.

  27. Re:JAVA SUCKS!!! by JoshJ · · Score: 1

    Java's advantage is the massive library and the GUI toolkits. Of course, GUI shouldn't be relevant to things like massively parallel server programs...

  28. RubyMPI by GrEp · · Score: 2, Interesting

    Just use RubyMPI when I release it next week :)
    The power of MPI wrapped in the beauty of Ruby.

    http://www.public.iastate.edu/~crb002/

    --

    bash-2.04$
    bash-2.04$yes "Don't you hate dialup connections?"| write USERNAME
    1. Re:RubyMPI by poopdeville · · Score: 1

      Cool! I will check it out. How does its performance compare wit DRb?

      --
      After all, I am strangely colored.
    2. Re:RubyMPI by GrEp · · Score: 1

      Near native C performance for the String class. Object.marshal() is the bottleneck and marshal.c could use a rewrite. I wasn't going to doing this myself until Ruby2 is near completion. Parallel file read/write is just as fast as native C since disk is way slower than CPU. Thanks for the DRb question, I might include timings of MPI vs DRb in the paper.

      --

      bash-2.04$
      bash-2.04$yes "Don't you hate dialup connections?"| write USERNAME
  29. Well then, I guess the commies had it right... by Anonymous Coward · · Score: 0

    In Soviet Russia the new collective processing system chooses you!

  30. I am confused by LWATCDR · · Score: 4, Insightful

    Okay this list seems to be of several different technologies some of which over lap but several are used for very different tasks. You can not replace MPI with Pthreads.
    I don't see the problem. Just as we have many different programing languages these different interfaces all have different niches.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    1. Re:I am confused by jd · · Score: 1
      Programmers could be given a transparently parallel environment - compilers could optimize the method according to communication needs, for example - but auto-parallelizing compilers have made little progress in 35 years, and even if they were perfected tomorrow, there still needs to be choices for the compiler to choose between.

      Now, the next question is one of whether there needs to be as many choices. There are, after all, three different threading libraries in common usage (Pth, PThreads and OpenThreads). "Next Generation" N:M threading was abandoned by IBM, but someone, somewhere, may yet revive it if there's a case in which it is effective. Oh, almost forgot. Forking is not the same as threading (you get a different pid and it occupies a different place on the scheduler). Do we really need four or five different ways to have parallel execution within a single program?

      So long as they are not identical in capability and flexibility, the answer is yes. Going back to optimization - sometimes lightweight, limited capabilities are superior, but equally sometimes heavy but powerful tools are the way to go. Most often, it'll be a compromise that's best. There isn't a single library (yet) that provides true hybrid RISC/CISC capabilities, so what you want is a range of options where you can pick the characteristics you want.

      What about inter-machine communication? MPI, PVM and all that? With MPI, you specify the number of nodes at runtime. With PVM, you specify it at compile time. MPI-2 sports ROMIO (parallel file I/O), but if you don't need it, it's overhead. Both assume the whole program is on all nodes in the cluster, which is great for SIMD but is actually pretty crappy for MIMD. They also assume the program can be started via a remote shell (RSH or SSH) connection on nodes, which means you have software running that serves no purpose but to start things, which is again overhead, which may be negligible in some cases but won't always be.

      Another limitation of MPI and PVM is that all-to-all operations are typically carried out sequentially. If you are sending a message to a thousand nodes, you will be sending a thousand packets. Reliable multicast busses are used, but not in these message-passing libraries. In fact, message passing to multiple nodes by multicast is so effective with so little prior art, there are numerous patented implementations. This should not be the case. Programmers, particularly in the High Performance market BADLY missed the boat on that one, and clusters WILL suffer for years to come as a result of their stupidity.

      There's also the reliability thing. PVM and MPI implementations aren't terribly robust - to the point that many UAV aircraft actually use CORBA-3 instead. Yes, that monstrosity. It turns out there are CORBA implementations like TAO that support high availability and/or some degree of fault tolerance. CORBA-3 also specifies a hard real-time API, so you can guarantee a message being delivered within fairly precise bounds - PVM and MPI offer no such guarantees. In fact, some MPI implementations don't even guarantee delivery (or error, in the case of not being able to deliver) at all. Trapping errors within the application itself is clearly dependent on the method of communication and you therefore have to have traps for every possible communications library you would ever want to link to.

      Those who don't want the weight of CORBA but who aren't in a SIMD cluster would probably go for RPC or some other similar interface. These are still massively heavy, in comparison to most MPI or PVM implementations, they are limited to hard-coded interfaces. On the other hand, they're more robust and can move components around more freely.

      Then others use use vanilla TCP, UDP, TIPC, or some other base protocol.

      Do programmers need to know about all the choices? No, no more than programmers need to know assembly, but the transparency isn't there yet.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    2. Re:I am confused by LWATCDR · · Score: 1

      I never said it was perfect. I think that that with the current state of the art in hardware to even think that cluster parallel program and smp parallel are the same problem. My experience is limited to multithreaded applications but I have always felt that most programs are at least somewhat parallel in nature. I love threads and I love writing threaded applications. Most of the problems I have run into have been when I have had to incorporate other peoples code into my own programs or when I fail to design for treading from the start.
      I think that trying to make parallel programing transparent is a bad idea. Making it easier is needed but I would like to see multi-threaded programming to be seen as a programming model and not as a tacked on after thought.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  31. Ahh politics by Rufus211 · · Score: 3, Insightful

    It's kind of amusing looking at the languages he lists. MPI and OpenMP are by far the most-used environments, but pthreads and java should probably be next not at the end of the list. Ct, intel's new parallel language, hasn't even been formally announced yet let along there being any released documentation / code for it. CUDA however, Nvidia's competing parallel language, isn't even mentioned though it's been released for months now.

    1. Re:Ahh politics by kangasloth · · Score: 2, Insightful

      I think your comment helps illustrate the point. The information you can so easily put hand to wasn't free. Finding the best tool for the job can require significant research. I don't pass up orange marmalade because I'm confused, I walk away because I don't want to spend a half hour sampling jam. When faced with a set already winnowed down to those with the broadest appeal, I'm far more likely to invest the time because I'll feel like I've got a shot at finding one that's good enough in an acceptable time frame. There comes a point where I'd rather stick with my familiar Smuckers, even if it's not the best out there.

      I just want to get my work done. I don't want to have to repeat the work of comparative analysis just to get started. It's been done before, by everyone who wanted to play. Even less do I want to repeat the effort I've put in to working with my selected tool if turns out to have been a bad choice.

      I realize that none of this is a real reply, but I found the casual tone of your statements striking. None of that is obvious to someone on the outside. We can't see from your vantage point. So many of the comments to this article seem to miss the basic observation: a surfeit of choice impedes adoption. It's true of software technologies just as it is for the high-def video market.

  32. Scaremongering by Salamander · · Score: 1

    With hundreds of drugs out there, is anyone really dumb enough to think "yet another one" will fix their illness? With hundreds of energy sources out there, is anyone really dumb enough to think "yet another one" will solve our problems? With hundreds of CPU/computer architectures, is anyone really dumb enoguh to think "yet another one" will solve our problems? Sometimes the answer is yes, because it's not "just another" one. Sometimes the first hundred alternatives all suck, but the hundred-and-first is the one that puts all the others to shame. Look up the story of Edison trying different materials for the first light bulb. Choice overload is a real problem, sometimes #101 sucks just as much as 1-100, but that's no excuse for stifling innovation. Parallel programming languages and frameworks are not like jam. They're not matters of personal taste alone. There are empirical measures by which one can determine whether one approach works better than another, either in one environment or across a variety. Also, again unlike jam, parallel programming is still a poorly understood problem domain. The potential for major conceptual breakthroughs is still there, and by their very nature we cannot predict when or where such breakthroughs will occur. Therefore a lot of different people have to try a lot of different things. That's how innovation works, and how progress is made. Standardizing too early is at least as bad as standardizing too late. Competition works. It might be messy sometimes, but it still beats the alternatives.

    --
    Slashdot - News for Herds. Stuff that Splatters.
  33. Spell checkers don't need all that many cycles... by n+dot+l · · Score: 2, Insightful

    It just became economical for just about every application to be written in parallel. Not really. Especially not in the desktop world. Seriously, why would any developer waste time and money multi-threading something as inherantly serial as an event loop that doesn't come anywhere near saturating even a single core?

    What does a web browser need more than one core for? Or a word processor? Or an IM client? The only "desktop PC" type tasks I can think of that might actually be able to saturate even a single CPU are multimedia and gaming. In the case of the former, it's usually enough for the OS put the media player's threads on one core and everything else on another so they don't have to fight. In the case of the latter, well, video games hardly qualify for "just about every application".
  34. Chose not to decide. by SoupIsGood+Food · · Score: 3, Insightful

    Part of the problem is that there isn't a good solution yet, so there's a lot of effort being put into trying to find a way for a bad solution to be more comfortable.

    Old-school iterative languages are a clumsy fit. They're night impossible to debug, and ones that let you do clever things at the hardware level will bring the whole project down in screaming flames when someone tries to get clever. So new libraries for old languages seldom fill the bill.

    New-hotness functional languages are insane. It's very, very, very difficult for seasoned programmers to get their heads around it, and impossible for n00bz who don't have heavy math backgrounds. Compounding the issue is that the syntax tends to be on the wrong side of horrible with little or no syntactic sugar to make the medicine go down. So re-imagining the paradigm is a bit like picturing a five dimensional sphere - great fun, if you're smart enough to do it. No-one is smart enough to do it.

    We're probably looking at a problem space that is best tackled by something that doesn't exist yet - an elegant, easily understood tool that simply makes sense, like objects or everything-is-a-file or scripting languages or regex. We're seeing so many different approaches to MPP because programmers are trying to figure out what that tool is. Once someone hits on it, the field will shake itself out.

    Since we haven't hit on it, too much choice is a good thing - it means people will take the initiative to do something on their own that works better, rather than trying to get something suboptimal to work because it's the "standard".

    1. Re:Chose not to decide. by Coryoth · · Score: 2, Insightful

      Part of the problem is that there isn't a good solution yet, so there's a lot of effort being put into trying to find a way for a bad solution to be more comfortable...Old-school iterative languages are a clumsy fit...New-hotness functional languages are insane. I think you're looking at the wrong dichotomy there. If you want languages that make concurrency easy to write, easy to reason about, and easy to get right, then you want languages that are based on message passing and no-shared state. That can be either functional, like Erlang, or iterative OO like E.

      The problem is more that iterative programmers are used to using shared state as a crutch, and having message passing systems that incurred significant overhead. FP solves the shared-state problems by eliminating state, but that only introduces new problems: it is very hard to reason about and write some software using state, so you either have to contort your thinking, or re-introduce state on some level (be it by kluging it in, or via monads). Just ditch the shared-state and get lightweight message passing and things will look up. Hell, it even integrates with OO elegantly if you're willing to view method calls as message passing (which, let's be honest, it was originally intended as -- see Smalltalk). Check out SCOOP for Eiffel for an example of adding easy concurrency to an OO language using this approach.
    2. Re:Chose not to decide. by Anonymous Coward · · Score: 0

      New-hotness functional languages are insane. It's very, very, very difficult for seasoned programmers to get their heads around it, and impossible for n00bz who don't have heavy math backgrounds.

      This is a lie.
    3. Re:Chose not to decide. by mcmonkey · · Score: 1

      If you chose not to decide, you still have made a choice.

      Oh, karma's gonna burn for that one.

  35. Since when is having too many tools a problem? by pembo13 · · Score: 1

    Are there any electricians, or mechanics here who have the problem of too much choice when they go over to Sears, or where it is that you shop at?

    --
    "Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
    1. Re:Since when is having too many tools a problem? by evil_aar0n · · Score: 1

      If our tools were as easy to understand as, say, an electrician's - not to belittle electricians in any way - then, yes, the number of choices would be trivial. But the difference is our toolsets require a substantial amount of investment - time and effort - to learn how to use them. To master them could take quite a while, because of all of the nuances and subtleties. In that case, most of us mere mortals can't afford to choose just any toolset willy-nilly, which is where the case of too many choices may seem problematic. Since it may be more than just the project at stake - possibly our careers in the immediate term - it's important to make the right choice in the first place. If there were only one toolset, then there'd be no problem: use that. Otherwise, do some research, ask around to find out what others use, and hope you make the correct choice.

      --
      Truth, Justice. Or the American Way.
  36. Not really overload... by Anonymous Coward · · Score: 1, Informative

    Ok, there's a lot of different concurrency packages...but there's a lot of different programming languages, too. I could think of at least two dozen, and you probably could too. That make it hard for you to sit down and write code? No? Just like most code gets written in C or Java or any of a small handful of scripting languages, there's a few standout parallel programming packages (pthreads, MPI, Java's built-in). Cilk? Who uses Cilk? If you want to write threaded code in C, you probably use pthreads, because that's what everyone else uses and has experience with. Not much of a choice overload. Unless you're researching concurrency packages, you don't need to know about most of the stuff on that list.

  37. Amen. by Blob+Pet · · Score: 3, Insightful

    And I say that as an agnostic.

    This guy must be missing the point of having different programming languages and environments - parallel or not. He lists ZPL, which is, first and foremost in my opinion, a really cool array-based language. There are certain things you're going to want to do in ZPL as opposed to non-array based languages, such as image processing (which lends itself really well to parallel processing IMHO). For things that don't require non-multi-dimensional array processing, you wouldn't want to use ZPL.

    --
    "...today consumers have been conditioned to think of beer when they see a bullfrog..."
  38. bad science by m2943 · · Score: 1

    This "choice overload" is just a symptom of bad computer science in general: nobody knows whether any of those systems is "better" than any of the others. Nobody even knows what "better" would mean.

    Furthermore, the academic process rewards people not doing the work to find out. If you spent six months to find out that your hot new idea is actually (1) worse than what was there before and (2) not so new anyway, you don't get tenure because you don't publish enough.

    1. Re:bad science by Anonymous Coward · · Score: 0

      Do what the FPGA/ASIC/Processor/chip designers are doing. They have only 2 choices either code it in Verilog or VHDL. Everything in the language construct is parallel.

      Software people suffers from what I called Magic Girl Syndrome. They relies too much on magic items/wands and believe in magical transformation that will solve their problems.

    2. Re:bad science by Anonymous Coward · · Score: 0

      Do what the FPGA/ASIC/Processor/chip designers are doing. They have only 2 choices either code it in Verilog or VHDL. Everything in the language construct is parallel.

      Yeah, that's a simple answer. It works because hardware designers frequently simply say "oh, that's too hard in hardware, let the software people deal with it." In addition, hardware designers have the luxury of fixed specs and really doesn't do that much (something like the Pentium has almost no interesting or complicated algorithms in it). And they can easily justify large design budgets as a percentage of product cost.

      So, given how little hardware actually does and how much money is available for its development, it's not surprising that hardware designers manage to get by with primitive tools.

  39. Revenge of OO by bughouse26 · · Score: 1

    Just use pthreads and forget that other nonsense.

    1. Re:Revenge of OO by AHumbleOpinion · · Score: 4, Informative

      Just use pthreads and forget that other nonsense.

      I am not sure you understand the problem, it is *not* how to write a multithreaded program. It is how to write "normal" code, say a for loop, that will automatically be executed in parallel if multiple cores are present.

    2. Re:Revenge of OO by bughouse26 · · Score: 1

      The problem is the belief that some language construct can be designed to sufficiently abstract the hardware in such a fashion as to make parallel processing trivial without sacrificing performance. ZPL for example, on the surface seems to have accomplished this, and there is a set of computational problems which map well onto ZPL. However, there's also a large set of problems which don't. So, you have 2 choices: 1. Continue living in fear of the hardware and spend your time learning new programming languages and paradigm shifts everytime you discover your problem doesn't map well onto your current favorite abstraction 2. Develop a deep understanding of C, the POSIX API, and the hardware

  40. multi-threaded != parallel programming by Anonymous Coward · · Score: 1, Insightful

    It's not like multi-threading is a random fad or anything. Just because a program is multi-threaded does not mean it is a parallel program. ChaoticCoyote posted it perfectly just before you:

    The list provided is somewhat silly, since several of the technologies address completely different issues and applications. And only a subset of the article's list were originally designed with parallel programming in mind. Note that win threads/pthreads/Java and the like are NOT in that subset.
    1. Re:multi-threaded != parallel programming by n+dot+l · · Score: 1

      Just because a program is multi-threaded does not mean it is a parallel program. Agreed. Poor choice of words on my part. Replace multi-threading with parallel algorithms and the point still stands.

      Note that win threads/pthreads/Java and the like are NOT in that subset. I don't disagree, thought I'd rather not pick on that point since people often use a tool built for one purpose for something completely different, and I really don't care to get into a flame war over which framework does what best right now.
    2. Re:multi-threaded != parallel programming by Anonymous Coward · · Score: 0

      (Same AC here)

      Yes - your points are valid and I agree with them as well. But I did want to nit-pick, because I think that this is an observation the article author missed.

      Sure you can use a tool for purposes other than initially intended, but when you trim down the application domain, the pool of appropriate potential tool-sets shrink to a manageable level.

      In hindsight posting that comment as a reply to yours was misleading....

  41. 2-4 cores -- why bother? by Latent+Heat · · Score: 1
    There is something unsatisfying about developing for a small number of cores or parallel execution units.

    Here's the reasoning. To do heavy multi-thread parallelism to speed up some kind of multi-media, game, data visualization program, you probably want a higher-level language with garbage collection to handle some kind of data flow model -- say Java with a good class libary to support this -- in place of C with pthreads and trying to place locks on data without the whole thing deadlocking. Assume for sake of argument that Java is 4 times slower than C -- yeah, yeah, JIT compilers and loop and bounds checking optimizations, but there are C/C++ compilers that are really heavily optimized.

    So what good does 4 processors do you? I am thinking you are better off optimizing the heck out of something in C++ to run on one processor than to get your marvelous data-flow class library working on 4 processors. Now if you had a 100 processors, now you are talking about abandoning optimized C code with optimizing C compilers for something like Java in order to go for the parallelism without sweating P-threads.

    Suppose you go the route Intel is pushing, of an optimizing C++ compiler that identifies loops that can be unrolled and made parallel and automatically creates, launches, synchronizes, and destroys threads behind the scenes. Well, if you had a compiler that could do that, wouldn't it be even more effective with whatever vector-processing capability is not utilized on Intel chips because no one has a compiler for it, or perhaps compiling to a GPU?

    On one hand, I heard that 100 processor chips are in the development pipeline. On the other hand, I heard that maybe 16 processors is an upper limit for the shared memory multi-threaded model because of all of the cache synchronization issues, and to go beyond that, you will need to go to clusters with communication between local processor memory.

    But the paltry level of processors you are getting now is probably OK for the OS running multiple apps with less processor contention, but to explicitly optimize any given app for thread parallelism, seems like a lot of effort for what, factor of 2 gain? Perhaps less?

    1. Re:2-4 cores -- why bother? by n+dot+l · · Score: 1

      It's useful for gaming and multimedia. Four cores can give some very impressive results when you're willing to put three of them to work on physics, or decoding an ultra-high-resolution movie stream, and then optimize (down to the level of minimizing cache misses) and debug the shit out of that code.

      As for using Java or .NET, well, not so much. The memory model in most VMs is blissfully unaware of things like NUMA, and a shared allocator is bad - especially when you're in a runtime that encourages you to create many short-lived objects and then blocks all threads when it does a collection. Not saying that the VMs couldn't be written to handle these sorts of algorithms, it's just that AFAIK they aren't written that way now.

    2. Re:2-4 cores -- why bother? by thatskinnyguy · · Score: 3, Funny

      On the other hand, I heard that maybe 16 processors is an upper limit for the shared memory multi-threaded model because of all of the cache synchronization issues, and to go beyond that, you will need to go to clusters with communication between local processor memory. Beowulf Cluster on one processor die. How badass would that be? And by badass, I mean, totally 1337. And by "be", I mean be.
      --
      The game.
    3. Re:2-4 cores -- why bother? by gbjbaanb · · Score: 1

      Absolutely, GC langauges are pretty poor at multi-core applications simply becuase they have to cater for the worst-case in every case.

      As a quick example, I was discussing singleton creation with someone and we tested the difference between a statically initialised singleton object and one that was initialised behind a lock. (in C# BTW). On my single-core laptop the differences were significant (1.5 second running time v 6 for the lock), but when I ran the same 2 apps on a fast multi-CPU server, it took 23 seconds for both apps. Obviously the VM was optimising locking away on my 1-core, but had to put proper locks in to ensure data consistency on the multi-cpu box. Note that when I ran the apps with affinity for a single-core, they still performed worse than my laptop.

      I know from experience that locking is the single biggest cause of highly-parallel performance issues so its not too much of a surprise, but the length of time it took to run was.

  42. How about... by MrTrick · · Score: 1

    I'd say it's like: There are thousands of restaurants in the city... but you can't just choose a different one each time you go out.

    You have to pick *ONE* restaurant, and put $10,000 on the tab.

  43. Functional programming? Try Python. by iamnotaclown · · Score: 1

    Most people think of Python as procedural or object-oriented, but it actually has all of the tools required to do functional programming. And, being Python, the syntax is logical and easy to read.

    Check out this series of articles for more info: http://www.ibm.com/developerworks/library/l-prog.html

    1. Re:Functional programming? Try Python. by chromatic · · Score: 1

      The syntax for getting working closures in Python is most certainly not easy to read; you have to close over an aggregate and then write to an element of that aggregate. Don't get me started on how useless lambda is in Python.

    2. Re:Functional programming? Try Python. by GileadGreene · · Score: 2, Informative

      Python ... actually has all of the tools required to do functional programming.
      Much as I like Python (and I do like it), last I checked it doesn't support tail-call optimization, which is pretty much required for many of the recursive algorithms used when doing FP.
    3. Re:Functional programming? Try Python. by Anonymous Coward · · Score: 0

      If not disingenuous, it is at least in poor taste for a leading Perl developer to be criticizing Python. Even pure technical criticism is necessarily mixed with politics in such a case.

    4. Re:Functional programming? Try Python. by chromatic · · Score: 1

      Shall I stifle my opinions because I happen to have some expertise in a subject area? Would you feel better if I had also said that Perl's support for tailcall optimization is less than ideal because it requires syntax and that syntax is ugly and that Ruby's blocks have the limitation that you only get one per function (at least without going through some gyrations)?

      Feel free to address any technical criticisms of what I posted.

    5. Re:Functional programming? Try Python. by Anonymous Coward · · Score: 0
      Shall I stifle my opinions because I happen to have some expertise in a subject area?


      In a word, yes.


      Would you feel better if I had also said that Perl's support for tailcall optimization is less than ideal because it requires syntax and that syntax is ugly and that Ruby's blocks have the limitation that you only get one per function (at least without going through some gyrations)?


      No, I wouldn't feel better. The point is that you are a very visible, higher-up in the Perl community, and anything you say about other languages will be taken as a political statement, whether you intend it to or not. I think it is very unfortunate that people behave this way, but any statement you make about a "competitor" (real or imagined), will be taken in a more-than-technical way.



      Feel free to address any technical criticisms of what I posted.


      I don't have technical expertise in the subject area. Given your qualifications, I am sure your comments are spot-on. Again, the problem is not technical, it is people/political. No one else seems to be paying attention to this thread, so it's probably a moot point, but your comments on perl/python/ruby mean more than the average slashdotter's.


      I apologize for being obnoxious and possibly rude, I am really only trying to alert you that your pronouncements on python can be taken as more than a strictly technical comment.


      Peace

    6. Re:Functional programming? Try Python. by chromatic · · Score: 1

      I certainly hope that people evaluate my comments for technical accuracy, but I do appreciate your elaboration and will try to draw clearer lines between fact and opinion. Thank you.

  44. Mod Parent Up by EraserMouseMan · · Score: 1

    The parent has the correct perspective on this whole issue.

    Programmers tasked with writing another workflow app or writing another e-commerce website are not going to even think about the dynamics of paralell programming (and don't need to). The developers/engineers builting real-time robotic machinery will have been thinking about this since they were 16 years old.

  45. None are really parallel languages by GreatDrok · · Score: 2, Insightful

    MPI, pthreads and so on are really a poor way of doing parallel programming. The reality is that these languages are all simply serial languages with parallelism bolted on. What you really need to do is use a truely parallel language. Way back in 1990 I learned to program transputers using Occam which was parallel through and through. On that platform it was trivial to write pure parallel code and more to the point, you could write it in a very fine grained way which could easily be serialised to run on a smaller number of processors. In some ways it was similar to MPI but far more potent because of the built in support in the transputer architecture. It is very sad that in the intervening 20 years or so since the transputer was first invented, parallel programming has gone largely nowhere. Attempts at automatic parallelisation of serial code are doomed to failure and threading within serial languages is always going to be a blunt tool. Maybe in another 20 years we will be back where we were in the late 1980's.

    --
    "I have the attention span of a strobe lit goldfish, please get to the point quickly!"
    1. Re:None are really parallel languages by Anonymous Coward · · Score: 0

      Ah, Occam it was horrible and wonderful at same time. But above all it was parallel.

    2. Re:None are really parallel languages by samschof · · Score: 1
      For its intended purposes, MPI is incredibly successful and for good reason. Virtually all large scale computational fluid dynamics codes are built on MPI and scale well to thousands of processors. MPI is successful because it isn't so ambitious. It is pragmatic and straightforward. Each process has its own address space so we don't have to put locks on every data structure. Current MPI implementations work transparently whether you are on a single SMP machine or across a network. It is also portable so you don't have to rewrite the parallel communication every time you are fortunate enough to get hours on a new machine. It is misleading to say parallel programming has gone nowhere, when with only a little effort you can take a serial numerical code, add domain decomposition and a few MPI calls and you'll have a code that will scale reasonably to 64 or more processors while portable to multiple clusters. There hasn't been a silver bullet, but parallel scientific computing is now easily in reach of most practitioners. It wasn't that way a decade ago. It would be nice if there was a portable, efficient language that would automatically parallelize the code and scale linearly to thousands of processors, but until that shows up, MPI allows us to run on large machines without extraordinary amounts of effort.

      No, MPI is not a reasonable way to do fine scale parallelism. However, efficient fine scale parallelism is mostly architecture dependent, so it is a natural to have compilers and languages manage those aspects, which they have been doing for years with some limited success. That is going to be increasingly important, but that wasn't the problem domain MPI was designed for. I suspect the large scale parallelism with still be done with MPI in another decade.

    3. Re:None are really parallel languages by GrEp · · Score: 1

      MPI isn't that bad if you as the programmer don't have to do explicit memory management and hand computation of offsets. The achilies heel of MPI is that it is not fault tolerant, but there is active research in doing this with "Binomial Trees" and other error reporting schemes so it should be soon on par or better that Erlang's OTP library where you are stuck with the supervisor trees from a decade ago OTP has built in.

      --

      bash-2.04$
      bash-2.04$yes "Don't you hate dialup connections?"| write USERNAME
    4. Re:None are really parallel languages by GreatDrok · · Score: 1

      The last project I worked on included getting my code running on a cluster using MPI. Compared with the old days when I was working with dedicated parallel supercomputers, each of which had their own perculiar parallel programming languages and having the fun of porting code from C* on a Connection Machine over to MPL on a MasPar, MPI is an improvement. As you say though, it isn't really suited to fine grained parallelism and will always be most useful in tasks which are embarrassingly parallel having a very small communications overhead and repetitive on large data sets. The parallelism is actually rather focussed on the architecture despite your claim to the contrary because you simply can't ignore all the nasty overheads if you want good performance. The nice thing with Occam was that it completely abstracted you from the hardware and you just wrote a very parallel program. The compiler and hardware worked together to run your program in the most efficient way. All I am saying is that although MPI is successful and has helped a great deal in bringing huge processing resources to bear on important problems, it really isn't a good example of the art. Don't get me started on pthreads........

      --
      "I have the attention span of a strobe lit goldfish, please get to the point quickly!"
    5. Re:None are really parallel languages by Pinky's+Brain · · Score: 1

      Fluid dynamic codes are relatively simple in structure, you can still follow the control flow in your head and have a good idea how it would run in parallel. For something a little less simple (say rigid body physics) there are far more opportunities for deadlock / livelock / race-conditions / etc, analyzing programs to prevent them is hard with the ton of aliasing present in most languages (but not occam). It's a pity Transputers died, old Occam was just too rough to survive without them. Modern Occam is quite nice ... the roughest edges have been removed (a better type system for data structures and mobile data types to avoid copying) but it's too little too late.

  46. I'm about by jsse · · Score: 2, Funny

    to welcome our new Choice Overlord personally until I found that I misread.

    Sorry.

  47. a coworker once told me.... by Anonymous Coward · · Score: 0

    A coworker I used to work with at a previous company told me once, "This place changes direction so frequently that we just go in circles and never get out of the forest."

    You can't turn your back on progress, you have to pick an API and move forward. And, that's what is really going on right now in the professional world. Software engineers are picking what seems like the best solution to them, and learning how to implement it so they can move on with their projects and make the company money. Multi-threading is an important step forward in computing and cannot be ignored, and there will be a few dragged along kicking and screaming into the 21st century.

  48. The obvious solution... by Kadin2048 · · Score: 1

    So clearly, we need more special features in compilers!

    How about we give away 650MB of code comments -- we'll call it, uh, "programmer's commentary" -- with each copy? And an interactive "Hello, world"?

    --
    "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
  49. Five dimensional sphere? by mveloso · · Score: 1, Insightful



    A 5 dimensional sphere is easy to visualize. The other two dimensions could be color and size, with the other three being the normal x y z coordinates.

    People always assume that the extra dimensions are obscure and bizarre extension of space-time. They don't have to be. A dimension can be used for any variable you want. A dimension could be reflectivity of light, smell, fluffyness, firmness. hardness, etc.

    Diamonds, for instance, are priced on a four-dimensional scale (carat, color, clarity, cut). Those dimensions have no relationship to space-time.

    People always assume that dimension #4 is time and the other dimensions are, well, unknowable. That definitely is not the case.

    1. Re:Five dimensional sphere? by paul248 · · Score: 2, Interesting

      No, a red fuzzy sphere is NOTHING like a 5-dimensional hypersphere. Even a sphere of 4 spatial dimensions would blow your fucking mind. If we lived in a universe with 4 dimensions of space, then planets would be 4D spheres with a 3D surface. You would be able to walk around, and "turn" up and down without ever leaving the ground, just like you can turn left and right in our universe. It would be impossible to tie a knot. Imagine, if you will, people living on the surface of a circular planet in a 2D universe, then imagine how incredibly different it would be from our 3D universe. If you aren't utterly shocked by thinking about what it would be like to live in 4 spatial dimensions, let alone 5, then you haven't been thinking hard enough.

    2. Re:Five dimensional sphere? by khallow · · Score: 1

      A red fuzzy sphere is a 2-sphere (3 dimensional sphere) cross 1-sphere (circle of color) cross R (the reals, or fuzziness) ("cross" is the cartesian product). Not a 4-sphere (the 5-dimensional sphere). Completely different objects. You'd have to make a number of fuzzy sphere states equivalent in order to make the two the same. For example, if at states of maximum fuzziness and minimum fuzziness respectively you ignore the color, then you can combine color and fuzziness into a 2-sphere. If you then pick a point on each 2-sphere (the physical 2-sphere and the color/fuzziness 2-sphere) and make equivalent any state that has either point as part of its state, then you have a 4-sphere or the 5 dimensional sphere, you're trying to visualize.

      Personally, the best way to visualize a 5-sphere is to imagine, visually of course, all the ordered sets of five real numbers whose sum of squares adds up to one. It may blow your fucking mind, but it is manageable.
  50. an iterative language not a declarative one! by Anonymous Coward · · Score: 0

    I meant it's an iterative language not a declarative one, but no edit option to fix it ;-(

  51. The problem with parallel programming by 12357bd · · Score: 3, Interesting

    is not an excess of choice, is an excess of improvisation.

    Long story short... now that hardware speed is not easily doubled every few years, the industry has found a 'simple' way to keep pushing the weel, duplicate cores!. Well, it turns out that after decades of ignoring the parallel programming demand from academics now they are trying to push the 'somewath parallel' mess thay are producing.

    The problem is 'duplicated cores' != 'parallel programming', that's the problem.

    --
    What's in a sig?
    1. Re:The problem with parallel programming by heinousjay · · Score: 1

      How not, exactly? I'm not familiar enough to follow your post and fill in the blank myself.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    2. Re:The problem with parallel programming by 12357bd · · Score: 1

      Programming duplicated cores is just a very specific case of parallel programming that is being promoted those days because, we are not able to keep making faster chips as we were some years ago.

      Parallel programming/machinery is a much broader field, read Turing's papers for a great insight at how different computers could have been. Unfortunately 'Von Newman designs' success stalled the industry in our actual computer architecture that was not designed to do parallel computations.

      --
      What's in a sig?
    3. Re:The problem with parallel programming by heinousjay · · Score: 1

      I'm afraid I still don't understand. My math is no longer strong enough to derive any new information from Turing's papers.

      I'm only really aware of two types of parallel programming in any case: the type available through multi-core implementations, and the SIMD/MIMD style available in GPUs. What else is there?

      --
      Slashdot - where whining about luck is the new way to make the world you want.
  52. He didn't say hypersphere, etc by mveloso · · Score: 1

    Read the freaking comment. Yutz.

    1. Re:He didn't say hypersphere, etc by paul248 · · Score: 1

      Saying "5 dimensional sphere" implies a hypersphere. Just like saying "2 dimensional sphere" implies a circle.

    2. Re:He didn't say hypersphere, etc by zippthorne · · Score: 1

      The comment was silly. If you aren't talking about extensions of spacetime, then you aren't talking about physical dimensions; you aren't talking about physics. For a dating website, you could have all of those dimensions be colors or answers to meaningless questions, or whatever, and they can still be useful, but you're really just using the word "dimensions" as a substitute for "variables."

      A simple test as to whether you're talking about physical dimensions or not: whether you calculate the inner product.

      What is the dot product of "red" with "fuzzy"?

      --
      Can you be Even More Awesome?!
  53. Use them all by k3ith · · Score: 1

    in parallel of course.

    1. Re:Use them all by Maximum+Prophet · · Score: 1

      You may jest, but that's not a bad idea. The way it would work is this. If you need to develop a piece of software that needs to be as efficient as possible, have several different teams develop to the spec. Allow each team to code in whatever language they want. Then, when all the teams are finished, or you are out of time, pick whichever code can do the job the best.

      For your next trick, develop a meta-language that can be machine converted into any other language. Write in that language and have the computer determine which language runs the most efficiently.
      I can probably give you the results in advance. For dataset A, language Y works best, for dataset B, language Z works best. Unfortunatly, in the real world, you'll have dataset C, which is unknown right now. (That, and the real programmers would complain "But your meta-language didn't use esoteric construct A.m that would blow away language B."

      --
      All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
  54. Things that are not funny by smegged · · Score: 1

    I for one welcome our new [noun] overlords. In Soviet Russia [noun] [verb]s you.

    1. Re:Things that are not funny by Verte · · Score: 1

      I thought the same thing on first read. Examine the spelling closer.

      --
      We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
    2. Re:Things that are not funny by Von+Helmet · · Score: 1

      Things that are not funny to you, you mean.

    3. Re:Things that are not funny by Anonymous Coward · · Score: 0

      Shouldn't that be:

      In Soviet Russia, our New Overlords welcome YOU!

      Solomon

  55. The world is consolidating all the time by Per+Abrahamsen · · Score: 1

    Basically, with any new interesting technology people try out many different approaches, and as the technology matures, a few of them will survive as the de-facto standards.

  56. Great Caesar's Ghost! by Anonymous Coward · · Score: 0

    And I say that as a non-Roman.

  57. Lua lends itself well to FP and has tail calls by Krischi · · Score: 1

    If you like Python, you might also want to try Lua for FP. Unlike Python, it does feature tail call optimization and named functions work exactly the same as anonymous lambda-style constructs.

  58. Re: explcit vs implicit parallelism by Anonymous Coward · · Score: 1, Interesting

    Second, I doubt explicit parallel programming is going to be mainstream anytime soon. No, make that ever. Ever! Parallel programming will only happen in the mainstream when it is handled implicitly by the language, like a dataflow language. Asking normal programmers to deal with parallel programming is trouble when basic logic eludes most of them.

    I agree and disagree here. The way I see it, we'll always need human intelligence to explicitly annotate the source to indicate where nondeterministic behavior is permissible (or rather, where it's NOT allowed). But on the other hand I think compilers of the future will all use runtime analysis to refine JIT compilation, and they'll be able to spot very obscure parallelism opportunities that might only arise due to the actual data used in the evaluation of the program.

  59. Oh Christ by Anonymous Coward · · Score: 0

    And I say that as a solipsist!

  60. we're frickin programmers! by Gearoid_Murphy · · Score: 1

    choice is a way of life for programmers. Every thing I do as a programmer has at least a dozen different alternative approaches to the same problem. What makes a good programmer is the ability to select wisely from this array of possibilities, sometimes catering to convenience, other times optimising for speed & memory. Programmers aren't about the emit shrill shrieks when the spectre of choice rears its hydra-like visage. Then again, nothing like a good scream.

    --
    prepare the survey weasels.
  61. Choice Overload ? No, but there is a point. by andr0meda · · Score: 1


    He makes a point. The point is that the parallel programming paradigm is still in it's infancy, in that there are certain rules to follow in each of these API's and languages, but that most of them are variations of solutions that are still different enough from each other to grant them any sort of existence (otherwise they would not exist). This simply means the field is moving.

    As certain languages gain and loose momentum, so will the libraries, but the reverse is also true. When parallel programming really offers the bang for the buck for the kid in the street, it will automatically pull ahead the language or API that is easiest to use, and the API will either benefit or be killed from bloat explosion. Right now, parallel programming offers marginally noticeable improvements, because only now are we moving into the multi-core era for mainstream users, and the hardware is not quite proving that it works significantly better. The reasons are partly software as the whole software stack needs to be rethought and OS'es don't do a great job at harnessing all that power in a practical way. It could very well be that this is not simply a matter of language or API, but a matter of OS architecture.

    In any case, it's about architecture, and not about sociologists fantasizing about a theoretical dilemma.

    --
    With great power comes great electricity bills.
  62. Have Others Do the Work for You by RAMMS+EIN · · Score: 2, Insightful

    Choice overload is a problem, but only if you are actually faced with all the choices. It need not be that way. There are various kinds of parallelism and various angles to attack each. Some of the choices one has will not make a lot of sense for type of problem one is looking
    at. So, categorizing can help.

    Some technologies will be in rapid development, others will be no longer actively maintained, and yet others will be stable but actively maintained. This also affects which choices are good.

    Then there's licensing. Depending on the task, closed-source or copyleft
    licenses might not be acceptable.

    Some of the solutions may be low-level, allowing programmers to build something matching their application out of the provided building blocks, where other solutions may focus on providing higher level constructs, ready to be used. Sometimes, these will match what you need, and sometimes, they won't.

    I am sure there are other axes of differentiation. Setting requirements will narrow ones choices, as well as illustrate why choice is a Good Thing. If there were only a few choices, it is unavoidable that none of them would actually fit some sets of requirements.

    Now, the thing is that categorizing the various solutions is not something that every potential user of the solutions has to do. Part of the work can be done by the developers of each solution. Presumably, the solution is developed because a satisfactory solution did not already exist. In my opinion, the developers _should_ list related work, compare their solution to it, and explain why they saw fit to develop their solution. This is a standard part of research.

    Another part of the work is comparisons done by third parties. Some independent person would go and investigate a number of solutions, and provide a write-up of the requirements they assumed, the solutions they investigated, how these solutions fit their requirements, and what their overall impression of the solutions was (w.r.t. things like ease of setup, documentation, development status, etc.). This, too, is valid research. It should be published, so everyone benefits.

    In the end, what you get to do when you need to pick a solution for parallel programming, is

    1. Define your requirements
    2. Get a list of possible solutions
    3. See what has been written about them
    4. Check if that seems to be valid (it might be out of date, for one)
    5. Possibly investigate any solutions that you found but that haven't been covered by others.
    6. Decide which one to go with, based on the information you have gathered.

    Sure, this is a far cry from

    1. Find the only available solution
    2. There is no step 2

    but for that you are almost guaranteed to get a choice that better fits your requirements (you would be very lucky to have the only available solution be a great match), without having to pay the full cost of investigating every solution out there.

    The thing to remember about the paradox of choice is that you will probably _feel_ less happy (there is always the nagging feeling that you could have made a better choice), but that you will generally end up with something _better_ than if the choice hadn't been there is the first place.

    If you _really_ aren't happy about having to choose, you can always pick one (say, at random) and pretend that was your only choice. I conjecture that this is what the situation of having only one option is really like.

    --
    Please correct me if I got my facts wrong.
  63. A problem of philosophy by Colin+Smith · · Score: 2, Insightful

    Seems to me to be a philosophical problem. With a single CPU you have a single gate processing a single sequence of instructions. It's easy to push the instructions and data through that gate in order. When you have 10, 20, 100 gates choosing which direction to push the instructions and data becomes exponentially more complex.

    The solution it would seem to me would be to start pulling the instructions and data through the gates instead of pushing it.

    --
    Deleted
    1. Re:A problem of philosophy by DaveV1.0 · · Score: 1

      Please explain in detail how one "pulls" data, which is merely electrical signals, through a gate.

      --
      There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
    2. Re:A problem of philosophy by Maximum+Prophet · · Score: 1

      This is how things were done in the pre-beowulf days. You'd have a small computer prepare jobs and make them available to the batch processors. You could have as many processors as you wanted. When one was available, it would download one job from the peripheral processor and run just that one, then feed the results back to the peripheral processor. You could even have several peripheral processors, all queueing jobs for the big machine. This was how the CDC 6000 series, designed by Seymore Cray, worked.

      It wasn't a bad idea, but it was most efficient on big jobs that didn't need results from other jobs.

      --
      All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
    3. Re:A problem of philosophy by Anonymous Coward · · Score: 0

      Reverse the polarity, duh.

  64. Simple Solution by terom · · Score: 1

    There's one very simple solution to this problem of choice; write your own. After all, I don't think one even exists for Piet yet.

  65. Apples and Oranges by master_p · · Score: 2, Informative

    Parallel programming has many facets. Libraries like OpenMP can not be compared to Windows threads, for example: the former is a mechanism for doing task/data parallelism at language level, the latter offers the primitives for making threads. PThreads is a thread API similar to win32 threads. I don't see how there is an overload of choices, really.

  66. Just because he says it doesn't make it true by heffrey · · Score: 1

    This is a nascent area and so of course there is lots of choice and lots of different thoughts of how best to support parallel development.

    In due course there will be consensus and the few winners will emerge.

    Same as it ever was.

  67. Java by Anonymous Coward · · Score: 0

    This is the problem I have with Java. Everyone and their dog comes out with some new freakin' framework each month. What is the latest Java craze? The opposite, is also one of the things I liked about C and C++... the lack of a framework of the month syndrome, that is. Sure there was less 're-usability' going on with those. But nearly everyone could go into a C or C++ program and debug it. With Java you have to find people with expertise in your flavor of framework to debug it. And IN DEPTH EXPERTISE, not just how to use it. And you weren't forced to learn a new framework each month, or use a new framework because all the 'new framework because it's a new framework' chasers have moved on. How many freakin frameworks are there out there for Java. Too many. Too many to choose because you can't be sure what people will stick with. From what I see they don't stick with much. How about more consistency and less abstraction. We can abstract if we want to.

  68. next on slashdot by yoprst · · Score: 1

    Programming is plagued with the choice of languages/frameworks for sequential programming. There are just too many to list. I'm kind of envious of the guy who light-heartedly chose Fortran for his parallel tasks. May be this strategy works for sequential programming too!

  69. hammer & nail by Luctius · · Score: 1

    If all you've got is a hammer, you start to see every problem like a nail.

    1. Re:hammer & nail by DaveV1.0 · · Score: 1
      Congratulations on a stupid and inappropriate comment.

      First off, it is not that there is only a hammer. The problem is that there are too many slightly different specialized hammers.

      Second, it is fairly easy to swap a screwdriver for a hammer or one type of hammer for another. Swapping out the "programming environment" used to make an application would entail rewriting the whole program.

      The proper analogy is:

      Your project is to build a 4 story building. Here are 50 different tool boxes complete with tools. Some have more tools than others. Choose one tool box to build a house. You can have multiple copies of the same tool box, but everyone who works on the project must use the same tool box and set. If you want to change tool boxes and sets, you have to start over from scratch. You will also have to explain why you have to start over from scratch, justify the expense of new tools, and then toss out the old tools. Oh, and the design of the building my change during construction.

      --
      There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
  70. Use them all! by Anonymous Coward · · Score: 0

    In parallel!

  71. Really only two important ones - MPI and OpenMP by Anonymous Coward · · Score: 0

    MPI and OpenMP standards aren't mutually exclusive either, you can use OpenMP intranode and MPI internode. Nearly the others are implementation-defined academic/research projects whereas MPI and OpenMP are used in the "real world" and supported by many vendors (though erlang sees real use in industry too), it's not suitable for most kinds of parallel work where high numeric performance matters too).

  72. Re:Spell checkers don't need all that many cycles. by Timothy+Brownawell · · Score: 3, Interesting

    Seriously, why would any developer waste time and money multi-threading something as inherantly serial as an event loop that doesn't come anywhere near saturating even a single core? Responsiveness. If my GUI program will occasionally do things that take a second or two, those things should be done in a second thread so the interface doesn't freeze up.

    What does a web browser need more than one core for? Because when I open some huge page (something like a big slashdot discussion) in a second tab, it freezes for a few seconds trying to render it. That sort of thing should go in an extra thread to prevent this.
  73. Fortunately slashdot is also a translation tool by Xiph · · Score: 1

    Oh, thanks for the confidence. In the fremtid I'll remember to only bruge words from my modersmål when I'm uncertain how a particular word should be stavet.
    Oh, thank you for the confidence. in the future I'll remember only to use words from my native language when I'm uncertain about how a particular word should be spelled.

    please, someone take over from here to correct the grammar.
    --
    Blah blah sig blah blah blah irony blah blah
  74. What "free lunch", though? by Anonymous+Brave+Guy · · Score: 4, Interesting

    I always find it amusing (in a sad kind of way) how people talk about Herb Sutter's "call to action" over this. It's not that I've got anything against Herb himself: he's a decent writer, an excellent speaker, and a guy who can use the word "expert" legitimately in areas like C++. But it's also not like he's the first guy to notice that modern desktop computer architectures have been heading for parallelisation rather than increased speed for several years now.

    Despite being right in the thick of this culture shift myself — I'm sure I'm not the only one here who has been talking about this for a while, and is just seeing management catch up — I don't think this is going to be that big of a deal for most people. The harsh reality, for the buzzword-wielding consultants rubbing their hands with glee at a new programming approach they can hype up, is that most people just don't need all this.

    Your average desktop PC is more than powerful enough for most things that most people do with it: Internet communications, writing documents, working with databases, shop floor software, and the like. As long as the operating system is reasonably smart about scheduling, the guys writing these common types of applications don't really have to know anything about multithreading, locking, message passing, and all that jazz. Similarly, your average mobile device has more than enough juice to dial another phone, write a quick e-mail, or capture a digital photo.

    At the other end of the spectrum, serious servers (database, communications, whatever) have been dealing with parallel processing of many requests since forever. High-end systems doing serious maths (the guys modelling weather systems, say) have also been using massive parallelisation on their supercomputers for zillions of years now.

    There is a gap between these different areas, which we might traditionally have called the "workstation" market: the guys doing moderate number crunching for CAD, scientific visualisation, simulations, and the like. Many modern games also fall into this classification. This market is ripe for a parallel processing revolution, because historically it hasn't followed this approach very much because the hardware wouldn't really take advantage of it, yet the extra power is genuinely useful. But I don't think this represents some huge proportion of the software development industry as a whole. The guys working in these areas tend to be pretty smart, and will no doubt adopt useful practices and conventions fairly quickly now that the hardware has reached the point that they are useful.

    As to what those conventions are, I just don't buy the whole "choice overload" theory. There are relatively few basic models for parallel processing: for example, you can have no shared state and communicate only through message passing, or you can have shared state. In the latter case, you then have the question of how to make sure that the sharing is safe, which leads to lock-based or lock-free approaches. Funky toys like transactional memory run at a slightly higher level than this, but they are ultimately constructed from the same building blocks, and again there are only a small number of approaches at this level to consider.

    I'm not familiar with all of those libraries mentioned in the story, but I'll bet that those three classifications (no shared state, shared state with explicit locking, shared state without explicit locks) probably cover the models used by most if not all of them. If you understand the trade-offs in those, you can produce a sensible design, and then the toolkit or framework you use to code it up is mostly just an implementation detail. Given that the trade-offs are pretty obvious and will often steer projects clearly in one direction, I don't think there's really that much to choose at all.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:What "free lunch", though? by TemporalBeing · · Score: 1

      Your average desktop PC is more than powerful enough for most things that most people do with it: Internet communications, writing documents, working with databases, shop floor software, and the like. As long as the operating system is reasonably smart about scheduling, the guys writing these common types of applications don't really have to know anything about multithreading, locking, message passing, and all that jazz. Similarly, your average mobile device has more than enough juice to dial another phone, write a quick e-mail, or capture a digital photo.
      For background tasks, may be. However, anyone involved in writing a GUI application should be familiar with multitasking. In fact, it has pretty much been required for Windows applications for a long time as that is how Win32 works - you assign one thread/process to handle you GUI, and do the work with others in order to keep from locking up the GUI if the programmer did their job right. In fact, a lot of GUI frameworks work this way.

      Unfortunately, not everyone follows the documentation on the frameworks, or does a poor job of it so there are still lock ups on the GUI. (When was the last time you had a GUI app's interface stop responding to you?)

      Any how...my point is that multi-threading, multi-processing is very important even for the desktop.
      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    2. Re:What "free lunch", though? by try_anything · · Score: 1

      I always find it amusing (in a sad kind of way) how people talk about Herb Sutter's "call to action" over this. It's not that I've got anything against Herb himself: he's a decent writer, an excellent speaker, and a guy who can use the word "expert" legitimately in areas like C++. But it's also not like he's the first guy to notice that modern desktop computer architectures have been heading for parallelisation rather than increased speed for several years now. Despite being right in the thick of this culture shift myself -- I'm sure I'm not the only one here who has been talking about this for a while, and is just seeing management catch up -- I don't think this is going to be that big of a deal for most people.
      There are two reasons everybody talks about it. First, like you say, he is an excellent writer, and it's a widely-read article, so it's a quick way to make an offhand reference to the idea. Secondly, The architectural shift may have been old news, but the big splash he made was his prediction that yes, it *will* be a big deal for most programmers. It isn't an uncontroversial statement. He disagrees with your assessment that most programmers will be able to opt out of concurrent programming.

      Your average desktop PC is more than powerful enough for most things that most people do with it: Internet communications, writing documents, working with databases, shop floor software, and the like. As long as the operating system is reasonably smart about scheduling, the guys writing these common types of applications don't really have to know anything about multithreading, locking, message passing, and all that jazz.
      This is the basis of the disagreement. My desktop has plenty of power, but too often I see apps balk or become unresponsive because of poor handling of concurrency. Even popular, high-profile apps with lots of resources behind them occasionally suffer, and less-used apps can be quite horrible about chronically locking up for a few seconds as you go about your work. The hardware can't be blamed when an application can't keep up with a human user wielding a mouse and keyboard. When several applications are being used at the same time, the OS can be held partly responsible, but when you're using a single application, there's no question. The problem is poor handling of concurrency by programmers.

      The effects of the inability to handle concurrency were visible as soon as multithreaded GUI systems hit the corporate desktop. The average corporate coder simply can't write a reliable and responsive GUI application, so as soon as web programming emerged as an alternative, corporate development abandoned the rich client. Now almost every internal business application gets shoehorned into a web interface. Rich clients are notorious for having terrible performance, real and/or perceived, and it isn't because the actual computing workload exceeds the capacity of the hardware. It's because of poor programming. (I admit, half the time it's because programmers clog up the network with data. The other half of the time, it's because concurrency handling in the GUI sucks.)

      As to what those conventions are, I just don't buy the whole "choice overload" theory. There are relatively few basic models for parallel processing: for example, you can have no shared state and communicate only through message passing, or you can have shared state. In the latter case, you then have the question of how to make sure that the sharing is safe, which leads to lock-based or lock-free approaches. Funky toys like transactional memory run at a slightly higher level than this, but they are ultimately constructed from the same building blocks, and again there are only a small number of approaches at this level to consider.
      I don't think those building blocks are what people are calling a framework in this case; they mean something higher-level and more concrete that has design implications for the rest of the system, rather than being moldable into any design. That's why there are so many of them. Consider the multiplicity of logging frameworks for C++, despite them all being made out of file handles and objects.
    3. Re:What "free lunch", though? by Anonymous+Brave+Guy · · Score: 1

      This is the basis of the disagreement. My desktop has plenty of power, but too often I see apps balk or become unresponsive because of poor handling of concurrency. Even popular, high-profile apps with lots of resources behind them occasionally suffer, and less-used apps can be quite horrible about chronically locking up for a few seconds as you go about your work.

      Sure, but that has been the case for years. The delay isn't because of multiple cores or processors, it's because of kindergarten design mistakes in a certain kind of architecture, and it's been a solved problem for a long time.

      What the serious people are talking about is taking advantage of multicore/multiprocessor hardware by parallelising time-consuming algorithms that have typically been specified in terms of a single thread until this point. This is where the hard problems are, and where the big gains are to be made.

      I don't think those building blocks are what people are calling a framework in this case; they mean something higher-level and more concrete that has design implications for the rest of the system, rather than being moldable into any design. That's why there are so many of them. Consider the multiplicity of logging frameworks for C++, despite them all being made out of file handles and objects.

      Sure. But again, that's looking at the easy part of the problem. Once you've worked out the general architecture you want to use, just adopt whatever APIs you need to support it. If you've made the right decisions up to that point, the specific choice of library doesn't much matter.

      From what I've seen so far, a lot of these libraries are much like logging or unit testing frameworks: sure, you can use one, but it's almost as much effort as just incorporating the equivalent functionality in your design from scratch. I suspect you have to reach a substantially higher level of abstraction, perhaps serious message passing frameworks or transactional memory, to get much advantage over using pretty raw concurrency and synchronisation APIs with a simple wrapper layer.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    4. Re:What "free lunch", though? by try_anything · · Score: 1

      The delay isn't because of multiple cores or processors, it's because of kindergarten design mistakes in a certain kind of architecture, and it's been a solved problem for a long time.
      It's a solved problem if you're a smart programmer sitting down to write a program. It isn't a solved problem if you need a simple rich client and somehow want to get out of doing it yourself :-) That isn't to say I don't work with bright developers, but they don't want to do the boring work either. Writing simple clients for various internal systems is boring work, and boring work is supposed to be handled by less capable people. A simple concurrency framework that makes it easy to follow the rules would make that possible. It would also enable better developers to dash out a working app without even thinking, which is an advantage that's easy to underestimate.

      From what I've seen so far, a lot of these libraries are much like logging or unit testing frameworks: sure, you can use one, but it's almost as much effort as just incorporating the equivalent functionality in your design from scratch.
      That's what I normally do when I need multithreading for throughput; I write a nice high-level API that just happens to map perfectly to my needs, and I implement it using locks, mutexes, and conditions. It works, but it feels a bit like writing my own linked list implementation. I'd like to have a menagerie of well-polished frameworks that are each a decent match for a large class of problems.
    5. Re:What "free lunch", though? by Omnifarious · · Score: 1

      IMHO, for reasons of locality I think the no shared state model generally wins. The shared state models all involve lots of shuffling around of things between different caches under the hood, and that takes time. I wrote a couple of LJ entries on this:

    6. Re:What "free lunch", though? by Anonymous+Brave+Guy · · Score: 1

      It's a solved problem if you're a smart programmer sitting down to write a program. It isn't a solved problem if you need a simple rich client and somehow want to get out of doing it yourself :-)

      Fair point. I'm definitely talking about the programming models and design techniques here, not the specific implementations, which I agree are sometimes amazingly poor for such a big, fast-evolving industry. For what it's worth, I think this applies to programming language design generally, not just in the particular area of concurrency.

      That's what I normally do when I need multithreading for throughput; I write a nice high-level API that just happens to map perfectly to my needs, and I implement it using locks, mutexes, and conditions. It works, but it feels a bit like writing my own linked list implementation.

      Yeah, I know what you mean. Whenever I start out on some new logging or unit testing code, I get that sinking "reinventing the wheel" feeling, too.

      But then objectivity kicks in. This is not the same as rewriting a linked list. We have programming techniques that let us express our wish to reuse generic linked list code with a single line of new code. Linked lists are neat, self-contained entities, readily generalised, and easily understood in isolation. The kinds of frameworks we're talking about here, for things like multithreading, logging and testing, aren't there yet: they still spread through your new code, taking up residence like a well-worn sofa, and just about as hard to adapt or remove if you later decide you want to do things in a slightly different way.

      When we have developed tools to abstract this complexity away, so that using these aspects of the code is really just a one-liner as well, then I will agree with you about having a collection of useful "off the shelf" libraries. But until the effort to use the library is substantially less than the effort to just build the necessary functionality in using the basic APIs, and the power of the libraries is substantially higher than what you get with those raw APIs, I don't think we'll reach the point where bringing in a multithreading framework is a no-brainer the way that reusing a linked list is today. I look forward to the day when that happens, because it will make life easier for many programmers, but from what I've seen, the kinds of libraries we're talking about aren't quite there yet.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  75. Parallel programming is just plain hard by pcause · · Score: 3, Insightful

    The overload is just a symptom if the real problem and that is that parallel programming is just plain hard. We've had these issues for over a decade and we haven't seen a step function in use of parallel programming. It is difficult for most people to think of many things happening at the same time and to design and debug this class of program. We tend to start by thinking of a task in serial steps and then look for ways to add a little parallelism.

    The folks who are low level systems programmers (OS and networks) tend to be folks who have an aptitude for thinking about parallelism and designing with parallelism in mind. There are a group of people in the scientific space who make use of parallelism, but then again they are Phd mathematicians and physicists. After that it drops off rapidly.

    Maybe it has something to do with he way we are educated. perhaps it is a more fundamental issue of brain wiring. After all, we c perform complex physical tasks in parallel, but maybe only a small segment of the population is wired to think about programming problems in parallel.

    The chip guys are throwing more cores at us and we can't create the software to fully utilize the hardware due to this issue. Perhaps it is time to take a step back and to stop trying to solve the problem by throwing more and different programming packages at the problem and examine why folks have so much trouble in this area.

  76. Parallel Babel is here to stay by RandCraw · · Score: 1

    One size will never fit all in parallel computing. There's such a diversity of range (hardware), domain (application space), and user need that a plethora of parallel tools and design choices will always be needed.

    SMP machines differ significantly from tightly-coupled clusters, or even loosely-coupled clusters (a la Google), so a range of parallel tools are needed. Some parallelism components inevitably come from language vendors and others come from O/S vendors. As such, programmer access to these tools may need to remain at a low level (perhaps for direct device access) or may rise to a higher level as part of a more abstract programming model.

    What's more, tasks go parallel for different reasons: greater speed, greater memory, more responsive GUIs, or to make for a software architecture that's better suited for various data structures like workpiles or trees, etc.

    With such a diversity of architectures, multilevel implementations, application domains, and designer needs, it's little wonder that different solutions have emerged. Given the four dimensions and 2-3 variations that I've described for each, I can see justification for at least 2^4 different parallel programming models, tools, or languages.

    A final thought. If each of the popular programming languages were extended to support even one form of parallelism (perhaps SMP threading), in addition to the numerous parallel process libraries that exist, how many *more* solutions would then arise? Can we really expect language implementors not to extend their products in order to serve the needs of their current users?

    I think it's inevitable: the babel of parallel polyglots is here to stay.

            Randy

  77. all you need is: by t35t0r · · Score: 1

    fork(), pthread_create(), and MPI_Init()

  78. Attention and Funding by Anonymous Coward · · Score: 0

    Choice Overload in...

    Languages in general:
    "And then we show them the languages they can talk in: English, Spanish, French, German, Italian, Japanese, ... and the list goes on and on. If we aren't careful, the result could very well be a 'choice overload' experience with humans running away in frustration."

    Programming:
    "And then we show them the programming environments they can work with: Eclipse, Gnats, IDLE, Visual Studio, JBoss, ... and the list goes on and on. If we aren't careful, the result could very well be a 'choice overload' experience with programmers running away in frustration."

    Eating:
    "And then we show them the fruits they can eat: Bananas, Oranges, Peaches, Melons, Apples, ... and the list goes on and on. If we aren't careful, the result could very well be a 'choice overload' experience with customers running away in frustration."

    (Polemic:)Are these social psychologist Windows users and citizens of a dictatorship? I guess so...
    But there is another explanation -- less polemic.
    Its a fundamental problem with "Choice". Combine that with a industrial topic and you got a lot of attention and funding ;)

  79. BS Overload by wytcld · · Score: 2, Insightful

    So do you want to go to a bar with only one woman in it? Or a bar with 20? If you believe the premise of "choice overload" making you unhappy, you should choose the first, right?

    Aside from that in many contexts the "choice overload" hypothesis is flat-out wrong (unless you really can claim to have felt a special rush of happiness just when you went into that bar with only one dame in it - and she wasn't, say, your girl already), there are open questions about how representative the test sample was. Psychological problems run culturally in certain populations. How can we be sure that the population tested for "choice overload" didn't share a psychological problem regarding choice that has no foundation is basic human psychology, but rather was relative to their own cultural limitations?

    For most people in most cultures over history, the trick is to be happy with not much choice. That's generally the case for the working class, for the infantry soldiers, and for tribal peoples in environments of scarcity. Yet even in those cultures there are other classes for whom the trick is to be happy with a great deal of choice - the upper class, the generals, and tribal peoples in environments of plenty. Those whose cultures and religions derive primarily from desert (scarcity) environments are those driven craziest by "choice overload" - thus the Islamic meltdown, and the rejection of modern freedom by American fundamentalists. But we do have other cultures here. And the studies associated with the "choice overload" hypothesis, do not, I'll bet dimes to dollars, correct in any way for (sub)culture and psychological diagnosis.

    --
    "with their freedom lost all virtue lose" - Milton
  80. Old news by Jupiter+Jones · · Score: 1

    What the 2000 paper is calling "choice overload" was already identified nine years prior by Douglas Coupland as "option paralysis". He defined it as "the tendency, when given unlimited choices, to make none.

    Not a scientific study, but still...

    (More Couplandisms)

    - JJ

  81. choice is due to the nature of the problem by ILongForDarkness · · Score: 1
    The HPC community(which up to recently were pretty much the only ones interested in multi processor, shy of the server market) has always been this way, both with hardware and software. Eg. One of the early supercomputers, used 10k single bit processors, the cray used massive vector processing. Which one was better? We it depends. At the time communications were faster than the processors so the 1bit processor was an easier to develop solution. The cray could do data parallel problems really fast (think multiply matrix A by matrix B). It really depended on your budget and your problem which you went with.

    The same goes with the API's/languages. Which one is better? Well it depends on the problem, Fortran 95 might be good for most things, but some little known langauge might blow it out of the water for your particular problem/hardware. What is worse for HPC developers, is the "best language" can change quickly. Say you go with a Intel x86 solution, but a couple years later you get a huge grant from Sun to make a SPARC cluster. Everything changes. register, RAM, bus latecies and bandwidths, supported hardware operations, etc. When big government labs consider HPC systems, price tag is usually the deciding factor. The developers are stuck finding, and learning the best language for the hardware that they get given.

    The good news I think is that within the next 5 years, we will see the majority of the parallel programming being targetted for desktop/production server markets. Here the systems will be a lot closer to similarities (probably x86, probably DRR or whatever the standard RAM is at the time etc). It will become shaping the language to the logical problem to be solved not the hardware, and I think a lot of the big HPC company sponsored languages won't gain a foothold in the market, or those companies won't bother releasing x86 versions. The clutter will clean itself up a bit.

    In the long term, I'm looking forward to a good parallel compiler (some exist already but they don't work that well). IMHO the compiler should make the decisions on how to order the instructions for the hardware that it is compiled on, rather than the developer have to figure it out. Unfortunately Intel/AMD have been pretty closed about the innards of their hardware, this would have to change. We need to not only know that an instruction exists, but how many clock cycles to execute, latencies to other components within the socket, etc, so that we can make intelligent decisions on how to either code in a parallel language, or write a compiler to make those decisions.

  82. Cluestick by geekoid · · Score: 1

    Programming is done to create a product, not write in a specific language.
    Choice is a good thing, for each language has it's own pros and con's that need to be weighed when used.
    Creating a one off piece of custom satellite firmware has different needs and priorities then firmware for a video card. Banking software is different then automotive software.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    1. Re:Cluestick by DragonWriter · · Score: 1

      Programming is done to create a product, not write in a specific language.

      Some programming is done to create a product, some programming is done to learn tools and techniques (including particular languages) so as to broaden the selection of approaches available for (generally unknown) future products.

  83. Re:Hmm - they're not the same! by rubycodez · · Score: 1

    all the choices listed are distinctly different tools for different jobs. Whether that job is run in one SMP system, or one NUMA coupled system, or many networked system...whether mutual exclusion is needed (and whether referenced frequently or rarely), whether IPC needs complex message queue management or just a single semaphore....anyone who thinks the number of choices is an issue doesn't know much about the subject

  84. Is ZPL development dead? by Anonymous Coward · · Score: 0

    Thanks for mentioning ZPL, I'm surprised that I missed such a nice parallel programming language previously.

    But is the ZPL research and development ended? The alpha release dates back to 2004, and the developer release to 2005.

    1. Re:Is ZPL development dead? by Anonymous Coward · · Score: 0

      ZPL development is fairly dormant, due primarily to lack of students and funding. In our spare time, a few of us still track the mailing lists to answer questions and attempt to keep things from falling apart any further than they may already have.

      A few of us are also working on a new language called Chapel being developed by Cray Inc. which carries forward some of ZPL's core data parallel concepts, while also expanding the scope of the language to support more general parallel computation and to bring it a bit more in-line with modern programming languages. See http://chapel.cs.washington.edu/ for more information.

      -Brad
      (not a regular reader/poster here, just pointed in this direction this morning by a colleague)

  85. Just one question by Anonymous Coward · · Score: 0

    With all these choices of programming platforms, and all the knowlegeable programmers out there (as demonstrated by all the posts on this topic), then why is most of the software produced, both closed and open source, basically bug-ridden, bloated, resource hogging, memory leaking crap ?

  86. Re:Spell checkers don't need all that many cycles. by n+dot+l · · Score: 1

    Funny then how my web browser glitches up on my dual-core system exactly like it did on my old single core, and still doesn't manage to put more than a 30% load on the whole CPU. This isn't a case of one thread doing so much that others don't have a chance to run, it's just some engineer being bad at not synchronizing everything the worker threads do.

    While many desktop applications can benefit from a multi-threaded design, it really isn't the same thing as parallel programming. The need to use threads has nothing to do with multiple cores suddenly being available, and everything to do with the fact that certain API calls block, certain operations can be done in the background, and that pure UI threads rarely use their entire time slice - something that's been true for a long time.

  87. Re:JAVA SUCKS!!! by ale_ryu · · Score: 1

    Here, read some. These are benchmarks comparing Java5 to C++
    http://www.idiom.com/~zilla/Computer/javaCbenchmark.html
    Java has improved a lot since its early versions and now it's comparable to the best platform specific compiled languages out there.

  88. C good, Erlang good, LISP okay, rest crap. by Anonymous Coward · · Score: 0

    See subject.

  89. ITS Teh Allz Aboutz CHOICE!!!! by Anonymous Coward · · Score: 0

    Too much choice is counterproductive, and hurts your product?

    Who knew?

  90. Re:Spell checkers don't need all that many cycles. by DragonWriter · · Score: 1

    It just became economical for just about every application to be written in parallel.

    Seriously, why would any developer waste time and money multi-threading something as inherantly serial as an event loop that doesn't come anywhere near saturating even a single core?


    Depending on the implementation language, making tasks parallel that are logically independent may not add any additional time or money. Sure, it adds a lot if you are adding it to an existing app written in a language that doesn't accommodate it naturally, but GP referred to writing applications, not rewriting existing applications. The point at which it becomes sensible to apply parallelism widely to new applications isn't the same point at which becomes sensible to rewrite existing applications to incorporate parallelism.
  91. | is the ultimate parallel operator by kruhft · · Score: 1

    Here's a simple example on how to get a video rendering distributed over 4 processors from a single command line:

    capture-frame | scale-and-adjust-brightness | apply-effects | compress-to-jpeg > frame-00001.jpg

    Each of the above commands could be simple one line scripts that encapsulate the required utilities (which in this example would be ImageMagick or netpbm calls). You can also distribute the processing over a cluster using rsh or ssh quite easily, with the pipe'd data flowing over the network connections...

    Unix gave us the solution for parallel programming over 30 years ago (at least for certain types of high computational batch processing operations) and the wheel keeps getting reinvented over and over and over again. By learning a bit of shell script you can easily take advantage of the 4+ core CPUs that are coming out in the future without installing other than a linux distribution.

  92. Exactly by lennier · · Score: 1

    All of the parallel programming paradigms we've seen so far just hurt my head in a 'but but that's not the Right Thing' kind of way. I'm not sure what the Right Thing to do is, but I'm sure multithreading ain't it, and even Haskell strikes me as overcomplicated for what ought to be a very simple solution if we just looked at it a little differently.

    I think we need immutability and instruction-level parallelism at least, just to get halfway sane, and then a few new abstractions on top of that. The idea of 'views' is something that keeps circling around my head, and I'm trying to tease my brain into explaining what it means on my Livejournal - but as a first cut, I think Occam and Carl Hewitt's 'Ether' (and to a lesser extent, the Japanese Fifth Generation Project's KL-1) were heading toward the right track.

    Of course, I don't have a formal CS background, so I may be just gibbering incoherently, but words are cheap and this stuff sure is fun to dream about.

    --
    You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
  93. Make that livejournal.com... by lennier · · Score: 1
    --
    You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
  94. Re:JAVA SUCKS!!! by IdeaMan · · Score: 1

    Neither the idiom.com link nor you get it.
    Java is perceived as slow because it starts up slow.
    All those fancy benchmarks aren't including startup times, which is what the user sees as slow.
    Humans are all about first impressions, and startup time for a java app IS the first impression.
    And if its Java on the web wow does is take painfully long for the JVM to load.

    --
    They ARE out to get you simply because They are in it for themselves and they don't care about you.
  95. I've actually heard of three of those... by jonadab · · Score: 1

    That list doesn't make sense. In the first place, most of the entries are not so well-known as to really deserve a mention. In the second place, some are languages (e.g., Java) and others are APIs provided by operating systems (e.g., Windows threads). Code written in Java might use Windows threads when run on the Windows platform, or the same code might use some other underlying mechanism when run on another kind of platform, which really after all is the major point of using a platform-independent language.

    Also, I can't believe POE was left off the list ;-)

    --
    Cut that out, or I will ship you to Norilsk in a box.
  96. Wrong. by ToasterMonkey · · Score: 1

    You've got it back asswords.

    It's:
    1) Make a cheaper clone of someone else's higher quality product, and charge only %15 percent less.
    2)
    Make a cheaper yet clone of someone else's quality product, and charge half.
    3)
    Profit. Most of the market is confused by all the products that "do the same thing, but cost twice as much" so "high quality" becomes "they must charge more for the brand name". Brand names get the margins, mass market manufacturers get the glory.
    ...
    4
    ) Taken aback by all this, you swig the last of your "Mountain Lightning" and slam down the lid on your Inspiron laptop. Using the dim glow of your Magnavox HDTV you make your way to bed, deftly dodging piles of debris. You rest your head on a warm heap of soiled clothes, and let the humming drone of your Xbox 360 lull you to sleep. "In a couple of weeks, I'll have enough money to buy Halo 3", you quietly console yourself.

    Good Night.

  97. Re:JAVA SUCKS!!! by NoOneInParticular · · Score: 1
    There's lies, damned lies, statistics and then there are benchmarks. Oh yes, java can indeed run as fast as C, and even theoretically jump ahead of it, but only if you restrict yourself to that subset of Java that it has in common with C. So no structures, only primitive data type fiddling, using arrays of primitives only.

    Why this? Simply for one reason given in the article: cache misses. A java class comes with a 8 byte per instance overhead (16 bytes if it can be serialized), which means that less stuff will fit in the cache. Yes, a non-conservative garbage collector can improve locality of the data by putting things together in ways that C never can, but especially for numerical stuff, it will effectively halve the cache size or worse by insisting on carrying runtime type information everywhere. Ever compared the speed/memory of a Complex class with manually fiddling with the real and imaginary parts? The difference is shocking.

    Until Java gets some decent structure support (a collection of primitive data items without any overhead, plus preferably operator overloading on just such structures), Java for high-performance numerical computation will be stuck in the pre-C days of abstraction.