Slashdot Mirror


Is Parallelism the New New Thing?

astwon sends us to a blog post by parallel computing pioneer Bill McColl speculating that, with the cooling of Web 2.0, parallelism may be a hot new area for entrepreneurs and investors. (Take with requisite salt grains as he is the founder of a Silicon Valley company in this area.) McColl suggests a few other upcoming "new things," such as Saas as an appliance and massive memory systems. Worth a read.

174 comments

  1. About time by olddotter · · Score: 4, Funny

    When I was in graduate school in the mid '90's I thought Parallelism would be the next big thing. Needless to say I was a bit early on that prediction. Finally maybe those graduate classes and grant work will pay off. :-)

    1. Re:About time by UbuntuLinux · · Score: 0, Funny

      As a user of Linux, I have to say the Parallelism is the 'old thing', as Linux has supported parallel operations for over a decade. Compare this to closed source, proprietary operating systems, such as Windows, where this sort of thing is relatively new.

      I remember back in the late 90's writing some kernel modules for Linux, I was astounded by how easy it was. Even though my CPU at the time only had a single core, the power of Linux allowed it to execute more then one code stream at a time. When attempting the same thing on a closed source, properietary operating system, things were much more difficult. This is yet another reason for people to support open source software - it is through the contributions of the general public that Linux has grown so vastly superior to every other mainstream operating system in this regard, and just about every other.

      Microsoft are literally shitting themselves about Linux, and articles like this really drive it home.

    2. Re:About time by pleappleappleap · · Score: 5, Informative

      As a user of Linux, I have to say the Parallelism is the 'old thing', as Linux has supported parallel operations for over a decade. Compare this to closed source, proprietary operating systems, such as Windows, where this sort of thing is relatively new.

      Windows is not the only closed-source proprietary operating system out there. AIX and Solaris have supported parallel functions for a number of years, and various IBM mainframe operating systems have had those functions since the '70's. There are architectures which had it in the '60's.

      Proprietary closed-source operating systems had these functions FIRST before Linux was a twinkle in Linus Torvalds's shorts.

    3. Re:About time by Anonymous Coward · · Score: 1, Interesting

      >> Compare this to closed source, proprietary operating systems, such as Windows, where this sort of thing is relatively new.

      Windows NT supports multiple processors since 1993.

      >> When attempting the same thing on a closed source, properietary operating system, things were much more difficult.

      Multithreading in the past had better support on closed OS like Windows NT and BeOS than you had in the first releases of Linux kernel (where you were stuck with a user-mode threading scheme).

      Rule #1 : Windows/Microsoft are shitty enough on their own. No need to invent stuff just to make them appear worse than they are.

    4. Re:About time by Anonymous Coward · · Score: 0

      An excellent troll - people who understand technology will be annoyed, and Linux fanboys will rabidly defend your comment. Well done, sir!

    5. Re:About time by drooling-dog · · Score: 1

      When I was in graduate school in the mid '90's I thought Parallelism would be the next big thing. Needless to say I was a bit early on that prediction. Had a company in the early 90s dedicated to heterogeneous parallel computing in what we now call genomics and proteomics. Despite the ongoing boom in DNA sequencing and analysis, it was hard at the time to interest either end-users or (especially) investors in distributed processing. Most worried that it was overkill, or that the computations would somehow be out of their control. How times change...
    6. Re:About time by rbanffy · · Score: 1

      Parallelism is the new new thing since at least around the ILLIAC IV...

    7. Re:About time by Gerzel · · Score: 4, Funny

      "Proprietary closed-source operating systems had these functions FIRST before Linux was a twinkle in Linus Torvalds's shorts."

      Do not mock the shorts of Torvalds, for they are mighty indeed!

    8. Re:About time by jc42 · · Score: 3, Insightful

      When I was in graduate school in the mid '90's I thought Parallelism would be the next big thing.

      When I was in grad school back in the 1970s, people thought parallelism would be the next big thing, and it had some interesting technical challenges, so I got into it as much as was possible back then. Then I got out into the Real World [TM], where such ideas just got blank looks and "Let's move on" replies.

      Some what later, in the 1980s, I worked on projects at several companies who thought that parallelism was the next big thing. That time around, I got my hands on a number of machines with hundreds of processors and gigabytes (Wow!) of memory, so I could actually try out some of the ideas from the previous decade. The main things that I learned was that 1) many of the concepts were viable, and 2) debugging in an environment where nothing is reproducible is hard. And I moved on, mostly to networking projects where you could actually do loosely-coupled multiprocessing (though management still gave you blank looks if you started talking in such terms).

      Now we're getting personal computers with more than one processor. It's been a bit of a wait, but we even have management saying it's the "new^N thing". And debugging parallel code is still hard.

      I'll predict that 1) We'll see a lot of commercial parallelized apps now, and 2) those apps will never be debugged, giving us flakiness that outshines the worst of what Microsoft sold back in the 1980s and 1990s. We'll still have the rush to market; developers will still be held to nonsensical schedules; debugging will still be treated as an "after-market" service; and we developers will still be looking for debugging tools that work for more than toy examples (and work with a customer's app that has been running for months when a show-stopper bug pops up).

      There's a reason that, despite the existence of multi-process machines for several decades, we still have very little truly parallel code that works. Debugging the stuff is hard, mostly because bugs can rarely be reproduced.

      (Of course, this won't prevent the flood of magical snake-oil tools that promise to solve the problem. There's a lot of money to be made there. ;-)

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    9. Re:About time by ChrisA90278 · · Score: 2, Interesting

      I was a systems programming on the CDC6400. This at one time was the world's fastest super computer and was released in 1964 (hence the model number.) I'm not that old. The machine was old when I worked on it. I did patches and custom modification to the operating system. We worked in asembly language so I did have to know the gory details of the hardware.

      It was a highly parallel machine. At every level. It could execute 10 instuctions at once. There was a 10 way path to main memory so we could do 10 store or fetches at once. Some machine had multiple CPUs and all machine had at least 10 PPUs, there were smaller CPU where most of the operating system actualy ran keepping the main CPu free for user level tasks.

      To this day I've not seen this level parallelsm. Ok the old Pentium had a long pipeline and Sun will sell you an 8-core SPARC but still nothing compared to the old CDC machines

      The wiki article below has some details wrong but the ideas are describbed well. The machine was built at a time when electronics tachnology had hit a wall and couldn't be had faster. They had already gone to extreams like giing up on water cooling to use freon cooling where the refridgerent was plumbed directly into the guts of the CPUs card guides. The only option to go faster was parallelium. I think we wil see this again as we hit a wall with IC technology
      http://en.wikipedia.org/wiki/CDC_6600

  2. Let me know when I can buy by geekoid · · Score: 2, Insightful

    32G chips and put them in 4 slots on my 64 Bit PC before talking about 'massive memory'

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    1. Re:Let me know when I can buy by asliarun · · Score: 1

      32G chips and put them in 4 slots on my 64 Bit PC before talking about 'massive memory' Can't you already do that with a server motherboard? Even if you're looking for a PC, Skulltrail supports gobs of RAM and 8 cores.
      On the server side, Intel is coming out (soon) with Dunnington, which will be a 6-core single-die CPU with a monster cache... AND you can put 4 of them on a motherboard, giving you a 24-core machine. Then, you can also get custom workstations (Tyan?) that support multiple motherboards in a single box with a high speed interconnect. This is only going to get better when CSI/QPI gets released later this year, and in a couple of years, Larrabee (large number of simple cores).

      In my opinion, the benefits of parallelism can be more easily extracted at the VM or OS level, rather than at the application level. If you see how programming is evolving, it is clear that low level implementation details are increasingly being made transparent to the programmer. Heck, they're even abstracting out your CPU and application processes and instead using platform virtual machines (JVM/CLR) and application domains. After all this, it just doesn't makes sense to have programmers start coding/optimizing for multiple cores. You might as well ask them to write in assembly (however studly it may be).
    2. Re:Let me know when I can buy by billcopc · · Score: 1

      Truth.

      Actually it would be so much easier if we just had more than 4 slots. I don't want to be stuck in "server land" and their smorgasbord of crap boards, just for the privilege of running a high memory PC.

      --
      -Billco, Fnarg.com
    3. Re:Let me know when I can buy by denisfalqueto · · Score: 1

      I can't agree with you about virtual machines easing the making of parallel programs. There is nothing they can do to make a multi-threaded program correct if the programmer is sloppy. When you talk in parallelization in applications, you are almost likely talking of threads and the inherent problem about them is the sharing of state (data) between two or more threads. This will require synchronization and it is not a straightforward reasoning to get. And it is solely on the shoulders of the programmer, not the runtime or the language.

      --

      Nothing has been proved

    4. Re:Let me know when I can buy by Sancho · · Score: 2, Insightful

      I agree that parallelism is more easily (and transparently) used at the OS level, but that doesn't mean that we don't need to start moving that way in applications, too. As we move towards a point where extracting more speed out of the silicon becomes harder and harder, we're going to see more and more need for parallelism. For a lot of applications, it's going to be irrelevant, but for anything at all CPU intensive (working with video, games, etc.) it's going to eventually be the way of the future.

    5. Re:Let me know when I can buy by pleappleappleap · · Score: 1
      Get more slots.

      Seriously.

      I've had a machine that could take that kind of memory size for almost ten years.

    6. Re:Let me know when I can buy by adisakp · · Score: 1

      32G chips and put them in 4 slots on my 64 Bit PC before talking about 'massive memory'

      "Massive Memory" refers to memory density where it's appropriate to use memory for applications that used to require a hard drive and then hard drives are used for long term storage only. This isn't meant for your daily PC. The current state of technology typically uses specialized rack-mount clusters of dozens or hundreds thin blades where each blade might have 16-64G of memory on standard 4 GB ECC Dimms with 8 memory slots and the combined memory supports a coherent structure (i.e. an in memory distributed file system). This is great for speeding up disk-based large databases by orders of magnitude.

      "Massive Memory" is not just practical. It is here today and chances are that you (a slashdot readers) have benefitted from this development today already -- you see, one great example of using "Massive Memory" as a file system is Google.

  3. TRIPS by Bombula · · Score: 3, Interesting

    Someone in another recent thread mention the TRIPS architecture. It's quite interesting reading.

    --
    A-Bomb
    1. Re:TRIPS by The+Living+Fractal · · Score: 2, Interesting

      TRIPS and EDGE are interesting approaches to parallel processing. The thing is, data interdependency is going to make execution speed remain as the trump card for computing. That is to say: you cannot parallelize an algorithm that requires step-by-step completion. EDGE simply identifies, at the compilation level, what parts of a program can be parallelized, based on interdependencies, and then it creates the program based on this in the form of 'hyperblocks'.

      If each subsequent step is dependent on the previous step then this by nature makes the program impossible to parallelize. So what we're most likely going to find out is that we'll hit the 'wall' of parallelization in programs in a relatively short period and be back to the familiar place: increasing the clock speed.

      --
      I do not respond to cowards. Especially anonymous ones.
    2. Re:TRIPS by olddotter · · Score: 0

      You are making that assumption by only considering "small window" compile time parallelism. But if we train the developers correctly (I know, I know, why start doing that again, we haven't for decades) then looking at software design at a high level and designing parallelism into the software architecture from the beginning; it should be possible to reach better performance on many different types of applications.

      M$ made it easy to use low skilled developers to write (barely) passable software. But I think if parallelism takes off, it will separate the "men from the boys" in the software development space. Given the 4, 6, and 8 core processors around today I see no reason that parallelism will not become important, at least in areas where speed matters.

    3. Re:TRIPS by The+Living+Fractal · · Score: 3, Interesting

      I certainly agree with your post from a system-level perspective of abstraction. I.E. if we design it into the system at every level, from hardware up through the layers of abstraction to software and the OS, then we will see the largest possible gain from parallelization. Computers will be able to utilize hundreds, thousands or millions or more 'micro-cores' to perform complex tasks faster than ever before.

      I guess my point is that I think we'll actually create the basic, expandable model fairly quickly. Would you agree that today's supercomputing, which utilizes parallelization on a scale far beyond desktop computing, has successfully harnessed parallelization? I hope you would. If so, then the next step is miniaturization of what supercomputing is already doing. That step is just now taking place. It's not something that will happen overnight, but I do think that after we've fully integrated parallelization into everyday computing we'll be back to the same old game again: that of looking for ever better ways to increase FLOPS through transistor/switch speed.

      My basic thoughts on this are that it is, in theory, easier to model the perfect parallelization of a program, and the optimum number of cores for a specific type of computer, than it is to model the fastest possible clock speed of a CPU. Because of this we'll probably see diminishing returns in advancement of parallelization at an accelerated rate compared to CPU design and clock speed.

      --
      I do not respond to cowards. Especially anonymous ones.
    4. Re:TRIPS by Howlett · · Score: 1

      I have recently been reading a series of articles here and here regarding the multi-core parallel programming problem. The guy seems like he could be a little out there on the edge, but his concept for the COSA project, and fine grain parallelism seem really attractive to me. I have been thinking about trying to implement a COSA virtual machine to try it out.

      I have also been thinking about trying to implement the COSA hardware in an FPGA, but that seems like a much harder project

    5. Re:TRIPS by olddotter · · Score: 2, Insightful

      Unless we are going to multi-cores because increasing clock rate is getting hard to do.

      I don't think "supercomputer" approaches (which I admit I think of as the same as "massively parallel scientific computing") are applicable to most applications today. Exceptions might be video, picture, and audio editing; and maybe certain types of database operations. If you have other examples I'd be most interested in hearing about them.

    6. Re:TRIPS by The+Living+Fractal · · Score: 1

      I guess to sum it up in a sentence: Any process that allows arbitrarily ordered manipulation or processing of a dataset can benefit from parallelization.

      Multimedia and database applications are foremost in my mind, followed by applications which need to establish some form of intelligent interface with the user, such as the operating system GUI and games. These forms of processing are already receiving the multi-core parallelization treatment. Incorporating more cores is not that difficult, and it will be done as needed, but for most people it simply won't be needed and the cost will outweigh the benefits.

      --
      I do not respond to cowards. Especially anonymous ones.
    7. Re:TRIPS by sainttX · · Score: 1

      IMHO, What really MATTERS is, We do NOT know how to program efficiently with multicores, which in current phase, stands for most of the parallel platforms. We do have parallel applications, BUT, they are painful to design and implement, and they are running on mainframes or clusters. They are written once, by specialists. If we want a world of parallel machines and programs, MAKE THE PROGRAMMING MODEL SUITABLE. Make programming easy, with fine grained parallel, not just dispatching processes to cores, but making one process running on many cores WITH EASY PROGRAMMING.

    8. Re:TRIPS by The+Living+Fractal · · Score: 1

      That's what EDGE and the TRIPS systems are all about. Easy programming, hard compiling. In other words, why should we retrain everyone in parallel programming if you can achieve the same result much easier with specialized compiling? Sure, the instruction set of TRIPS is different than x86, but then you have a whole level of abstraction above that with the programming language that can be very similar to how you do it today. There will be some fundamental differences but they won't be gamebreaking. You wouldn't have to relearn everything, far from it.

      --
      I do not respond to cowards. Especially anonymous ones.
    9. Re:TRIPS by olddotter · · Score: 1

      Gaming companies have been claiming they are having trouble with the 8-cores in the PS3. I think that comes from lack of experience and that the gaming engines haven't been designed to take advantage of multiprocessor systems before.

  4. 1% of programmers by LotsOfPhil · · Score: 4, Insightful

    Only around 1% of the world's software developers have any experience of parallel programming.

    This seems far, far too low. Admittedly I work in a place that does "parallel programming," but it still seems awfully low.
    --
    This post climbed Mt. Washington.
    1. Re:1% of programmers by LotsOfPhil · · Score: 1
      Sigh, replying to myself. The source for the 1% figure is a blog of someone at Intel:

      A more pressing near-term problem is the relative lack of experienced parallel programmers in industry. The estimates vary depending on whom you ask, but a reasonable estimate is that 1% (yes, that's 1 in 100) of programmers, at best, have "some" experience with parallel programming. The number that are experienced enough to identify performance pitfalls across a range of parallel programming styles is probably an order of magnitude or two fewer.

      Still open to debate.
      --
      This post climbed Mt. Washington.
    2. Re:1% of programmers by PhrostyMcByte · · Score: 1

      Perhaps they meant it as in "specifically designing to scale up", as opposed to a developer who just uses a thread to do some background processing.

      One thing that's always saddened me is that most embarrassingly parallel problems like web and database development are still in the dark ages with this. They have so much potential, but almost nobody seems to care. To date the only frameworks I know of that allow fully asynchronous efficient processing of requests and database queries (so that you don't need to spawn a new thread/process for every request) is ASP.NET, WCF (SOAPish stuff in .NET), and some of .NET's database APIs. Does anyone know of any non-MS web technologies that allow this?

    3. Re:1% of programmers by Shados · · Score: 2, Interesting

      I'd be sceptical of the source of the information too (Intel's blog as you posted), but that doesn't seem that low to me...

      The entire hierarchy system in the IT fields has to deal with the painfully obvious fact that less than 1% of programmers know what they're doing: that is, in an ideal scenario, everyone would know what they're doing, and you'd have a FEW hardcore computer scientists to handle the nutso theoritical scenarios (most parallel programming for example can be done with only basic CS knowledge... like, let say, trimming all of the strings in an array...everyday stuff). But thats not how it works: In the current world, you usually have a few douzan coding monkeys with some understanding of the theory (but no clue how to use it), and a few software architects who call the shots (Note i'm talking about software architects...those that work on software design, not system architects).

      In an ideal world where programmers know how to do the -basics- of their job, software architects would be an obsolete job, yet they're really not.

      Now, thats a side note, but my point is that the typical IT shop hierarchy is MADE with the "all programmers suck" in mind...so it really has to be a problem, and thus the 1% number isn't far fetched.

      As for anecdotal evidence... I'm a .NET and Java dev, and those languages, while it could be better, make parallel programming relatively simple (at least, it is definately within the grasp of a code monkey). Yet, I have -never ever ever-seen any async/parallel code in anything but my own code, everywhere I worked (and I'm doing consulting, so I worked in a lot of places in a short amount of time).

      The closest to parallel I've seen was people using a queue dispatcher (MSMQ) and have multiple triggers watching the same queue, thus resulting in some kind of parallel execution... thats it though.

      So, 1% from my point of view actually seems pretty -high-, as sad as it is.

    4. Re:1% of programmers by BotnetZombie · · Score: 1

      You don't even need to work in a place that does parallel programming to find that number low. It may also depend a bit on the programming languages used. I don't know many people that are good at C++ multithreading, while the majority of Java devs I know have at least some experience with it. That's not to say all of them are good, but many are - at least a much higher portion than 1%.

    5. Re:1% of programmers by postbigbang · · Score: 2, Insightful

      Your number is a bit insulting.

      Consider that parallel computing means keeping extra monolitic cores busy. There are a number of programmers that need the discipline to know how to spawn, use, and tear down threads to keep them busy. But there are a helluva lot of them that plainly don't need to know. What we lack are reasonable compilers that allow the hardware layer to be sufficiently abstracted so that code can adapt to hardware infrasturcture appropriately. If that doesn't happen, then code becomes machine-specific rather than task-specific/fulfilling. If an app is written, then it should be able to take advantage of parallelism, and the plumbing should take care of the substrate, be that substrate a core-duo, or 64 cores and more, perhaps on separate systems with the obvious latencies that distance might inject.

      Those layers are only nominally addressed in operating systems, which should be the core arbiter of how parallelism can be manifested to an application instance. It's up to the kernel makers to figure out how to take advantage and make that advantage useful to applications writers-- who should be at least knowledgable about how to twig those features in the operating system. But app writers needn't have to know all of the underlaying differential to write flexible code.

      --
      ---- Teach Peace. It's Cheaper Than War.
    6. Re:1% of programmers by Otter · · Score: 4, Insightful
      Admittedly I work in a place that does "parallel programming," but it still seems awfully low.

      I think your experience is wildly skewed toward the high end of programming skill. The percentage of working programmers who can't iterate over an array is probably in the 15-20% range, even without getting into whether "web programmers" are included in that statistic. I'd be astonished if the number with parallel experience is significantly above 1%.

    7. Re:1% of programmers by AKAImBatman · · Score: 2, Insightful

      In an ideal world where programmers know how to do the -basics- of their job, software architects would be an obsolete job

      Not really. The structure of a large system still has to be defined by someone. The key difference is that the architect would get a lot more feedback from his team, and could possibly even farm out high-level pieces of the design to be further architected by other developers.

      I'm a .NET and Java dev, and those languages, while it could be better, make parallel programming relatively simple (at least, it is definately within the grasp of a code monkey). Yet, I have -never ever ever-seen any async/parallel code in anything but my own code, everywhere I worked (and I'm doing consulting, so I worked in a lot of places in a short amount of time).

      That's because parallel code is the job of the J2EE or IIS server. Programmers develop modules that are loaded by the app server and run asynchronously. Granted, things are divided along he lines of one connection == one thread (though some app servers use poll/select for more granular control), but that's good enough to where systems like Sun's T1 "Niagara" processor can churn through a web load WAY faster than the single-threaded monstrosities we've been using to date.

      And before you try to tell me that "application servers don't count", ask any parallel computing researcher if he thinks the threaded programming model is a good idea. You'll almost always get a resounding, "NO". Most of the parallel computing folks I've spoken with rave on and on about lambda and the inherent parallel nature of lambda functions.

      The thing is, once parallelism takes off (if one can reasonable argue that it hasn't already), coding will be more about creating parallelizable modules rather than creating threads. The theory will be that the platform running the modules knows more about its resources and how to balance them than the code does. So by exposing areas where parallelism can occur, a language exposes the opportunity to split execution across many processors.

      Let's take an ideal example: Let's say you create a raytracing function to cast a ray. Well, that function is inherently parallel in nature. All you need is to map a list of rays to the function and let the platform work out how to balance that function across many processing units.

      A slightly less ideal (yet still parallelizable) example is collision detection in a video game. Collision detection is a matrix of objects that can interact. In general, that means that you want to test two objects against each other to see if they have collided or not. If they have, trigger an event to update the state of those objects. (e.g. explode, reverse direction, etc.) Once again, you can have a collision function that takes two items and works out if they have collided or not. A very parallelizable situation. Even firing any resulting events can be done in parallel, as long as the platform is careful not to dispatch multiple events on the same object in parallel. (That creates an out-of-order code issue which can be a bit tricky to resolve.)

      Long story short: Parallelism is hard; expect the solution to be as invisible as possible.
    8. Re:1% of programmers by AKAImBatman · · Score: 2, Interesting

      To date the only frameworks I know of that allow fully asynchronous efficient processing of requests and database queries (so that you don't need to spawn a new thread/process for every request) is ASP.NET, WCF (SOAPish stuff in .NET), and some of .NET's database APIs.

      How do you see that as different from what Java J2EE does? Most J2EE servers these days use pools of threads to handle requests. These threads are then utilized based on poll/select APIs so that one thread can handle many requests depending on the availability of data. Database connections are similarly pooled and reused, though any optimization on the blocking level would need to be done by the JDBC driver.
    9. Re:1% of programmers by Anne+Thwacks · · Score: 5, Insightful
      I'd believe 1% as having "some experience". Some experience is what you put on your CV when you know what the buzword means.

      If you ask how many can "regularly achieve significant performance through use of multiple threads" then 0.1% is far too high. If you mean "can exchange data between a userland thread and an ISR in compliance with the needs of reliable parallel execution" then its a safe bet that less than 0.1% are mentally up to the challenge. /. readers are not typical of the programming cummiity. These days people who can drag-and-drop call themselves programmers. Poeple who can spell "l337" are one!

      --
      Sent from my ASR33 using ASCII
    10. Re:1% of programmers by Shados · · Score: 1

      Not really. The structure of a large system still has to be defined by someone. The key difference is that the architect would get a lot more feedback from his team, and could possibly even farm out high-level pieces of the design to be further architected by other developers.


      Note I said software architect, and I specifically stated I was not talking about system architects. Big difference between the two.

      And yes application servers DO count. But during one connection, there's a LOT of things that can be split... Especially in these days of clouds and SOA. All the waiting on web services, all of the waiting on databases...its all time wasted. Its fairly simple. Start a worker thread with a callback. Bing bang poof. Sure, its not as ideal as parallelising a functional call, but it is simple, within the grasp of code monkeys, its clean, and it can make a 1 second request become a 0.3 second request.

      My point was: parallelism in complex, scientific scenarios is hard. Parallelism in simple, everyday business applications for simple tasks is simple and is where you'll get one of the biggest bangs for your buck, and programmers should at least know the basics of it, to handle these basic scenarios. We're not talking about micro-optimisations here, we're talking a few lines of code to gain a 20-30% in a standard everyday business app just by doing work during idle time and splitting off obviously independent processes.
    11. Re:1% of programmers by AKAImBatman · · Score: 1

      Note I said software architect, and I specifically stated I was not talking about system architects. Big difference between the two.

      Not really. A software architect represents a division of labor between the guys who build the hardware and the guys who build the software. The software architect obviously deals with the software aspect of the system (and when I say system, I mean a complete, large-scale application) and is thus responsible for how the code will be organized and constructed. You simply can't do away with that leadership aspect.

      But during one connection, there's a LOT of things that can be split... Especially in these days of clouds and SOA. All the waiting on web services, all of the waiting on databases...its all time wasted.

      Modern systems tend to work on poll/select rather than outright blocking the thread. If the thread is blocked, the system keeps itself busy doing other things.

      Start a worker thread with a callback. Bing bang poof.

      Welcome to AJAX 101. Obviously, there are inherent difficulties in running event handlers in an HTTP Request/Response. That's why we're pushing some of the parallelism to the client. By making many smaller calls, the application can provide a fully parallel experience to many clients, keeping both the client and the server busy performing useful work.
    12. Re:1% of programmers by pleappleappleap · · Score: 1

      Oracle and DB2 have done it for quite a long time. It wouldn't surprise me if PostgreSQL could do it too.

    13. Re:1% of programmers by PhrostyMcByte · · Score: 1

      How do you see that as different from what Java J2EE does? Most J2EE servers these days use pools of threads to handle requests. These threads are then utilized based on poll/select APIs so that one thread can handle many requests depending on the availability of data. Database connections are similarly pooled and reused, though any optimization on the blocking level would need to be done by the JDBC driver.

      I've never used Java/J2EE before so I couldn't say.

      .NET uses a per-operation callback to notify the app of I/O completion - it doesn't expose whatever internal mechanism it uses to achieve async, so the server choose the most efficient method (iocp, epoll, kqueue, how many threads, etc.). If you use SQL Server, DB queries can be done async too. If you do it right in many cases you can keep from ever blocking on I/O.

    14. Re:1% of programmers by gladish · · Score: 1

      Define "parrallel programing". Behind "realtime", I think "parallel programming" is the most overloaded term in the computing industry. For me, I consider "parallel progamming", pvm, mpi and other similar technologies. I think others will consider plaing old multi-threaded programming parallel programming. When these guys talk about the new new thing, I'm not sure if they're talking about the HPC market sort of opening up to the consumer (albeit packed up nicely) or are they just suggesting that new apps use the multi-core processors better?

    15. Re:1% of programmers by Anonymous Coward · · Score: 0

      I'm not a programmer myself but i know how to do this very well.It seems ridiculous.

    16. Re:1% of programmers by Otter · · Score: 1
      If you ask how many can "regularly achieve significant performance through use of multiple threads" then 0.1% is far too high.

      I was thinking more along the lines of "learned something about parallelism in a CS class and remember having done so, although not necessarily what it was".

    17. Re:1% of programmers by Ambidisastrous · · Score: 1

      And then there's the confusion of "parallelism" versus "concurrency".

      I think when industry folks talk about parallel computing as an area for growth, they first mean finding foolproof ways to automatically dice up sections of imperative code for parallel computation, in order to make better use of multiple cores. The problem they're trying to solve is taking a mountain of existing C++ or Java code and coaxing it into using all the hardware available. New programming languages can make it easier, and so can MPI et al, but that still puts a huge burden on software companies with existing sequentially-coded apps to support. So, we're seeing OpenMP, Threading Building Blocks, etc. to make that part easier, and presumably there's a lot more room for improvement and even entrepreneurship.

      As for offering a nicely packaged HPC product to consumers, I don't have any idea of how you'd do do/market that -- perhaps the author of TFA does, and that's why he has a startup company and I don't. But maybe the idea is to actually blur the distinction between real HPC and behind-the-scenes multi-processor computation on networked consumer/business machines. We'll see...

    18. Re:1% of programmers by guaigean · · Score: 1

      If you ask how many can "regularly achieve significant performance through use of multiple threads" then 0.1% is far too high. Add MPI or distributed parallel processing, and I would guess that number drops even lower. This is not a trivial topic, and for many years, just wasn't necessary. During the clock speed wars it was a non issue for most software, but with clock speeds capping out and core counts on the rise, I think we will see a large shift to this way of doing things in years to come. Most programmers follow the way of necessity, and that is what it will become.
      --
      Microsoft Sucks, F/OSS Rocks. I get mod points now right?
    19. Re:1% of programmers by Anonymous Coward · · Score: 0

      1% seems generous to me. In my previous job, we advertised for parallel programmers frequently and were able to hire TWO who could "walk the walk" based on ~1200 screened resumes and telephone interviews. Now this is not to suggest that the average programmer can't accomplish modest parallelism for a limited number of computationally intensive tasks -- most can. The problem is that very few seem to be able to make the leap which allows for truly scalable solutions.

    20. Re:1% of programmers by Anonymous Coward · · Score: 0

      No kidding... and you have to rob a national lab to find people with real experience.

    21. Re:1% of programmers by nick_davison · · Score: 1

      These days people who can drag-and-drop call themselves programmers. Poeple who can spell "l337" are one! What about people who can consistently spell people? ;)
    22. Re:1% of programmers by grahamd0 · · Score: 1

      The percentage of working programmers who can't iterate over an array is probably in the 15-20% range, even without getting into whether "web programmers" are included in that statistic.

      As a "web programmer", I find that statistic really hard to swallow. I've never met any professional developer who couldn't iterate over an array. Do you have anything, even anecdotal evidence to support that?

      Unless by "web programmer" you're including anyone who ever took a class on Dreamweaver.

    23. Re:1% of programmers by owlstead · · Score: 1

      These days people who can drag-and-drop call themselves programmers. Poeple who can spell "l337" are one! Well, "l337" is a language isn't it? At least they know how to use one language. Some poeple on the other hand don't know even how to spell in English :^P
    24. Re:1% of programmers by Otter · · Score: 2, Funny
      Do you have anything, even anecdotal evidence to support that?

      Conveniently, the DailyWTF steps in to provide some anecdotal evidence:

      When I showed my lead the old code and the new, he responded, ah, that must have been Jed Code; yeah, he really hated anything that had to use arrays or loops, he couldn't see the point of them ... I think each month he would uncomment the next month and redeploy the application
      In fact, I've encountered quite a few programmers (whom I don't hire, so don't blame me) who don't understand anything past variable assignment and flow control. I also know that the people who do hire programmers routinely ask the most basic questions about iteration and weed out quite a few candidates that way.

      Incidentally, I didn't mean to denigrate web developers, who come in great, good, adequate and DailyWTF, just as everyone else in IT does. But I'd be surprised if including them in "developers" didn't further drive down the percentage with experience in parallelization.

    25. Re:1% of programmers by ShakaUVM · · Score: 1

      Was just at a MATLAB seminar yesterday Phrosty, and it has reasonably transparent support for embarassingly parallel and data-parallel operations. For other stuff, it just falls back to MPI (using some lightweight wrappers around it which mainly just take care of counting how large the arrays you're sending are).

      I think it might be worth a slashdot poll to see how many programmers have experience working with threads or MPI. My guess is a lot higher than 1%, especially given how prevalent Java is these days. Numbers of people proficient with MPI or PVM could be pretty low, but that's normally the bar to say that you work in high performance computing.

    26. Re:1% of programmers by david.emery · · Score: 1

      Just about anyone who learned Ada has written tasking programs, even if they're just little toys to learn the syntax for creating tasks and synchronizing them using rendezvous. That's a form of concurrency, based on MIMD. And it's one with substantial (25 years) experience in usage and implementation (as I mentioned in another post on this thread.)

      On a related note, Ada facilitated a lot of the work on scheduling in the late 80s, such as Rate Monotonic, by providing a solid, well-defined, easy-to-use notation for concurrency that allowed people to quickly sketch out a problem (often explaining why they didn't like this feature or that feature of Ada), and then concentrate on a solution for that problem.

      dave

  5. Performance is the feature, Parallelism the means by tjstork · · Score: 1

    Parallelism is just a means to a business feature - performance. If clients want it, then there will be capital for it. If they don't, then it won't matter to them.

    --
    This is my sig.
  6. Re:ACtually by garett_spencley · · Score: 3, Funny

    Paul ?

    Paul Otellini ?

    I didn't know you posted on slashdot !

    So what's up man ? Can I buy you a beer ?

  7. evolution, not revolution by nguy · · Score: 5, Insightful

    the guy has a "startup in stealth mode" called parallel computing. Of course he wants to generate buzz.

    Decade after decade, people keep trying to sell silver bullets for parallel computing: the perfect language, the perfect network, the perfect os, etc. Nothing ever wins big. Instead, there is a diversity of solutions for a diversity of problems, and progress is slow but steady.

    1. Re:evolution, not revolution by SanityInAnarchy · · Score: 1

      It looks to me more like progress is completely stalled.

      I mean, yes, there are all kinds of solutions. Most of them are completely unused, and we're back to threads and locks. Nothing's going to be perfect, but I'll buy the "no silver bullet" when we actually have wide adoption of anything -- even multiple things -- other than threads and locks.

      --
      Don't thank God, thank a doctor!
    2. Re:evolution, not revolution by jd · · Score: 1
      There are a whole host of factors that are involved in the deaths of startups and the deaths of parallel technologies. I'm going to have to be careful, for NDA reasons, but here are some I have personally witnessed. These are not from the same company and I've not included anything that could identify the companies concerned. This list is intended for the purposes of showing why companies in general are often so unsuccessful, as there's no way I happened to witness wholly unique circumstances in each such company.

      • Sales people replacing engineers for engineering duties
      • Falsifying technical documentation
      • Refusal to sell products to paying customers
      • Refusal to consult with customers on what they wanted
      • Presenting falsified data to venture captialists
      • Falsifying personnel records
      • Bribing news media
      • Falsifying server logs

      All these practices are commonplace. Not even just in startups. I've seen them in multinational corporations, too, and the results are usually the same - managers get rich, projects get cancelled, divisions/startups get scrapped. This is why I posted in an earlier discussion on Motorolla that the people who are most likely to have the vision needed to succeed are the people least likely to have any position that would allow them to do anything with that vision. Technically and socially competent people are never managers.

      --
      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)
    3. Re:evolution, not revolution by nguy · · Score: 1

      Most of them are completely unused

      People write parallel applications all the time, for gaming, multimedia, science, engineering, control systems, artificial intelligence, etc.

      and we're back to threads and locks.

      Threads and locks are a useful low-level primitives on multicore and multi-CPU machines. Most of what one needs to build can be built on top of that. After all, programming languages still have arrays even though they also have dictionaries.

      but I'll buy the "no silver bullet" when we actually have wide adoption of anything -- even multiple things -- other than threads and locks.

      I have no problem getting my parallel programming problems solved: there are plenty of useful abstractions and libraries available.

      The problem with people like you seems to be education: you don't know what's out there and what has been done. In fact, even your view of parallel programming is depressingly narrow.

    4. Re:evolution, not revolution by Anonymous Coward · · Score: 0

      Technically and socially competent people are never managers.

      Actually, the level of technical and socially incompetence among managers probably just reflects the average level of technical and social incompetence among IT staff in general. Overestimating one's own ability is usually a warning sign of incompetence. You should take that to heart.

      There are a whole host of factors that are involved in the deaths of startups and the deaths of parallel technologies.

      That may be, but the biggest factor among the deaths of startups of parallel technology startups is, as I was saying, that they simply aren't needed. There are hundreds of parallel programming libraries and tools for C++ and Java, allowing you to do parallelization of just about any problem easily and at a high level of abstraction already. What more do you need?

    5. Re:evolution, not revolution by jd · · Score: 3, Insightful
      There are hundreds of libraries, yes. That's part of the problem. Too many different ways of slicing the same pie, leading to solutions that are not efficient when trying to get them to play nice with each other.

      The next problem is that parallelism is not, as a rule, CPU-bound but network-bound. All the libraries in the world won't work when the network clogs and chokes.

      The third problem is that coders are taught serial methods. Parallel thinking is very different from serial thinking. You run into problems that do not exist in the serial world, even on a timeslicing system like Linux. True parallelism, like true clockless computing, is a nightmare to do well. You can't just shove another library in and hope things'll work.

      The fourth problem is the level of connectedness. Globus is a great toolkit for some things, but you wouldn't use it for programming a vector computer or - most likely - even a Beowulf cluster. It's a gridding solution and a damn good one, but grids are all it will do well. On the flip-side, solutions like bproc and MOSIX are superb mechanisms for optimally using a fairly tight cluster, but you'd never sanely use them on a grid. The latencies would make the very features that make those solutions useful in a cluster useless on a WAN-based grid.

      I'm not sure I'm keen on Java on any parallel solution other than gridding. It's too slow, its threading model is still in its infancy, and the sandboxing makes RDMA an absolute nightmare to do safely. In fact, the very definition of sandboxing is that external entities can't go around poking bits of data into memory, which is the entire essence of RDMA - CPUless networking.

      Regardless, there are some things that C++ and Java simply cannot do well that other, parallel-specific languages like Pi-Occam can do with extreme ease and safety. It is possible to prove an Occam program is safe. You cannot do likewise with a C++ or Java program.

      Parallelism isn't just about more threads on one CPU. In a totally generalized parallel scenario, there may be any number of threads - a few tens of thousands would not be unusual - running on systems that may be SMP, multi-core, multi-threaded, vectored, clockless, or any combination of the above, where those systems may be on a tightly-coupled or loosely-coupled cluster, and where the cluster may be homogenous or heterogeneous, SSI or multi-imaged, where memory may be local, NUMA or distributed, and where these systems/clusters may be gridded over wide-area networks that may or may not be reliable or operational at any given time, and where threads, processes and entire operating systems may migrate from system to system without user intervention or awareness on the part of the application.

      The number of true parallel experts in the world probably number less than a dozen. No, I'm not one of them. I'm good, I understand the problem-space better than the average coder, but I've talked to some of the experts out there and they're as far beyond any traditional programmer as a traditional programmer is beyond the chipmunk. A network engineer might consider themselves OK if they can set up OSPF optimally across a traditional star network of star networks. Any traditional routing protocol over a mesh without getting flaps and maintaining a reasonable level of fault tolerence would be considered tough. A butterfly network, a torroidal network or a hypercube would leave said network engineer a gibbering wreck. Modern supercomputers do not take up buildings. Modern supercomputers take up a few rooms. The interconnects take up entire buildings. And the air conditioning on top systems can be measured in football stadia.

      OpenMOSIX is largely dead, because it was impossible to reconcile those who wanted load-balancing with those who wanted HPC. It's not that they can't be reconciled in theory, it's that the mindsets are too different to cram into one brain.

      If one solution could solve parallelism, the Transputer would be the only processor in use today and Intel would

      --
      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)
    6. Re:evolution, not revolution by SanityInAnarchy · · Score: 1

      Threads and locks are a useful low-level primitives on multicore and multi-CPU machines. Most of what one needs to build can be built on top of that. After all, programming languages still have arrays even though they also have dictionaries.

      That's not entirely fair -- arrays are still useful on their own, and they can do things dictionaries can't. They are a different animal.

      But in many higher-level languages, there is a difference between arrays and pointers, and "arrays" are the equivalent of C++ "vectors" in that they acquire and release memory as they grow and shrink. I see threading and locking as being equivalent to manual memory management.

      Certainly, any garbage collection system is ultimately going to be built on top of malloc and free, at a low level. It's when I see malloc and free in an application, particularly one in which that level of manual performance tweaking isn't required, that I worry.

      The problem with people like you seems to be education: you don't know what's out there and what has been done. In fact, even your view of parallel programming is depressingly narrow.

      Where's my view narrow?

      And I do have a fair idea of what's out there. I don't see the better techniques I know of incorporated into the languages and tools that I might want to use in the real world. And I see entirely too many real-world libraries being thread-unsafe.

      --
      Don't thank God, thank a doctor!
    7. Re:evolution, not revolution by nguy · · Score: 1

      That's not entirely fair -- arrays are still useful on their own, and they can do things dictionaries can't. They are a different animal.

      Arrays are just dictionary with integer keys. But what does that matter anyway?

      Certainly, any garbage collection system is ultimately going to be built on top of malloc and free, at a low level

      Good garbage collection is almost never built on top of malloc/free.

      Where's my view narrow?

      All you can think of is threads and locks, which only applies to shared memory and multicore systems. That's probably the least scalable and least interesting kind of parallel computing; others are SIMD, data parallel programming, FPGA programming, networks of workstations, hypercubes, parallel super computers, vector processors, array processors, data flow machines, etc., all of which are different kinds of parallel hardware to which "threads and locks" don't even apply.

      And I see entirely too many real-world libraries being thread-unsafe.

      You don't get parallel programming by making libraries thread safe. In fact, thread safety is largely useless.

    8. Re:evolution, not revolution by SanityInAnarchy · · Score: 1

      Arrays are just dictionary with integer keys.

      Arrays also have a length, and are generally meant to be iterated over. Dictionaries have no natural ordering.

      You could build an array on top of a dictionary, but it wouldn't be pretty.

      Good garbage collection is almost never built on top of malloc/free.

      Maybe I've got a wrong assumption that there is another way to return memory to the system?

      I understand that good garbage collection will typically try to allocate/free large chunks at once. I assumed that still would eventually call malloc/free, at some point.

      All you can think of is threads and locks, which only applies to shared memory and multicore systems.

      I can also think of "networks of workstations" -- the problem is the situation where you do have a multicore system. Yes, you can program such a system with sockets, but that's going to be a bit of a performance hit serializing and unserializing all the time just to move between cores.

      And I do think a proper abstraction should allow a parallel design to be built such that it should be portable to different kinds of parallel computing. Example: Some operations make sense written as if for SIMD, but may never have dedicated hardware, and should thus be able to (on a single machine, on a typical OS, with multiple cores) run in multiple threads, probably synchronized via locks.

      You don't get parallel programming by making libraries thread safe.

      However, having libraries which are not thread-safe is a problem when you do, in fact, need threads. Either the library can be thread-safe, or you can implement thread-safety on top of it -- but in the cases where you care, the library really should be thread-safe, for performance reasons.

      --
      Don't thank God, thank a doctor!
  8. No by Anonymous Coward · · Score: 1, Insightful

    Like most topics in computer science, it's a "New Old Thing".

  9. Parallel computing pioneer likes Parallelism by Alzheimers · · Score: 3, Insightful

    A guy who's made it his life's work to study Parallel Computing has come forth to say, he thinks Parallelism is the next big thing?

    Shock! And Awe!

  10. "Next hot thing" my hiney by Rosco+P.+Coltrane · · Score: 4, Insightful

    For having been in the computer industry for too long, I reckon the "next hot thing" usually means the "latest fad" that many of the entrepreneurs involved in hope will turn into the "next get-rich-quick scheme".

    Because really, anybody believes Web-Two-Oh was anything but the regular web's natural evolution with a fancy name tacked on?

    --
    "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
    1. Re:"Next hot thing" my hiney by SanityInAnarchy · · Score: 2, Insightful

      Oh, now that's not entirely fair.

      Web 2.0 was a single name for an amorphous collection of technologies and philosophies. It was even worse than AJAX.

      Parallelism is a pretty simple, well-defined problem, and an old one. That doesn't mean it can't turn into a buzzword, but I'm not convinced Web 2.0 can be anything but a buzzword.

      --
      Don't thank God, thank a doctor!
    2. Re:"Next hot thing" my hiney by zappepcs · · Score: 1

      Yep the phrase "the next big thing in tech" is something uttered by people who are no longer allowed to work on Wall Stree.

      Here's a clue for you "Ultra cheap computers" is the next big thing in tech, or haven't you heard about the impending financial crises that is about the consume the world's economies? That's right kiddies, no shiny new computers for your christmas... just new ISOs from Linux

      Meh, can't blame him for trying to drum up business I guess

    3. Re:"Next hot thing" my hiney by esocid · · Score: 1

      It may be that, but it's too early to tell since it seems like not many programmers can program parallel algorithms over their sequential counterparts. It could also be due to the lack of libraries and standards. It is lame this guy is making it sound like a pyramid scheme but he has an investment in it. *And I agree with that lame web 2.0 shit. Buzzwords don't mean jack.

      --
      Absolute power corrupts absolutely. indymedia
    4. Re:"Next hot thing" my hiney by fpgaprogrammer · · Score: 1

      there are some serious problems in parallel computing the greatest of which is teaching people how to write good parallel programs. this isn't like building social networks or applications on top of social networks--that really is the latest-latest fad. anyone seeking to get-rich-quick off parallel computing aught to reconsider their field of choice. it's more like get-frustrated-quick scheme.

    5. Re:"Next hot thing" my hiney by samkass · · Score: 1

      I thought that multi-touch interfaces and embedded computing were the next big thing!

      Seriously-- we've had enough computing power for the average desktop tasks for a long time. Instead of putting 8 CPUs on a die and bottling up all the processing power on the desktop, put 8 CPUs in 8 separate different domain-specific embedded devices sitting around you...

      --
      E pluribus unum
    6. Re:"Next hot thing" my hiney by zappepcs · · Score: 1

      Actually I've already commented on this. By making a pc that supports maybe 8 plug-in systems-on-a-card (blade style as was pointed out) and one main cpu to supervise the processor/boards and some raid storage with digital storage on the cards you can have the equivalent of 8 pc's running on your one desktop with one interface, near zero bottlenecks. A real click and rip situation.

      You should also be able to choose the number of processors you wish to have running so others can power down when not in use. There are many advantages to this when you are trying to run multiple cpu intensive applications at once. Even though a p2p download runs in the background, it's still taking up cpu cycles. It only needs say 1GHz cpu to do its thing, and a 1GHz cpu is just fine for you to surf pr0n while it's downloading etc...

      By specializing some hardware in the CPU architecture beyond what we have today, there can be many benefits. With ethernet in more common use, it will be able to tie them all together on several layers if need be. Shove all the video over internal ethernet, let the supervisor cpu mangle it onto the screen, or have multiple GPUs and displays... whatever you like or want, or can afford to upgrade to. I think that is the next worthy big and powerful pc architecture.

      Look at the hardware in a DVD player, it's not all that special. Why not support multimedia on a custom built cpu board just for such things instead of trying to make generic hardware do EVERYTHING? Well, the list goes on, but by adding clever resources and eliminating duplication within your system much more can be accomplished.

    7. Re:"Next hot thing" my hiney by mrchaotica · · Score: 1

      I thought that multi-touch interfaces... were the next big thing!

      Multi-touch and parallelism are both the "next big thing," because multiple touches are touches in parallel!

      ; )

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    8. Re:"Next hot thing" my hiney by raftpeople · · Score: 1

      Because really, anybody believes Web-Two-Oh was anything but the regular web's natural evolution with a fancy name tacked on?
      Web 2.0 is a definite set of "things" or "approaches" that "allow" you to (or possibly you "allow" them to) combine other "things" or "technologies" into a "newer" "-ish" mixture of "patterns" of "operation" of the "collection" of "computing" "resources" that "create" "value" beyond what "may" (or "may not") have been previously "achievable"

      Got it?
  11. More so now, but depends ... by Midnight+Thunder · · Score: 3, Insightful

    Now that we are seeing more and more in the way of multi-core CPUs and multi-CPU computers I can definitely see parallelism become more important, for task that can be handled this way. You have to remember that in certain cases trying to parallise a task can end up being less efficient, so what you parallelise will depend on the task in hand. Things like games, media application and scientific applications are usually likely candidates since they are either doing lots of different things at once or have tasks that can be split up into smaller units that don't depend on the outcome of the other. Server applications can to a certain extent, depending whether they are trying to the same resources or not (ftp server, accessing this disk, vs a time server which does not file I/O).

    One thing that should also be noted, is that in certain cases you will need to accept increased memory usage, since you want to avoid tasks locking on resources that they don't really need to synchronise until the end of the work unit. In this case it may be cheaper to duplicate resources, do the work and then resynchronise at the end. Like everything it depends on the size and duration of the work unit.

    Even if your application is not doing enough to warrant running its tasks in parallel, the operating system could benefit, so that applications don't suffer on sharing resources that don't need to be shared.

    --
    Jumpstart the tartan drive.
    1. Re:More so now, but depends ... by Shados · · Score: 2, Interesting

      Well, actually...I think more things can be paralleled than one would think at first glance... The very existance of the foreach loop kindda shows this... Looking at most code I have to work with, 90% of such loops simply do "I'm iterating through the entire list/collection/array and processing only the current element", some simple aggregates (the kind where you can split the task and aggregate the result at the end), etc. Virtually all applications have those, and call them often.

      Being able to simply say "the order in which these tasks are made doesn't matter" lets you run a lot of tasks in parallel right there.

      Then you have a lot of tasks which do not depend on each other at ALL, but will still wait on each other... Let say a typical MVC web app ala Rail or Strut... you have a lot of ressource handling going on in the view that doesn't even rely on the Model/database whatsoever...and then you have the operation of rendering the model data in the view... so querying the data, and handling the ressources, could be done at the same time, and once both are done, do the actual render. ASP.NET has a decent mechanism for that, but no one uses it.

      These are all things that are being worked on (and some already exist but most people ignore them), and can dramatically boost performance of virtually ANY application...but there needs to be a certain awareness... And some of these features are just freagin late (Microsoft is working on PLINQ...ways to make it easy to process data structure in parallel... for example: int[] blah = listOfInts.ForAll( item => item * 2 );... and it will do it in parallel. Seems so obvious, but why hasn't this been around for years in .NET?)

    2. Re:More so now, but depends ... by brewstate · · Score: 1

      Threading is Parallel programming as well. I agree that it will be the "Next Big Thing" but only in the since that in order to use the cell processors and the multi-core cpu's we are going to have to use threading to optimize most of the serialized code (Where Possible).

    3. Re:More so now, but depends ... by sainttX · · Score: 1

      Yes, we are looking forward to parallelism, we are looking forward to easy programming and lightning fast running. But, a wish is a wish. We did the same to Artificial Intelligence, look at it now, how it looks? Still, a wish.

  12. Transistor Efficiency` by Detritus · · Score: 1

    Tied in with parallelism is the issue of doing something useful with the billions of transistors in a modern computer. During any microsecond, how many of them are doing useful work as opposed to just generating heat?

    --
    Mea navis aericumbens anguillis abundat
    1. Re:Transistor Efficiency` by crispin_bollocks · · Score: 1

      It's the ones doing "useful work" that generate the heat, the idle transistors should have very little dissipation.

    2. Re:Transistor Efficiency` by Detritus · · Score: 1

      Leakage current is increasing as feature size decreases. Even without that problem, what percentage of the die space is doing useful work?

      --
      Mea navis aericumbens anguillis abundat
  13. Didn't we have this debate last week? by Nursie · · Score: 5, Informative

    Oh yes, here it is.

    And the conclusion?

    It's been around for years numbnuts, in commercial and server applications, middle tiers, databases and a million and one other things worked on by serious software developers (i.e. not web programming dweebs).

    Parallelism has been around for ages and has been used commercially for a couple of decades. Get over it.

    1. Re:Didn't we have this debate last week? by esocid · · Score: 1

      But think outside the box man. This is going to revolutionize the web 2.0 experience with its metadata socialized infrastructure.

      Sorry, I totally got sick of using even that many buzz words. I'll stop now.

      --
      Absolute power corrupts absolutely. indymedia
    2. Re:Didn't we have this debate last week? by spottedkangaroo · · Score: 2, Funny

      But, at the end of the day (where the rubber meets the road) this will utilize the core competencies of solutions that specialize in the new ||ism forefront.

      --
      Imagine if you weren't allowed to use roads because a bus company complained about your driving 3 times. --skunkpussy
    3. Re:Didn't we have this debate last week? by Creepy+Crawler · · Score: 0, Offtopic

      You know what the best "buzz word" is? Dildo.

      Bzzzzzzzzzzzzzz

      --
  14. Please no by Wiseman1024 · · Score: 3, Funny

    Not parallelism... Why do MBA idiots have to fill everything with their crap? Now they'll start creating buzzwords, reading stupid web logs (called "blogs"), filling magazines with acronyms...

    Coming soon: professional object-oriented XML-based AJAX-powered scalable five-nines high-availability multi-tier enterprise turnkey business solutions that convert visitors into customers, optimize cash flows, discover business logic and opportunities, and create synergy between their stupidity and their bank accounts - parallelized.

    --
    I was about to say 13256278887989457651018865901401704640, but it appears this number is private property.
  15. Most companies need parallel developers by 1sockchuck · · Score: 2, Informative

    This sure looks like a growth area for qualified developers. An audience poll at the Gartner Data Center conference in Las Vegas in November found that just 17 percent of attendees felt their developers are prepared for coding multi-core applications, compared to 64 percent who say they will need to train or hire developers for parallel processing. "We believe a minority of developers have the skills to write parallel code," said Gartner analyst Carl Claunch. I take the Gartner stuff with a grain of salt, but the audience poll was interesting.

    McColl's blog is pretty interesting. He only recently started writing regularly again. High Scalability is another worthwhile resource in this area.

    1. Re:Most companies need parallel developers by ClientNine · · Score: 1

      | ...coding multi-core applications... What the hell does that mean, anyway?

      Can someone explain what the difference is between a programmer being "prepared for paralellism" and a programmer who knows how to do a good job with threading?

      Writing multi-threaded apps has always been hard, and likely always will be harder than writing single-threaded apps. Go figure-- doing more stuff at once is tricker than doing one thing at a time. ("Duh.") I fail to see what the Big New Thing is.

    2. Re:Most companies need parallel developers by Hasmanean · · Score: 3, Interesting

      In common usage, threading usually implies different "streams" of execution doing independent things, at the same time. If the same function is executing in n different threads then you might call it "parallel" programming. A lot of multithreaded programming involves taking pieces of program functionality and breaking them out into separate threads, each executing independently.

      Calling the latter architecture parallel computing is misnomer, it is really "simultaneous" computing i.e. things can happen at the same time, but there is a big difference between the same thread executing n times in parallel, and different threads doing different things simultaneously.

      For example, a "Trivial" program which reads in a list of numbers from a file, computes something (say the sum of the magnitudes squared), and prints the result out to the screen might be implemented as follows:

      while not eof
              read n numbers
              compute something from them
              print result


      a multithreaded version might look something like this

      Thread 1 (Disk IO): read n number from disk, write them to a queue/shared memory, repeat
      Thread 2 (Outputting): wait for outputs to become available, print them, repeat
      Thread 3 (Compute): wait for inputs to arrive in a queue, process them, write output to another queue, repeat



      A parallel version would just have more than 1 Compute thread, and they would subdivide the work between them (for example 2 threads dividing the input array into stripes, one handling even indices, the other odd...or a bunch of threads computing different slices of the array). Note that the threads would still have to combine their results at the end of the computation, and that is not always simple to do in parallel.

      Some problems or algorithms simply cannot execute in parallel. Also issues of memory access patterns, caching, branch divergence (if they threads take different code paths will this affect performance) come into play. It requires a whole new set of issues to worry about, but they are not too difficult. As the professor who teaches the course http://courses.ece.uiuc.edu/ece498/al1/ says, learning parallel programming is not hard, he could teach it to you in 2 hours. But doing parallel programming well and efficiently is difficult. You can write a trivial parallel program which uses just 1 processor and has just 1 thread, which is identical to the sequential version, and it will work logically, although the performance will be severely limited. You can then extend it to use n threads, and it will experience a speedup. But to take full advantage of the hardware on your board, you will need to know a few tricks, and understand the hardware and your program's behavior intimately.

      Another issue is that programmers were spoiled by processor upgrades coming along and speeding up their programs "for free" by virtue of their higher clock speed. Now with clock speeds reaching physical limits, the only evolution in new processors will be in the number of cores they have. So the only way to coax more out of a program will be to make it more parallel, and that might be trivial or it might be difficult. We're going to have to think laterally to get more performance out of software.

      --
      Hasan
  16. Who cares... by Anonymous Coward · · Score: 0

    ...about the new new thing? That's old. We want the new new new thing!

  17. "the bastards say 'welcome'" by david.emery · · Score: 4, Informative

    So all-of-a-sudden people have discovered parallelism? Gee, one of the really interesting things about Ada in the late 80s was its use on multiprocessor systems such as those produced by Sequent and Encore. There was a lot of work on the language itself (that went into Ada95) and on compiler technologies to support 'safe parallelism'. "Safe" here means 'correct implementation' against the language standard, considering things like cache consistency as parts of programs get implemented in different CPUs, each with its own cache.

    Here are a couple of lessons learned from that Ada experience:
    1. Sometimes you want synchronization, and sometimes you want avoidance. Ada83 Tasking/Rendezvous provided synchronization, but was hard to use for avoidance. Ada95 added protected objects to handle avoidance.
    2. In Ada83, aliasing by default was forbidden, which made it a lot easier for the compiler to reason about things like cache consistency. Ada95 added more pragmas, etc, to provide additional control on aliasing and atomic operations.
    3. A lot of the early experience with concurrency and parallelism in Ada learned (usually the hard way) that there's a 'sweet spot' in the number of concurrent actions. Too many, and the machine bogs down in scheduling and synchronization. Too few, and you don't keep all of the processors busy. One of the interesting things that Karl Nyberg worked on in his Sun T1000 contest review was the tuning necessary to keep as many cores as possible running. (http://www.grebyn.com/t1000/ ) (Disclosure: I don't work for Grebyn, but I do have an account on grebyn.com as a legacy of the old days when they were in the ISP business in the '80s, and Karl is an old friend of very long standing....)

    All this reminds me of a story from Tracy Kidder's Soul of a New Machine http://en.wikipedia.org/wiki/The_Soul_of_a_New_Machine. There was an article in the trade press pointing to an IBM minicomputer, with the title "IBM legitimizes minicomputers". Data General proposed (or ran, I forget which) an ad that built on that article, saying "The bastards say, 'welcome' ".

    dave

    1. Re:"the bastards say 'welcome'" by non · · Score: 1

      although many aspects of Brian Wilson's 'A Quick Critique of Java' are no longer particularly valid, and indeed i find myself programming more and more frequently in a language i too once scorned, the section on multi-threaded programming surely still has relevance. i certainly second his opinion that multi-threaded applications tend to crash more often, and have in fact turned down offers of employment with companies whose code failed to run on my workstation due to the fact that it wasn't exactly thread-safe, despite the requirement of a 'high-performance' machine for it to run on.

      --
      ...vividly encapsulates that post-Watergate/pre-punk/coked-up moment when you could trust no one, least of all yourself.
    2. Re:"the bastards say 'welcome'" by technienerd · · Score: 1

      People don't seem to understand why parallelism is the next big thing right now. It's simple, processors are NOT going to increase significantly in frequency and in instruction-level parallelism in the upcoming years. Why? Well, we've hit the "power wall". These CPUs are producing too much heat at such high frequencies. Thus, until a breakthrough in manufacturing technologies comes along, we need to keep clock speeds low. So how do we improve performance then? Multiple cores! Every PC in the world will now have multiple cores. People argue that servers have been doing this for ages but they neglect the granularity of parallelism. It's usually at the per-user level. As web technologies advance, servers will be getting extremely complex queries from users, and we need to find ways to split the processing of that one query onto multiple machines. So, the truth is, not enough people are learning about parallelism, and many of those who claim to understand parallelism by saying they're familiar with concepts such as semaphores and mutexes aren't necessarily up to the task of this next generation of processing. We need to redevelop our most basic algorithms to run on an arbitrary number of processors. We need to develop programming languages that let us easily express parallelism. We need to understand how to build scalable systems. These are very, very difficult problems. Parallelism isn't new, yes, but now we urgently need it or else we won't see any progression in computer performance for many years to come.

  18. "...with the cooling of Web 2.0,..." by sm62704 · · Score: 4, Insightful

    Sorry guys, web 2.0 was never cool and never will be.

    --
    mcgrew's razor: Never attribute to stupidity that which can be explained by greedy self-interest
    1. Re:"...with the cooling of Web 2.0,..." by msimm · · Score: 1

      Tell that to you CEO as your IT department scrambles to install wiki's and forums and blogs that will never really be used.

      --
      Quack, quack.
  19. Will "Parallelism" be the next new thing? No... by Jerf · · Score: 1

    Will "Parallelism" be the next new thing? Well... no. That's like asking if "for loops" are going to be the next big thing. It's a tool, to be used when appropriate and not used when appropriate. It's going to be very hard to convert "Parallelism" into a magic VC pixie dust.

    I say this as someone who has recently been tuning his career, experience, and personal projects towards learning more about parallel programming in practice, and I still don't see this as a "next big thing". It's just another in a long list of skillsets that is going to be gradually more useful over the next few years. I still think it's a good move to learn about it (and I'm putting my effort where my mouth is), but I don't see it sustaining any sort of bubble.

    One thing I did learn from the last discussion is that a lot of people are very far behind on parallelism, though; if you think locks and pthreads are the state of the art, you've got some catching up to do. There's been a lot of practical progress in the past ten years that doesn't seem to have made it into the popular consciousness of Slashdot programmers. (And I emphasize the word practical; it's not just academic wanking anymore, or libraries optimized for such.) I suggest anyone interested in the topic check out Erlang and Software Transactional Memory (in that order). Whether these technologies will "win" I don't know, but Erlang in particular, while it may in some sense not contain a single idea that can't be traced to the 1960s, is unique in being a complete runtime and library based on ideas-that-will-be-new-to-you (most likely, based on the previous /. discussion).

  20. Parallel Software: Hard. Analysis Tools: Overdue by Znord · · Score: 1
    Parallel software is mastered, often, only by those who put up huge designed-in fences to partition software. That or those who run languages with innate safety but wasteful and non-pipelined code. We've finally tapped the Moore well too long.

    Analysis tools, code-that-analyses code accurately, will finally need to get off the ground if we're going to get out of this gap. Otherwise, we're just going to see hundreds to thousands of hardware-supported, virtualized, inefficient pseudo-threads and tons of message passing analogies.

    Shared memory contention is a hardware-solved problem at this level of integration. Shared memory code never lives up to its possible speed in most programming, except for the OS.

    I'm entering grad school for this. There's more funding than there are students! Let's get on it!

    --
    Nietzsche is dead - God
  21. Total Tripe by Zebra_X · · Score: 1

    So I started writing without reading TFA. Then I read TFA to be sure that I was not in fact missing something. I'm not, and you're not either... The assertions of the article are absurd - someone must have felt that they needed to put something on the web for google to index.

    While not related to parallelism I especially like "SaaS as an Appliance. One area within SaaS that is growing quickly is the opportunity to deliver a SaaS product as an appliance."

    So you mean to tell me that the next big thing is installing software on a server, and installing that server in my datacenter and supporting it?! New!? HA HA HA. So actually what you are saying is that SaaS is too limiting, unreliable (from a connectivity perspective) or not secure enough for client needs and that we have to do it the Old way.

    As far as the last item in the Blog goes I'm not sure where all of this crazy excitement over parallelism is coming from. There have been several posts on slashdot over the last few weeks regarding it. Massive parallelism has been available for decades for very special types of scientific problems that merit the additional complexity of coding them up. Parallelism has also been available in the form of threads.

    The real conundrum is that not many problems on the desktop are in fact, parallel and if they are then one would utilize threads, and if really needing to be sure the OS is behaving itself, processor affinity would be used as well. This would allow, given the proper task, one to fully utilize every cycle of the available cores. The real desktop problem is how can most efficiently allocate processes across multiple cores and physical CPU's.

    The tools to do this are available today, here and now! Just get your latest copy of Xcode, VS Studio, or GCC! Unless someone reinvents the way we code I'm not sure that anything is going to happen here.

  22. Flavor of the month? by plopez · · Score: 1

    Former venture capitalist Jeff Nolan has been agonizing this week over "what's next?" and "where the venture capitalists will put all that money?"

    It really sounds like he is shilling.

    But seriously, first it was DP and COBOL.
    Then expert systems.
    Then relational databases.
    The object orientation.
    Then webification.
    Then XMLification.
    Then web 2.0.

    And probably a few I missed.

    I think this is just another fad.

    --
    putting the 'B' in LGBTQ+
    1. Re:Flavor of the month? by Dr.+Sp0ng · · Score: 1

      Interesting defintion of "fad" you have there. Are you seriously claiming that relational databases went away after the initial burst of enthusiasm? Or OO? The web? XML?

    2. Re:Flavor of the month? by plopez · · Score: 1

      no, just the hype and the propaganda that they would solve all our problems. And venture capital firms pouring money into them.

      --
      putting the 'B' in LGBTQ+
  23. Man emerges from cave... and states the obvious. by divisionbyzero · · Score: 1

    I'm not trolling. Sun, Intel, Nvidia, and ATI/AMD (for obvious reasons) have been investing in this area for years. I think that constitues Silicon Valley investments (except for those crazy Canadians at ATI).

  24. What am I missing? by James+Lewis · · Score: 3, Insightful

    Now that multi-core computers have been out I keep hearing buzz around the idea of parallel computing, as if it is something new. We've had threads, processes, multi-CPU machines, grid computing, etc etc for a long time now. Parallelism has been in use on single processor machines for a long time. Multi-core machines might make it more attractive to thread certain applications that were traditionally single-threaded, but that's the only major development I can see. The biggest problem in parallel computing is the complexity it adds, so hopefully developments will be made in that area, but it's an area that's been researched for a long time now.

    1. Re:What am I missing? by olddotter · · Score: 1

      Parallelism has been done where it is easy (web server and similar) and where there was no other choice (scientific computing, etc.) but it has not been done well in "main stream" software.

      Historically software development has been lazy (with a few notable exceptions) and sat back relying on new silicon (EE's, Moore's Law, higher clock rates) to improve performance. But in the future that may change. Breaking your software up into parallel tasks maybe required to get performance benefits from new silicon.

      As a computer scientist I am ashamed of the lack of progress of my discipline. But I also harbor hope that this will put computer science back into the software development process. Right now development is mostly about visual editors and high level scripting languages.

  25. Dont believe? Intel & MS have made a $20M bet by kiyoshilionz · · Score: 2, Informative

    You think that nobody has a real interest in parallel computing? Intel's put their money on it already - they've allotted $20 million between UC Berkeley and University of Illinois to research parallel computing, both in hardware and software.

    I am a EECS student at Cal right now and I have heard talks by the UC Berkeley PARLab professors (Krste Asanovic and David Patterson, the man who brought us RAID and RISC), and all of them say that the computing industry is going to radically change unless we figure out how to efficiently use parallelism. This is the first time in history that software performance is beginning to lag behind how fast we can make our hardware. The failure of the frequency scaling to continue to improve system performance has been shown in the failure of the NetBurst microarchitecture - remember the Prescott? And the failure of the Tejas and Jayhawk? Building faster chips is over, it's a mechanical engineering issue - we can make chips put out more heat per area than the surface of the sun. Quoting professor Hennessey from Stanford:

    "...when we start talking about parallelism and ease of use of truly parallel computers, we're talking about a problem that's as hard as any that computer science has faced. ... I would be panicked if I were in industry. ... you've got a very difficult situation."

    To whoever is saying that parallelism is just a fad, you're really missing a lot of what's going on in the computing world. We've already switched to dual- and quad-core CPU's, and it doesn't look like it's going to stop any time soon.

  26. The three kinds of parallelism that work by Animats · · Score: 1

    We know three kinds of parallelism that work: clusters, shared memory multiprocessors, and graphics processors. Many other ideas have been tried, from hypercubes to SIMD machines, but none have been big successes. The most exotic parallel machine ever to reach volume production is the Cell, and that's not looking like a big win.

    Graphics processors are the biggest recent success. They're still very difficult to program. We need new languages. C and C++ have the built-in assumption that all pointers point to the same memory space, and don't address concurrency at the language level at all. That's not going to work. The "dynamic languages" (Javascript, Python, etc.) have too much overhead. Special purpose graphics languages (Renderman, etc.) address the high concurrency issue, but only for a limited class of problems. None of the traditional parallel languages (Occam, etc.) have enough of a user base to make them compelling. Interestingly, what does look promising is compiling Matlab to GPU code; the big matrix operations of Matlab translate well to GPU-type machines, and number-crunching engineers like and use Matlab.

    If your problem isn't a good match to either Matlab or RenderMan, though, it's all uphill right now.

    1. Re:The three kinds of parallelism that work by ceoyoyo · · Score: 1

      Every major desktop, notebook or workstation processor in the last ten years has had SIMD units built in. It's been very successful. Graphics processors are basically massive SIMD machines with a limited instruction set and restrictive architecture. They're not hard to program, but they are limited.

      You've got two choices if you want to run lots of stuff in parallel. You can do it very easily and live with the restrictions, a la GPUs or simple coarse grained cluster stuff. Or you can have a lot more flexibility at the expense of some extra book keeping. Just like anything else.

      The Cell isn't really an exotic parallel machine. It's a regular multiprocessor/multicore machine (like a ten year old desktop Mac) except that some of those processors are special purpose. Just like every desktop computer in the last five years or so has had a programmable GPU. The difference with Cell is that those special purpose processors are a little more diverse, which means that Cell is great for things like game consoles, but most of the chip goes unused for checking your e-mail and surfing the web. GPUs weren't a big hit either until there were enough of them that it was worth writing software to use them. When I got my first Voodoo you could pretty much play a Tomb Raider tech demo and that was it.

    2. Re:The three kinds of parallelism that work by Animats · · Score: 1

      The Cell isn't really an exotic parallel machine. It's a regular multiprocessor/multicore machine (like a ten year old desktop Mac) except that some of those processors are special purpose.

      No, it's a non-shared-memory multiprocessor with limited memory (256K) per CPU. It belongs to roughly the same family as the nCube, although the Cell has a block DMA-like path to main memory rather than relying entirely on CPU to CPU data paths like the nCube.

      It's typically used like a DSP farm; data is pumped through each Cell processor, crunched a little, and pumped out the other side. It's only good for problems that fit that model. Audio guys love it. Physics programmers, not so happy.

    3. Re:The three kinds of parallelism that work by mastermemorex · · Score: 0

      Matlab? You meaned CUDA...

      But here there is a plugin for matlab :)
      Enjoy! http://www.nvidia.com/object/cuda_home.html

  27. Race conditions by microbox · · Score: 2, Insightful

    Being able to simply say "the order in which these tasks are made doesn't matter" lets you run a lot of tasks in parallel right there.

    Mucking around with language design and implementation highlights some of the deep problems that the "parallize-everything" crowd often don't know about.

    In your example, the loop can only be efficently parallized if it doesn't have any side-effects. If any variables are written to out of scope of the loop, then they are exposed to race conditions in both the read and write direction. It's still possible to parallize the code if the machine code doesn't take advantage of the memory model of your architecture, and no other thread is modifying those variables, and it doesn't matter in which order the variables are modified, and modifications are atomic. As an implementation detail, memory reads and write will be signficiantly slower, and sychronization of atomic operations is also not without cost. So much in fact, that you'd probably be better off just running the loop on a single thread. Your code will be more predictable regardless.

    At the moment, it seems that effective parallization requires some planning and effort on behalf of the programmer. The bugs can be extraordinarily subtle, impossible to debug and difficult to reason about. Expect single-threaded programming models to be around for a long time.

    --

    Like all pain, suffering is a signal that something isn't right
    1. Re:Race conditions by Shados · · Score: 1

      Of course, the work needs to be thread safe in that example. Thats why I said "lets you run a lot of tasks in parallel right there".

      My point was, if you go through a typical everyday business app (since those are probably the most common kind developed these days, or close), you'll find that this situation is more common than not, which was my point. A LOT of loops contain operations without side effects and without shared ressources. Being able to easily handle those net you a large gain on the spot.

      Basically, I'm advocating the 80/20 way. Make all of the "obvious" and "simple" scenarios easy, and you'll already get a large performance boost with little effort (its already being done...my parallel loop example can easily be done in virtually all languages, and is already used in many places, and it works quite well).

      Then we can attack the harder scenarios that require more than a new language construct.

    2. Re:Race conditions by Midnight+Thunder · · Score: 1

      Basically, I'm advocating the 80/20 way. Make all of the "obvious" and "simple" scenarios easy, and you'll already get a large performance boost with little effort (its already being done...my parallel loop example can easily be done in virtually all languages, and is already used in many places, and it works quite well).

      In a number of cases this means getting the API that you use optimised and doing less improvements yourself. For example your average Java developer could probably push a large part of the burden to the classes offered by the JDK. It doesn't mean that they are totally absolved, but since the 20 percent of the code 80 percent of the time, they are calling is usually part of the JDK, that is a good starting point.

      --
      Jumpstart the tartan drive.
  28. Then we are all doomed by DrJokepu · · Score: 3, Interesting

    You see, the majority of the programmers out there don't know much about parallelism. They don't understand what synchronization, mutexes or semaphores are. And the thing is that these concepts are quite complex. They require a much steeper learning curve than hacking a "Web 2.0" application together with PHP, Javascript and maybe MySQL. So if now everybody will start writing multithreaded or otherwise parallel programs, that's going to result in an endless chain of race conditions, mysterious crashes and so on. Rembember, race conditions already killed people.

    1. Re:Then we are all doomed by pohl · · Score: 1

      Thank you for that wikipedia link. That is a tragic story. I don't understand why you think that "we're all doomed", though. Being in the minority of programmers who understand a given technique is potentially lucrative, so those people are not doomed. And there's no need whatsoever to eek out every last drop of 16-core performance out of a machine that needs to make sure that a beam-spreader is rotated into position prior to activiting the high-power X-Ray emitter -- so the obvious solution in that case is to not apply superfluous concurrency optimizations in the first place. Meaning that the patients who need such a machine need not be doomed either (any more than they already were given their malady). In short, who says that everybody will start writing parallel programs irrespective of its applicability to a given problem?

      --

      The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...

  29. Multithreading Is to Blame by MOBE2001 · · Score: 2, Insightful

    Needless to say I was a bit early on that prediction.

    The reason is that all academic researchers jumped on the multithreading bandwagon as the basis for parallel computing. Unfortunately for them, they could never get it to work. They've been at it for over twenty years and they still can't make it work. Twenty years is an eternity in this business. You would think that after all this time, it would have occurred to at least one of those smart scientists that maybe, just maybe, multithreading is not the answer to parallel computing. Nope: they're still trying to fit that square peg into the round hole.

    Both AMD and Intel have invested heavily into the multithreading model. Big mistake. Multiple billion dollar mistake. To find out why threads are not part of the future of parallel computing read Nightmare on Core Street. It's time for the computer industry to wake up and realize that the analytical engine is long gone. This is the 21st century. It's time to move on and change to a new model of computing.

    1. Re:Multithreading Is to Blame by Anonymous Coward · · Score: 2, Informative

      Unfortunately for them, they could never get it to work.

      Hyperbole much? Parallel systems such as MPI have been the staple of high performance computing since the mid 90's, and there are plenty of developers (including myself) who can write multi-threaded code without breaking into a sweat, and get it right.

      At what point did parallel and concurrent programming "fail"? I really must have missed that memo.

    2. Re:Multithreading Is to Blame by MOBE2001 · · Score: 1, Informative

      Parallel systems such as MPI have been the staple of high performance computing since the mid 90's, and there are plenty of developers (including myself) who can write multi-threaded code without breaking into a sweat, and get it right.

      In that case, you should hurry and tell Microsoft and Intel to refrain from giving that 20 million they want to give to UC Berkeley and UI Urbana-Champaign to find a solution to the parallel programming problem. According to you, Microsoft, Intel, AMD and all the others are wasting hundreds of millions in research labs around the world trying to make it easy to build apps with threads. After all, you already found the solution, right? And you found an easy way to build threaded programs, right?

      Sure.

    3. Re:Multithreading Is to Blame by Anonymous Coward · · Score: 0

      You seem confused. I simply said I can do it and I know other developers who can. Just because the majority of developers can't doesn't mean it has "failed": it just means there are a lot of mediocre developers who need new tools to manage the job, which is where that $20million is being spent. AMD and Intel and others want to make it easier for you. Personally I'm quite at home writing multithreaded kernel level C, but clearly not everyone is.

    4. Re:Multithreading Is to Blame by MOBE2001 · · Score: 0, Troll

      You seem confused. I simply said I can do it and I know other developers who can. Just because the majority of developers can't doesn't mean it has "failed": it just means there are a lot of mediocre developers who need new tools to manage the job, which is where that $20million is being spent. AMD and Intel and others want to make it easier for you. Personally I'm quite at home writing multithreaded kernel level C, but clearly not everyone is.

      IOW, you're smart and everybody else is an idiot. You sound like a pompous ass to me. So much for your solution to the parallel programming problem.

    5. Re:Multithreading Is to Blame by ratboy666 · · Score: 1

      "Threads are inherently non-deterministic"

      A direct quote from the article. I guess, in a sense, this is true. It is true that it is impossible to ensure that a lock can be obtained. On a hardware level, no less.

      On the other hand, this statement is a load of bullshit.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    6. Re:Multithreading Is to Blame by Pentalon · · Score: 1

      In defense of the other Anonymous Coward:

      0. Doing no programming is easy.
      1. Programming single-threaded is harder than (0).
      2. Programming multi-threaded is harder than (1).

      Some people fail doing (1), and others succeed.
      More people fail at (2) than (1), and less others succeed at (2) than (1).

      Just because more people fail at (2) than (1), is that enough to say that multi-threaded programming failed? If we have failures at (1), should we claim that all programming is worthless? What's the threshold of failure that says that multi-threading is completely untenable vs. single-threading, but single-threading is tenable vs. no programming.

      Given the population's general software failure rate, I bet we have even more research dollars going into improving general (single-threaded) programming. By your argument, that seems to suggest that computer programming overall, regardless of thread count, has failed.

      I agree that multi-threaded programming can and should be improved, and also that if we can find a better way to parallelism than "threads", let's go for it. If it's "better", then by definition it's better, so what's the argument?

      I think he's only a pompous ass if you can prove that there's already a clear alternative to programming multi-threaded and that nobody should be programming multi-threaded.

    7. Re:Multithreading Is to Blame by grumbel · · Score: 3, Insightful

      Just because the majority of developers can't doesn't mean it has "failed" When you want to get parallelism into the mainstream then that is pretty much the exact definition of "fail".
    8. Re:Multithreading Is to Blame by jo42 · · Score: 1

      change to a new model of computing Such as ... ?
    9. Re:Multithreading Is to Blame by Anonymous Coward · · Score: 0

      Yup, you've got it exactly. I'm not trying to be an ass, it's just true. Hell, I work with people who are a lot smarter than me and can write real HPC class parallel code using MPI and OpenMP. They find it easy, but I don't get my panties in a bunch over it. That's just how it goes.

    10. Re:Multithreading Is to Blame by mastermemorex · · Score: 0

      You have a confusion here. One think is multithreading and another think is parallel computing. You can create two, three, four threads in your application without problems to take advantage of two or four core. But, how you take advantange of a processor of 128 cores (like actual graphic cards) and 1.024 cores? MPI is only used for sharing information between nodes in a cluster, but sharing information in one processor between multiple cores is very different. The programming model is just very different between parallel and secuential programming because in parallel programming you have to avoid conflicts beween threads and more important there is no way that you can define in C/C++ or Fortran one segment code that will work in parallel/atomic or define levels of cache. But to understand all of this you have to program in languages like Cuda, Sequoia

      Think in parallel my friend!

    11. Re:Multithreading Is to Blame by clampolo · · Score: 1

      I've got to agree with this. Look at how many people in industry get bitter and angry when someone expects them to know how to sort or know some math. Parallel programming is not difficult. Just too few engineers care about it since they are too busy learning some new fad: the latest scripting language, some new OOP design pattern, etc. No university should allow anyone to graduate with a CS degree without having taken some parallel programming theory and lab classes.

    12. Re:Multithreading Is to Blame by Anonymous Coward · · Score: 0

      Look at how many people in industry get bitter and angry when someone expects them to know how to sort or know some math.
      Look at how many get bitter and angry when people discuss parallel and concurrent programming, and then post on Slashdot!
    13. Re:Multithreading Is to Blame by Anonymous Coward · · Score: 0

      You have a confusion here.
      Nope, I'm very aware of the difference. I work for an HPC company by day and write multi-threaded code by night. The problem is that every Slashdot discussion we've had recently dissolves into a confused mess whenever the subject of parallel programming comes up, so we always end up with half the discussion talking about concurrent (multi-threaded) programming and the other talking about parallel programming.

      The interesting thing is that although the programming and memory models are very different, many of the challenges are the same. Both parallel and concurrent programming requires you to think about synchronisation, barriers, ordered writes etc. Weather it's concurrent or parallel, you still have multiple instances of the same code running at the same time which need to share state and communicate: it's just that with parallel programming you must implicitly share your data and with concurrent programming you have the opposite problem of stopping the threads from sharing too much data.

      Although I've done far more concurrent programming than parallel at this point, I still use roughly the same mental model when I'm thinking about both.

      MPI is only used for sharing information between nodes in a cluster, but sharing information in one processor between multiple cores is very different.
      Traditionally this is true, but you could in theory configure each CPU in a node with a different page table and private section of memory. In effect each CPU could be run as a separate "island" within the node, and you could use something like MPI to implicitly share data between the processes on each CPU. Not that I'm suggesting that would be a good idea.
    14. Re:Multithreading Is to Blame by JebusIsLord · · Score: 1

      I'm a pretty novice programmer... I've created one relatively small application over the past few years. Right now I'm working on a ground-up rewrite using threading principles. It IS more complex, but i'm handling it, and I'm still pretty new at this!

      Right now you can get away without it, which means lots of developers will. When we have 80-core machines, it won't really be an option.

      The solution to increasing complexity is higher level languages. I'm writing my new app in C#, and so far I haven't even had to create a thread from scratch (lots of BackgroundWorkers, asynchronous streams, events and callbacks). I expect the next generation of languages will do away with primitive types, include threadsafe libraries by default, and include new high-level threading models like the ones i just mentioned.

      At the same time, compilers are going to get better at automatic vectorization. I don't think this is going to be a big deal, it'll just be different.

      --
      Jeremy
    15. Re:Multithreading Is to Blame by Anonymous Coward · · Score: 0

      "we always end up with half the discussion talking about concurrent (multi-threaded) programming and the other talking about parallel programming."

      I know what you're saying, but I figured I better point out to others that multi-threading does not necessarily imply concurrency over (true) parallelism. Multi-threading can be concurrent or parallel just as processes can be concurrent or parallel. Of course the abstract context model differs between threads and processes; and the physical context model varies according to architecture.

      IMHO, the big hurdle is figuring out where parallelism can actually help one out.

  30. Know how? by Anonymous Coward · · Score: 0

    Nobody knows how to efficiently program such pervasively parallel systems. Yes, it would be the next big thing but it only wont.

  31. Yes, & evidence of multithreaded code in FREEW by Anonymous Coward · · Score: 0

    "Parallelism has been around for ages and has been used commercially for a couple of decades." - by Nursie (632944) on Friday March 28, @10:50AM (#22893630) Homepage True, & NOT JUST IN COMMERCIALWARE (freeware/shareware too, for a LONG time):

    APK Registry Cleaning Engine 2002++ SR-7:

    http://www1.techpowerup.com/downloads/389/APK_Registry_Cleaning_Engine_2002++_SR-7_.html

    or

    http://www.techpowerup.com/downloads/389/APK_Registry_Cleaning_Engine_2002++_SR-7_.html

    (Either link SHOULD work fine to see it)

    Above ALL else:

    SCREENSHOT:

    http://www1.techpowerup.com/downloads/screenshots/389.jpg

    or

    http://www.techpowerup.com/downloads/screenshots/389.jpg

    (Again - either link URL should work to check this out as an example of what you state, that multithreaded (& thus, SMP ready code) has been around for decades, since that app began its life in 1997 in fact, in freeware no less... so, it's NOT just present in commercialware apps either, but also shareware/freeware also).

    Hey - I am just a SINGLE example of a guy that's been doing "multithreaded apps", since 1995 or so, online: & there are TONS of others that do also!

    (In fact, anyone can examine their windows machine for the presence of multithreaded code, & see that MOST of what you use today IS multithreaded in fact - I run 30 processes here, & 28 of those ARE MULTITHREADED & thus, SMP-ready code!)

    Multithreaded code is taken advantage of by the kernel portion memmgt subsystems of today's MODERN OS for better MULTITASKING (getting more done, by more cores/arms to do work with, so overall MORE GETS DONE (think of Gantt charts).

    (Microsoft isn't alone here either - BSD variants & Linux variants too also do this (which Linux's original single kernel thread/round-robin usermode/Ring 3/RPL 3 "threads" were only sent thru the SINGLE kernel mode/RPL 0/Ring 0 one)...

    In fact? That fact held Linux back from the "Enterprise ready class OS" acceptance for a LONG time, until they built a REAL SMP ready setup (iirc, around kernel 2.2 build or so on Linux kernels (but, I could be off here on the specifics))).

    APK

    P.S.=> Granted, what I use is "coarse grained" multithreaded design, which amounts to doing diff. tasks that process/touch DIFF. DATA, as they operate (rather than "fine-grained multitheading", which is taking a single data set & running portions of its processing on diff. threads BUT, on the SAME DATA (harder to do & NOT everything lends itself to it)).

    E.G.=>

    A=B+C
    B=A-C
    C=B+A

    You cannot put this type of thing into threaded design, & expect gains out of it... simply because B has to WAIT on the completion of A, first... no point in placing A or B onto diff. threads, in other words... apk

  32. After Parallelism, the next big thing is... by SpyPlane · · Score: 1

    Electricity, Automobiles, and the telephone!

    Seriously, didn't we decide that parallel programming was the next big thing when Sutter wrote a big article in Dr. Dobbs a couple of years ago?

    Welcome to the party pal, we've been here a while already!

    --
    "We need a fourth law of Robotics: Stop Fingering My Wife"
  33. Software as a Service != Parallelism by Aaron+Isotton · · Score: 1

    TFA is mainly about SaaS - Software as a Service (yes, I had to look it up). GMail, Google Calendar etc. in other words.

    Honestly I think that parallelism and SaaS are pretty much on the opposite sides of the spectrum. Your typical SaaS application requires no parallelism whatsoever since they are typically low-impact programs. The only real improvement over ordinary software is that you don't have to install it, don't have to maintain it and that you can access it anytime from anywhere.

    A typical SaaS provider has a few dozen to a few thousand servers running a few hundred to a few million instances of his software. Since typically a single server will run many instances of the software, parallelization will "just happen" for free.

    A typical SaaS client runs in a web browser. Since a web browser is probably about the least efficient application GUI ever made (it runs in Javascript over XML over HTTP and uses HTML and DOM to "emulate" a drawing library), parallelization is not your problem there either.

    SaaS can be great and so can parallelization. But they're not related.

    1. Re:Software as a Service != Parallelism by BotnetZombie · · Score: 1

      SaaS can be great and so can parallelization. But they're not related.
      Really? You say yourself:

      A typical SaaS provider has a few dozen to a few thousand servers running a few hundred to a few million instances of his software. Since typically a single server will run many instances of the software, parallelization will "just happen" for free.
      If that's not massively parallel, I don't know what is and someone has to code this end too. Even if you're mostly thinking about the client end, who's to say that you necessarily have to go through the typical browser as is most common now? Or that browsers can't be enhanced to do more work, more efficiently?
    2. Re:Software as a Service != Parallelism by Dragonslicer · · Score: 1

      A typical SaaS provider has a few dozen to a few thousand servers running a few hundred to a few million instances of his software. Since typically a single server will run many instances of the software, parallelization will "just happen" for free.
      If that's not massively parallel, I don't know what is Granted that my only experience with parallel programming was a class in college where the professor did number crunching in Fortran, I don't think a web server really qualifies as a "true" parallel system. A web server just has to send off requests from a queue into new processes/threads and let them go. There are no synchronization, locking, or communication issues to worry about. Threads in a web server might as well be entirely separate programs; they aren't the kind of repeated computation and aggregation that I normally associate with parallel processing.
    3. Re:Software as a Service != Parallelism by BotnetZombie · · Score: 1

      Threads in a web server might as well be entirely separate programs
      The reason you can say this, is that most web servers/containers do a decent job of isolating one request from the other. All that's saying is that the hard part is mostly taken care of beforehand. That's not to say that I haven't seen people screw up, e.g. by using instance variables on re-entrant code...
      I know that what you're getting at is that the single-threaded/synchronized/serial request/response model doesn't require the dev to think much about parallelism. That's not the only way to do the background work of SaaSes though. You can e.g. have multiple asynchronous processes communicating through message queues, adding jobs and doing those jobs as they see fit. Again, if done correctly, each process can do its work pretty much in isolation so it may not change your view. IMO it's still massively parallel even if the hard part is mostly taken care of.
  34. an 8000 node cluster is a parallel supercomputer by vkg · · Score: 1

    http://vinay.howtolivewiki.com/blog/hexayurt/supercomputer-applications-for-the-developing-world-375

    We've seen unambiguously that **GIGANTIC** data sets have their own value. Google's optimization of their algorithms clearly uses enormous amounts of observed user behavior. Translation efforts with terabyte source cannons. Image integration algorithms like that thing that Microsoft were demonstrating recently... gigantic data sets have power because statistics draw relationships out of the real world, rather than having programmers guessing about what the relationships are.

    I strongly suspect that 20 years from now, there are going to be three kinds of application programming:

    1> Interface programming

    2> Desktop programming (in the sense of programming things which operate on *your personal objects* - these things are like *pens and paper* and you have your own.)

    3> Infrastructure programming - supercomputer cluster programming (Amazon and Google are *supercomputer* *applications* *companies*) - which will provide yer basic services.

    Real applications - change the world applications - need parallel supercomputer programming.

  35. Dynamic Execution Backgound by deadline · · Score: 1

    The HPC Cluster people have thought about this stuff for a while. One approach that I have thought about is described in the article:Cluster Programming: You Can't Always Get What You Want There are two follow-on articles as well Cluster Programming: The Ignorance is Bliss Approach" and Cluster Programming: Explicit Implications of Cluster Computing.

    Of course if you really want to know how I feel about this: How The GPL Can Save Your Ass

    enjoy

    --
    HPC for Primates. Read Cluster Monkey
  36. Again, enough already!!! by mlwmohawk · · Score: 1

    We *already* live in a parallel computing environment. Almost every computer has a large number of processes and threads running simultaneously. This *is* parallelism.

    Granted, yes, certain products could benefit by extreme threading, i.e. like PostgreSQL breaking the hierarchy of query steps into separate threads and running them in parallel, like doing a more exhaustive search for the query planner using multiple threads, and stuff like that, but there is always going to be the competition between performance for a single logical process vs the performance for the system as a whole.

    Maybe when/if we get more cores than processes it makes sense, but right now we use all the cores we have. As long as your load average is non-zero, you may be able to benefit from more cores.

  37. Re:Yes, & evidence of multithreaded code in FR by Nursie · · Score: 1

    Oh yeah, no "commercial only" thing was meant there, sorry to imply it. Apache web server would be an example of something that's been using these feature for some time too.

    "You cannot put this type of thing into threaded design, & expect gains out of it... simply because B has to WAIT on the completion of A, first... no point in placing A or B onto diff. threads"

    Oh sure, but where you have multiple threads doing seperate, non-codependant tasks you can parallelise really quite well.

    Anyway, yes, my main point is my continued exasperation at folks who say "it's the next big thing" or "it'll never take off". It's here and has been for years!

  38. threads and multiple cores in current OSes by steverar · · Score: 1

    I'm pretty sure that OS X will distribute threads across however many cores it has to work with. What about MSFT XP, Vista or the Linuxes ? If a program creates 2 threads and the machine has 2 cores, will the OS assign threads accordingly ? Probably depends on current workload, but if the 2 threads are on separate cores then they're running in parallel, right ?

  39. Twenty-plus years on... by AlecC · · Score: 1

    Parallelism was the New New Thing when the Inmos Transputer rolled out in 1984 - a CPU explicitly designed to allow multiple CPUs to co-operate, and with a hardware scheduler to provide on-chip parallelism. Then we had the GAPP (Generalised Arithmetic parallel processor), the Connection Machine, and lots of other weird architectures whose names I cannot recall. I designed one myself in the late eighties, and we took it to breadboard stage (essentially Hyperthreading write very large).

    Forgive me for not getting too excited by this new dawn. I have seen too many false dawns. Yes, parallelism is getting more and more prevalent, but expect more incremental steps, not an explosion.

    --
    Consciousness is an illusion caused by an excess of self consciousness.
  40. What's web 2.0? parrallelism new? by John+Sokol · · Score: 1

    I am still trying to figure out what people are talking about with web 2.0?

      With compuserver (1969), BBS's (1970's), UseNet, E-mail & The Source (1979), The Well & Q-link (1985) we have online communities this whole time. With IRC we have been IM Chatting since 1988.
    And almost all of this existed over the IP based Internet starting around 1983 and starting in 1993 it became http/browser based. I have been using all of these early after their inception.

    So what is new about Web 2.0? I can't see anything new at all, not even a little. Am I missing something.

    Same with Parallelism.

    I was a member of the Parallel Computing Connection PPC a club run by Mitchell Loebel in Silicon Valley going back to 1989 that later renamed itself into the Tech Startup Connection http://www.techstartupconnection.org/ . From that club things like the NUMA Architecture arose.

    Before that Thinking Machines Corporation by Danny Hillis 1982 with the "Connection Machine" and nCUBE.

    Earlier was Control Data Corporation (CDC) and Cray which although technically not parallel processors used parallel Arithmetic circuits.

    But even the Code breaking machines in WW2 used massive parallelism.

    Richard Feynman's work on the Manhattan project, in which in one of his books (I think is was "Surely You're Joking, Mr. Feynman!") he describes a human assisted parallel computer with banks of Primitive IBM computers with humans moving stacks of punch cards between them to plow through the math needed to build the Bomb.

    Point being, that in all of the excitement of Internet for the average Joe we forgot about most of these technologies and are now returning to it.
    So there isn't anything new here, just a rediscovery.

    How to use so many cpu's under Panic in Multicore Land March 11, 2008
    http://developers.slashdot.org/comments.pl?sid=483070&threshold=0&commentsort=0&mode=thread&cid=22719658

    Ask Chuck Moore About 25X, Forth And So On , Aug 28, 2001
    http://slashdot.org/developers/01/08/19/1712249.shtml

    --
    I am always doing that which I can not do, in order that I may learn how to do it. - Pablo Picasso
  41. Just clarifying SMP-Ready code exists in freeware by Anonymous Coward · · Score: 0

    "Oh sure, but where you have multiple threads doing seperate, non-codependant tasks you can parallelise really quite well." - by Nursie (632944) on Friday March 28, @12:30PM (#22894808) Homepage Which is EXACTLY what I did in the example app I wrote & posted... Hence, why I posted the varying design methods possibles on multithreaded code (which due to today's modern OS' process scheduler kernel subsystems componentry, IS thus, "implicitly SMP ready").

    It's much simpler to do, & lends itself to MORE SMP READY SOLUTIONS than does "finegrained" multithreaded (working on SAME DATA, via multiple threads) design (which again, per my last posts' example via mathematics, does NOT always lend itself to gains of ANY kind really).

    Even "coarse multithreading" (doing diff. data on DIFF. THREADS) adds "gains"!

    (Especially if SMP processor/core #1 (0 actually iirc regarding arrays) is saturated to 100% or nearing it. This is when multiple thread design can help (& no "SetProcessorAffinity" EXPLICIT multithreaded designs required either (means more code for processor detection, & also scheduling manually etc. et al))).

    I designed MORE for creating a "Good Multitasking Citizen of the System" via threads, AND CPU-priority control as well... see screenshot of its interface for that latter note.

    I was out to make it as GOOD a multitasker as possible via the design methods I used (not so much for sheer SPEED, as it was designed more for unobtrusive background operation)...

    ----

    Also, "APK Registry Cleaning Engine 2002++ SR-7" TRULY IS, the safest registry cleaner there is, bar none, as well!

    So, how can I say that?

    Well, because I didn't make the 'foolish mistake' others have that design them... & that mistake?

    EXPOSING TypeLibs & CLSIDS (class identifiers) as valid candidates for deletion by END USERS, that unfortunately, most times DO NOT UNDERSTAND THEM or how they work

    (I.E.-> CLSIDS & TypeLibs are tools in the registry PLUS on disk (on the latter) which OLEServer DLLs use - blow the WRONG ONE OF THOSE? Don't wonder WHY stuff in your OS, or apps, stops working!)

    (Dumb move - putting lit matches into the hands of children, living in a tinderbox, exposing those for candidates for deletion from the registry that is... I filter vs. that, & no problems come up in the way of OLEServers/ActiveX controls etc. et al - & it works ALL THE WAY ACROSS ALL 32-bit Windows (9x/NT/2000/XP/Server 2003), flawlessly AND SAFELY!)

    Actually, I find my app has larger benefits than speed up help - It's MORE USEFUL imo @ least, as a forensics tool... what you use on your systems can easily "paint a picture" about you... & this app can either help secure you THAT way, or aid forensics investigators (it has me professionally in THAT capacity, more than once, this is CERTAIN).

    APK

    P.S.=> "Anyway, yes, my main point is my continued exasperation at folks who say "it's the next big thing" or "it'll never take off". It's here and has been for years!" - by Nursie (632944) on Friday March 28, @12:30PM (#22894808) Homepage And, you're correct! Anyone can verify it, using tools like Windows NT-based OS' own taskmgr.exe (or, Microsoft's/SysInternals' ProcessExplorer!). MOST OF WHAT MOST FOLKS RUN, both in OS' AND APPS, is multithreaded & has been for more than a decade now.

    ----

    "Oh yeah, no "commercial only" thing was meant there, sorry to imply it" - " - by Nursie (632944) on Friday March 28, @12:30PM (#22894808) Homepage Oh, I actually didn't THINK you were implying it was for "commercialware only"... it's just that I wanted to clarify the fact that multithreaded design (& thus, implicitly operating SMP ready/parallelism ready code) DOES EXIST & for a LONG while now, in freeware/shareware as well as commercialwares is all.

    (My app merely concretely exemplifies it, via my single example above only (there are TONS more too)).

    Don't want others misled is all... apk

  42. 1980s: Thing Machines, MassPar by peter303 · · Score: 1

    Very old to me. And not fully solved.

  43. Yeah, where are these massively parallel machines? by Latent+Heat · · Score: 1
    My gripe with this multi-core let's program parallel fad is, where are these massively parallel machines?

    Two cores? Big whoop! Four cores? Haven't seen one, and our computing center keeps current with the latest generation desktop machines.

    But factors of (almost) two or (almost) four speedup are no big deal in the grand scheme of things. Wake me up when they are talking about 10 cores, or 100 cores.

    But that is the problem. Our resident computer architecture dude tells us that maybe 10 or 16 cores is an upper limit on account of cache memory or other considerations. To go beyond that they will need another approach -- clusters on a chip? For the low order of parallelism of current multi-core multi-processor offerings, I can't see the payoff in investing a lot of effort into developing, testing, and debugging parallel code.

  44. How utterly ridiculous by Nursie · · Score: 1

    Multi-process and multithreaded applications abound in the real world. Pull your head from your anus and look around you.

    Now, are they going to make things faster in exactly the same way as clock increases? Hell no.
    Do they take some thought to implement? Hell yes.

    However they are here and have been here for decades.

    This is unless you are referring to very, very narrow definition of parallel processing that is more applicable in the scientific than business or home forums - breaking down set, tricky, mathematical problems into multiple chunks.

    if you want to do the same thing over and over again (serve web pages, process payment transactions etc) over multiple processors/cores/whatever, threads work just fine, thanks.

  45. I've got your parallelism right here... by fsmunoz · · Score: 1

    I know I'm personally deploying my Web 2.0 social-mashup-o-sphere site in z/VM running on z10.

    Sure, it can be a bit tiresome to edit my blogroll in XEDIT, but the parallelism... woooosh! My AJAX just *flies* out of that VTAM, Beowulf clusters ain't got *nothing*on me!

  46. Don't Let the Buzzwords Confuse You by Hillgiant · · Score: 1

    Parallelism is actually pretty easy. You just have to completely change the way you think about programing.

    --
    -
    1. Re:Don't Let the Buzzwords Confuse You by Jack9 · · Score: 1

      Parallelism is actually pretty easy. You just have to completely change the way you think about programing.
      ...unless you're already thinking correctly.
      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
  47. Hype by c0d3r · · Score: 1

    Web 2.0 implies HYPE

    Place Web 2.0 and Parallelism inside of a hyper link

    Web 2.0 ... Parallelism

    Result?

  48. Always Was, Always WIll Be by StCredZero · · Score: 2, Funny

    Parallelism was a hot area when I was in grad school 10 years back. We used to say about Gallium Arsenide -- "Gallium Arsenide is the semiconductor of the future -- always was, always will be." Maybe the same thing is true with parallelism -- paradigm of the future -- it's always useful as a way of getting more work done per unit time, but it has high costs associated with it, so people will only use it if it feels like they absolutely have to.

    Parallelism has had broad applicability in graphics. It's definitely useful. But I doubt it's going to obsolete what we can do sequentially.

    1. Re:Always Was, Always WIll Be by pleappleappleap · · Score: 1

      If it ever got cheap, GaAs would be great. It's just too damn expensive.

    2. Re:Always Was, Always WIll Be by StCredZero · · Score: 1

      "If it ever got cheap, GaAs would be great. It's just too damn expensive."

      If it ever got easy to do, massive parallelism would be great. It's just too damn hard for a lot of things, though.

  49. Most parallell developers need the basic tools by Krishnoid · · Score: 1
    We believe a minority of developers have the skills to write parallel code,

    More developers will be able to write parallel code when there exists the proper tools to support such development:

    • a proper parallel debugger which fully makes use of multiple GUI windows
    • a test harness capable of slowing down and speeding up threads to trigger race conditions
    Seriously, aren't these prerequisites to being able to even talk about developing parallel code?
  50. parallelism is dead, long live parallelism by recharged95 · · Score: 1

    This is just a higher level thinking of parallelism applied to business logic.

    This is a time to rethink the business logic--i.e. MBA 's need to start thinking about the behavior of their new-idea systems (i.e. the get rich quick schemes). Hence why this guy is generating buzz that the mechanics of parallel processing has matured enough that we can now have a paradigm change in the business world. IBM has been pushing this the last 2 yrs with its Grid computing initiative. Therefore in the end, it's all about hype and the Benjamins.

    At the application and lower levels--these ideas been around and proven for the last 10years.

  51. I do NOT look forward to our parallel overlords by tlambert · · Score: 1

    I do NOT look forward to our parallel overlords.

    When the only type of tool we have is massively parallel systems, what kind of problems do you think we will apply that tool to, and what kind of problems do you think we will start ignoring? I would rather see us tackle both kinds of problems.

    I suspect, however, we will end up with "the contact lens effect", where someone loses their context lens in a dark alley, then looks for it under a streelight "because the light is better over here".

    -- Terry

  52. The massive memory is here. by jozmala · · Score: 1

    Actually the way they put the massive memory has nothing to do with the normal "desktop pc".
    The massive memory means, that spending several thousand USD you can get a system with 64GB of ram.
    And a company can spend hundreds of thousands to get a system with hundreds of GB:s of ram.
    And spending quite a lot you can get TB:s of ram, and some companies do that, and they do it for a reason.
    Some do it for huge calculations, others do it for running databases on ram. etc...
    Those things exists TODAY.
    It just opens new business opportunities when huge amounts of ram become available on cheaper systems too.
    [cheap as in under 100k$]

    --
    ©God :Copyright is exclusive right for creator to determine the use of his creation.
  53. Regardless by certain+death · · Score: 0

    Of whether you call it Grid computing, Cloud computing, Parallelism or a whatever, it is making it cheaper to bring software (web based) to market. Instead of purchasing 20 servers and having 10 sit idle while I hope that someone buys my super web thingy, I can boot one grid instance and when and if my thingy starts selling, I can boot 10 more servers up in less than 30 minutes. Then I can add and subtract servers on an as needed basis if I have massive traffic, or if I drop down to only hundreds of hits after the initial hype wears off. It really is nice to see it coming to the web.

    --
    "My immediate reaction is "WTF? What kind of moron doesn't make things 64-bit safe to begin with?" Linus
  54. AIX by pleappleappleap · · Score: 1

    It outperforms most stuff in heavily-parallelized workloads. The legacy of the Scalable POWERPARALLEL. (An IBM supercomputer line that ran AIX.)

  55. I use it... by certain+death · · Score: 0

    I am currently working with a company called 3Tera. We are delivering some web based applications as well as some apps we need to be able to scale up and down extreamly fast. I have managed to be able to build an email server in about 30 minutes. Not to mention that if you have questions, their support folks make you feel like you are paying for an entire data center with their fast and professional responses. I for one welcome our new Grid overlords! :o)

    --
    "My immediate reaction is "WTF? What kind of moron doesn't make things 64-bit safe to begin with?" Linus
  56. Selling parallel computers in the early 90s by billstewart · · Score: 1
    I was at NCR in the early 90s, and we were one of several companies selling parallel computers in the 4-16 processor class, running Unix (variants on System V Release 4.x), mostly for the general server market. The CPUs were Intel, either 486 or 586 depending on the year. Some of the companies were specialists, like Sequent, some were generalists like HP. I'd been using some of that technology in the late 80s as well. Also in the late 80s, at AT&T Bell Labs, we had some graphics machines with up to 64 or 128 DSPs on them, back when DSPs were already a lot faster than general-purpose chips. It let us get rendering speeds that you still couldn't achieve today without spending at least $29 for a video card (:-), and up to about a GigaFLOPS of horsepower if you could keep the floating-point pipelines full.


    And we also had Teradata, which had specialized database machines, with up to about 500 disks, with a processor per disk and a master processor to split up workloads, typically spreading out an SQL query across a bunch of disks.


    Parallel's always going to be with us, because it's an obvious technique to take whatever hardware's available that generation and build bigger machines by clustering a bunch of them together. The only real difference today is that the parallelism is increasingly moving onto the chips, because it's getting tougher to shrink chip features.

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  57. Usually when something is that good... by v(*_*)vvvv · · Score: 1

    ...it catches on pretty quickly. It is obvious from all the posts here that parallel comp is very old... And if it is that old, yet has never been hot, then why now?

    Only 1% know parallel programming? Well, how many people a day get inspired to go pick up a parallel computing book? That has something to do with it. What is it for, and why do I need it?

    Personal computing exploded once it was on the scene. So did web development. These things you can start small, and they come to you, as opposed to you having to go actively seek them out. Parallel computing has never revealed itself in anything I've done. I've never came across it or tripped on it in any of project.

      Our processors are idle 90% of the time, and they keep getting faster. Most of us don't need parallel computing.

    With that said, if you invest in it you're an idiot.

  58. Flash as a step between RAM and Disk by billstewart · · Score: 1

    While you might not want to replace your entire disk infrastructure with RAM, there's an intermediate level which is to use Flash. The densities and price/GB are a good bit better than RAM, it doesn't need to stay powered to keep data, and you don't have millisecond-long delays from rotation or seeking, though the throughputs aren't as fast as RAM. The limited numbers of writes that old flash had have been improved a lot, and wear-leveling technology takes care of most of the rest. Operating systems aren't always really set up to use it (Vista supposedly has some capabilities), and you may end up just using it as swap space, but it's still theoretically a big win for some uses.

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
    1. Re:Flash as a step between RAM and Disk by adisakp · · Score: 1

      While you might not want to replace your entire disk infrastructure with RAM, there's an intermediate level which is to use Flash.

      Flash doesn't work for a lot of applications due to speed. With the massive memory, you want the "ram disk" io to be orders of magnitude faster than conventional disk. Flash is typically 3-100 MB per second and usually write much slower than they read (Cheap USB keys write at 3MB/s and the fastest consumer SSDs read at 100MB/s). Often linear reads from a normal hard drive can be faster than linear reads from flash memory. Flash memory usually only beats hard drives due to access times and a fast (Raptor/etc) HD is faster than most flash drives. RAM speeds are currently measured in GB sec and can be a hundreds to thousands of times faster than flash.

  59. Coarse/Medium/Fine-grained parallelism by billstewart · · Score: 1
    Sure, most of us haven't done much with fine-grained parallelism, unless we've been programming for graphics processors or the SSE / Altivec / etc. SIMD processing capabilities on PCs and Macs. On the other hand, most of us have used multi-user web servers, and many of us have used a fairly radical technology called "time-sharing" that has some relationship to the ancestors of Linux, from back when computers cost enough that more than one person might use them.... It's been a few years since I stuck my fingers into the guts of an operating system kernel, but Windows is happily (well, grudgingly) running about 30 processes which could get spread out across multiple cores, and generally the only thing that burns CPU on my computer is runaway Firefox processes, or brief bursts of computing when my VPN starts up. I suspect the graphics system is doing a lot more in the GPU, but I don't see that, and it's all SIMD stuff so it's not like finding parallelism for it to exploit is particularly difficult.


    So how do you find workloads that can exploit many cores effectively? You can do servers, which can do just fine by sticking each client process/thread onto a single core, or reinvent database parallelism, or run virtual machines since nobody writes their applications securely enough to use Unix-style multiple users any more. Or you can find applications like graphics that parallelize well enough and use a bit of glue to hand of chunks of SIMD work to different cores. There are getting to be fewer and fewer CPU-bound problems that don't fit onto a single processor well. So maybe it's time to start moving more kinds of applications into the same chip - move the graphics off the GPU and back into the main processor, or have different types of cores for different applications.


    If we can't find ways to do things like that, it's going to be annoying to chip-makers to have to find ways to make money as Moore's law makes high-speed CPUs cheaper and cheaper. There's a certain amount of Microsoft Bloatware(tm) and gamer framerate-lust that can keep them going, but basically desktop CPUs are already faster than most of us know what to do with. VmWare means that the fast multicore CPUs are getting exploited by people who use them to cut down on the number of servers they're buying by factors of 5-10, though the electricity savings means that you can sell a lot of server cores into the replacement market.

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  60. Please just let Parallelism Easier by crf00 · · Score: 1

    Now the biggest problem of parallelism is actually sharing data, because you share data you need to worry about data corruption and deadlock. So why don't we just don't allow sharing between two processes at all? Yes it might be slower, but it will be alot easier and there is still alot of parallelism can be achieved without sharing data. We know that there are design patterns that don't need to share data, such as the producer/consumer aka pipeline pattern. So why don't we just only use these patterns?

    I think we need a parallel programming language that disallow data sharing. It could adopt Actor Oriented Programming, which is a parallel programming methodology with computational entities called actors. The only concern we need to think about is how to pass complex data structures by value to another process and how to minimize data communication. I don't have much experience on Erlang but I think it is a nice programming language to try on.

    The advantage of disallowing sharing of data is so that inexperience programmers can write relatively efficient parallel programs without worrying too much about race condition and deadlock etc. Another advantage is that the program you written can be ported onto any number of processors across a network, because if you don't share data there is not much difference whether you will run your program in just one or many computer! I think that having data communication through network protocol is not wasteful, because there are alot of excellent applications do well in parralelism by distributed computing through network. Hence I think the time wasted on data communication between cores in local processors is much less than the time saved on debugging a shared memory parallel program.

    I can't really see any advantage of trying to crunch every single algorithms in a program into parallel algorithms, because in that case what is the whole point of multicore processors? Imagine that some day you have a 16-core processor and you are running 16 desktop applications, all of the 16 applications split their procedures into 16 threads and they made full use of your 16-core processor, and each of them finish their tasks in 1 second. What is the net effect then? Is there any more difference than running 16 single threaded applications each on one core? My whole point is that I don't think there is a need to boost performance on an application if the application can finish its task in very short time. Building a few threads in an application to handle different aspect, such as one thread to handle GUI and one to handle processing, that is good enough parallelism in my opinion.

    I am currently taking the module of parallel and concurrent programming in my university, and sadly the lecturer only taught us how deadlock and race condition appear and how synchronization techniques such as locks and semaphores work. But the lecturer doesn't teach us anything about how to write a good parallel program, so I'm pretty sure that most of the students that rely on this module cannot write any good parallel program. Anyway please do correct me if I have anything wrong. Thanks.

  61. "...such as Saas as an appliance" by villy · · Score: 1

    SaaSaaa? This is getting ridiculous. Really.

  62. Re:Dont believe? Intel & MS have made a $20M b by Kent+Recal · · Score: 1

    $20 mio is pocket change for intel. If that's really all they put into
    research of parallel computing then that doesn't seem to rank so high
    on their priority list.

    Wouldn't surprise me as the market for parallel computing is fairly small
    (HPC) when compared to the cash cow sectors (server, consumer).

    I think the article is hyperbole. There isn't much need in those
    latter markets for parallelism at the hardware level because only
    few tasks can be parallelized at that level.