Slashdot Mirror


IBM's Chief Architect Says Software is at Dead End

j2xs writes "In an InformationWeek article entitled 'Where's the Software to Catch Up to Multicore Computing?' the Chief Architect at IBM gives some fairly compelling reasons why your favorite software will soon be rendered deadly slow because of new hardware architectures. Software, she says, just doesn't understand how to do work in parallel to take advantage of 16, 64, 128 cores on new processors. Intel just stated in an SD Times article that 100% of its server processors will be multicore by end of 2007. We will never, ever return to single processor computers. Architect Catherine Crawford goes on to discuss some of the ways developers can harness the 'tiny supercomputers' we'll all have soon, and some of the applications we can apply this brute force to."

334 comments

  1. Clearing things up a bit by AKAImBatman · · Score: 5, Insightful

    In an InformationWeek article entitled 'Where's the Software to Catch Up to Multicore Computing?' the Chief Architect at IBM gives some fairly compelling reasons why your favorite software will soon be rendered deadly slow because of new hardware architectures.
    *THUNK*

    owww... my head...

    There are a couple of serious problems with this statement. The most important one is that the article doesn't say that existing software will get slower. And there's a reason for that: Existing software will continue to run on the individual processor cores. Something that they've done for a long period of time. Old software may not get any faster due to a change in focus toward parallelism vs. increased core speed, but it's not going to suddenly come to a screeching halt any more than my DOS programs from 15 years ago are.

    Secondly, multicore systems are not a problem. Software (especially server software!) has been written around multi-processing capabilities for a long time now. Chucking more cores into a single chip won't change that situation. So my J2EE server will happily scale on IBM's latest multicore Xenon PowerPC 64 processor.

    Finally, what the article is really talking about is the difficulties in programming for the Cell architecture. Cell is, in effect, and entire supercomputer architecture shrunk to a single microprocessor. It has one PowerPC core that can do some heavy lifting, but its design counts on the programmers to code in 90%+ SIMD instructions to get the absolute fastest performance. By that, I mean that you need to write software that does the same transformation simultaneously across reasonably large datasets. (A simplification, but close enough for purposes of discussion.) What this means is that the Cell processor is the ultimate in Digital Signal Processor, achieving incredible thoroughput as long as the dataset is conductive to SIMD processing.

    The "problem" the article refers to is that most programs are not targetted toward massive SIMD architectures. Which means that Cell is just a pretty piece of silicon to most customers. Articles like this are trying to change that by convincing customers that they'd be better served by targetting Cell rather than a more general purpose architecture.

    With that out of the way, here's my opinion: The Cell Broadband Architecture is a specialized microprocessor that is perpendicular to the general market's needs. It has a lot of potential uses in more specialized applications (many of which are mentioned in the article), but I don't think that companies are ready to throw away their investment in Java, .NET, and PHP server systems. (Especially since they just finished divorcing themselves from specific chip architectures!) Architectures like the SPARC T1 and IBM's multicore POWER/PowerPC chips are the more logical path as they introduce parallelism that is highly compatible with existing software systems. The Cell will live on, but it will create new markets where its inexpensive supercomputing power will open new doors for data analysis and real-time processing.
    1. Re:Clearing things up a bit by Red+Flayer · · Score: 5, Insightful

      The "problem" the article refers to is that most programs are not targetted toward massive SIMD architectures. Which means that Cell is just a pretty piece of silicon to most customers. Articles like this are trying to change that by convincing customers that they'd be better served by targetting Cell rather than a more general purpose architecture.

      In other words, a spokesperson from $COMPANY is trying to convince the market that they'll soon need to use $PRODUCT if they want best results, conveniently which is sold by the $COMPANY?

      Imagine that.

      Sorry, cynical today.
      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    2. Re:Clearing things up a bit by ArcherB · · Score: 1, Informative

      In other words, a spokesperson from $COMPANY is trying to convince the market that they'll soon need to use $PRODUCT if they want best results, conveniently which is sold by the $COMPANY?

      IBM is not the only company releasing multi-core processors. Single core processors will soon go out the same way the 386SX did when 32-bit computing became the norm.

      --
      There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
    3. Re:Clearing things up a bit by Red+Flayer · · Score: 1

      IBM is not the only company releasing multi-core processors.
      It's not about multi-core processors, it's about the Cell architecture, for parts of which IBM holds many patents and makes a lot of money on licensing.
      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    4. Re:Clearing things up a bit by xtracto · · Score: 2, Informative

      (many of which are mentioned in the article), but I don't think that companies are ready to throw away their investment in Java, .NET, and PHP server systems. .

      The Cell will live on, but it will create new markets where its inexpensive supercomputing power will open new doors for data analysis and real-time processing..

      I just wanted to quote these two sentences you said relevant to my comment. The problem with multicore computing power is not in the software developers but in the available tools. The problem with having say, 60 cores able to run in parallel is that our computation methods (turing based machine computation) are based on the basic "serial algorithm". The main problem resides in the programming languages. As far as I know (although I am *sure* I must be wrong) all the "major" available programming languages are based on this paradigm and they only provide "some functionality" for parallel processing. What we need are compilers and (more importantly and difficult to come up with I think) languages with which
      we can create programs that are inherently parallel.

      --
      Ubuntu is an African word meaning 'I can't configure Debian'
    5. Re:Clearing things up a bit by ArcherB · · Score: 1

      It's not about multi-core processors, it's about the Cell architecture, for parts of which IBM holds many patents and makes a lot of money on licensing.

      You are correct. But I should point out that IBM is not the only company producing the Cell either. Sony and Toshiba also own rights to the Cell, but I doubt they will start putting them into servers.

      --
      There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
    6. Re:Clearing things up a bit by Anonymous Coward · · Score: 0

      As far as I know (although I am *sure* I must be wrong) all the "major" available programming languages are based on this paradigm and they only provide "some functionality" for parallel processing.

      With any language I'm aware of you just have to implement it. Check out "java concurrency in practice" It is quite a bit more difficult than single threaded as you have to think about what can be done in parallel -- with JDK5 it is a lot easier to implement it in java correctly.

      The trouble is finding stuff that can be done in parallel as a lot of operations are serial in nature.

    7. Re:Clearing things up a bit by Anonymous Coward · · Score: 0

      Don't you mean $CYNICAL?

    8. Re:Clearing things up a bit by Anonymous Coward · · Score: 1, Funny
      it's about the Cell architecture, for parts of which IBM holds many patents and makes a lot of money on licensing.

      I see a worldwide market for 5 or six of these "supercompute on a chip" systems, tops.

    9. Re:Clearing things up a bit by whiskeyriver · · Score: 0

      Scompany is my favorite company!

      --



      That's sooo Osama bin Laden.
    10. Re:Clearing things up a bit by markov_chain · · Score: 2, Insightful

      Most apps won't benefit; after all, most apps barely use any CPU at all.

      Things like audio/photo processing could benefit a lot, though. I imagine all you would need is a worker-thread design pattern, and let the OS do the rest.

      --
      Tsunami -- You can't bring a good wave down!
    11. Re:Clearing things up a bit by Red+Flayer · · Score: 1

      True, it was a collaborative effort from STI. However, IBM is the chief patent-holder, and stands the most to gain from promoting developent for Cell architecture.

      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    12. Re:Clearing things up a bit by AKAImBatman · · Score: 2, Informative

      he problem with multicore computing power is not in the software developers but in the available tools. The problem with having say, 60 cores able to run in parallel is that our computation methods (turing based machine computation) are based on the basic "serial algorithm".
      I think you're misunderstanding the subject here. The Cell Processor is designed for chewing through massive data sets at an unprecidented rate. It has almost nothing to do with multiprocessing, and everything to do with fast transformations and data analysis.

      Take 3D programming as an example. Before I can render the screen, I have to run thousands of vertices through a matrix transformation so that they align with where the camera sees them. This is a bulk operation that can be run in parallel by multiple SIMD cores (each tranforming 2-4 vertices per instruction) by simply providing each core with a copy of the computational matrix. Simple, straightforward, and FAST. But utterly useless for general purpose code like multithreaded web servers.

      So the problem is not a lack of tools. The problem is that the Cell is a specialized architecture that's very different from traditional multiprocessing. It's designed for long number-crunching applications that have traditionally been the forte of supercomputers. Ergo, it is a supercomputer on a chip.
    13. Re:Clearing things up a bit by Red+Flayer · · Score: 1

      I see a worldwide market for 5 or six of these "supercompute on a chip" systems, tops.
      I know that's an "it's funny, laugh" comment, but note that the Cell architecture is used on the PS3[1], and Toshiba has stated that every HDTV they produce will use Cell architecture.

      [1] Of course, IMO, the market for the PS3 should be for about 5 or 6 units... but that's just because of how I feel about Sony.
      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    14. Re:Clearing things up a bit by Anonymous Coward · · Score: 0
      While it's true that for absolute peak performance you'll want SIMD. That's not how the cell is architected or what was in mind. The SPEs have full featureed instruction sets like any common RISC chip. What they don't have is memory IO or a lot of the big silicon designed to make single units run fast, they trade branch predictors (which are kind of overrated anyways) and out of order for more cores. It's a different way of doing things across the board. The one thing it really has going for it is that if you can make sure stuff work correctly with SPEs (easier than you might think, they have so much support for automatic paging of the SPE memory support and what have you that you can almost treat them like normal cores at times) then if a single SPE isn't enough, you can probably get what you want with 2 or 3 and there is a very clear direction to making things faster, throughput wise.

      It seems to be working with blue-gene.

    15. Re:Clearing things up a bit by adam31 · · Score: 5, Informative
      but its design counts on the programmers to code in 90%+ SIMD instructions to get the absolute fastest performance.


      This is an often-repeated misconception. Cell abandons the practice of having different fp, integer, and vector registers... all registers are 128-bit and any instruction can be issued on any of them, and those instructions are generated by a C++ compiler. So saying that programmers code in these SIMD instructions is like saying that "x86's design counts on programmers to shuffle values between the fp stack, integer and vector registers, and code in separate fp, integer, and vector instructions to get the absolute fastest performance".

      The reality is that Cell was targeted more at solving the memory problem than just doing SIMD stream processing. Engineers looked around and decided a 32kb L1 cache was silly... not having a cache-snooping DMA engine (or prefetch engine) would be silly. Putting nine cores on a bus with 7 GB/s bandwidth would be silly. Not being able to overlap memory latency with execution is silly. To solve all these problems, you give up having a single coherent address space.

      But there is even more power in Java, .NET investments now... It is completely within the realm of possibility to write a runtime that executes your Java thread on SPU, or JITs the .NET to SPU code. It's a nice benefit that these are already handle-based rather than pointer based languages, so the memory-mapping is a task of the runtime and transparent to the code. And IBM is working hard on native C++ code generation that is agnostic of the address space problem.

    16. Re:Clearing things up a bit by rifter · · Score: 1

      "It's not about multi-core processors, it's about the Cell architecture, for parts of which IBM holds many patents and makes a lot of money on licensing."

      You are correct. But I should point out that IBM is not the only company producing the Cell either. Sony and Toshiba also own rights to the Cell, but I doubt they will start putting them into servers.

      They are, however, the only company working on the Roadrunner project, which TFA was actually about and which TFA (or rather IBM's spokesperson in TFA) says will produce the technological products they will soon be able to provide through a rep near you :D. There are also allusions to the idea that the technology has applications beyond supercomputing; that it will be useful in "normal" multicore systems as well. I don't know how accurate that is, but the hypnotic salespeak does make one feel warm and fuzzy inside.

      It is an interesting approach to say the least. I am sure this is a hard requirement in the supercomputing world (though I must confess some ignorance in that area) but frameworks like this do have useful applications, and if implemented properly can make life easier potentially. I think the problem is that any technological abstraction we have tried thus far, be it a soft requirement like apis or libraries or a harder requirement like we have with JVMs tend to be judged suboptimal by experienced developers for one reason or another. When that happens either you get developers coding around the thing (basically poking holes in the abstraction model), which has the effect of negating some of its benefits, or in places where that is not an option (like JVM) they choose not to use it which is probably at least as bad.

      I know this is gross oversimplification but so is the article. In any case every time we hear about tech x that will save the world, especially in this particular way, we run into the same set of problems, chief of which are universal adoption as a requirement (which doesn't happen) and whether the tech performs like the brochure said it would in real life (I think it's safe to include a ditto here). It sounds like great tech and I hope it works out well. I can't pretend to understand it at a level that matters for working with it, but it does sound useful in general computing terms. If it can be used on non-supercomputers I don't doubt IBM will use it themselves, maybe integrating it with AIX and even their Linux solutions. Even if it isn't it's probably really great for supercomputing applications, and it's pretty cool that they are using Opterons in the hardware side of the project.

      Whether it will be useful for anyone else, or used by anyone else, who knows. The fact remains that the criticism is correct. This article is an announcement of a potential future product given by a spokesperson for the company producing it in which they outline a computing problem, declare that there have hertofore been no real solutions, then propose theirs. That does not make it inaccurate, wrong, or bad, but it is in fact true.

    17. Re:Clearing things up a bit by Rycross · · Score: 1

      Functional programming languages are highly suited to parallelization. I think in the future we'll see functional languages become more mainstream, and/or a lot of functional programming paradigms

    18. Re:Clearing things up a bit by TheRaven64 · · Score: 4, Insightful

      The problem with having say, 60 cores able to run in parallel is that our computation methods (turing based machine computation) are based on the basic "serial algorithm"

      We've had theoretical foundations for parallel processing back since Turing (see non-deterministic Turing Machine) and rigourous theoretical frameworks such as ?-calculus and CSP for decades. We even have languages like some Haskell dialects and Erlang that are built using these as foundations.

      If you choose to use languages designed for a PDP-11, that's up to you, but the rest of us are quite happy writing code for 64+ processors in languages designed for parallelism.

      --
      I am TheRaven on Soylent News
    19. Re:Clearing things up a bit by Anonymous Coward · · Score: 0

      This is an often-repeated misconception. Cell abandons the practice of having different fp, integer, and vector registers... all registers are 128-bit and any instruction can be issued on any of them, and those instructions are generated by a C++ compiler. So saying that programmers code in these SIMD instructions is like saying that "x86's design counts on programmers to shuffle values between the fp stack, integer and vector registers, and code in separate fp, integer, and vector instructions to get the absolute fastest performance".
      Having the compiler hide the use of SIMD instructions doesn't make it any less correct that the processor is designed with SIMD in mind. It's like having 8 Emotion Engines tied to a PowerPC G5 parent processor.
    20. Re:Clearing things up a bit by LordoftheLemmings · · Score: 1

      And 640K ought to be enough for anybody right?

    21. Re:Clearing things up a bit by rifter · · Score: 2, Insightful

      With any language I'm aware of you just have to implement it.

      But there's the rub ... technically you can implement anything you want. Heck, you can do it in assembler! But do people do it and do they do it right? How much extra time and energy does it cost you and how difficult is the task? Why did database application developers care whether the database inherently supported transactions when they could just implement it in the application? Why did anyone care about Java's garbage collector when it can be (and was) implemented in C++? Why did people care about the C++ support for object orientation (or Java's enforcement of such) when you could implement such support yourself in C? Why does anyone use or care about GDI objects, GUI widgets, GUI APIs, and such when they can just write a program that draws stuff on the screen and implement that too? Why do we care that there are libraries providing threading functions, etc?

      The point is that abstraction layers, libraries, frameworks, object classes, etc exist specifically to provide functionality that is needed on a broad basis with an interface that is meant to be intuitive and usable for developers writing code within a given platform or context. The hope, too, is, that they might enforce certain policies and methodologies and provide more optimal implementations as well as an easier means of correcting any problems down the road. (If I have 1000 apps, each implementing some functionality a certain way, and a bug shows up that affects all or a chunk of them, I have to update them all. If these 1000 apps call on a library that implements that function and a similar bug is found, I can just update that library, in theory).

    22. Re:Clearing things up a bit by texag98 · · Score: 1

      Existing software will continue to run on the individual processor cores. Something that they've done for a long period of time. Old software may not get any faster due to a change in focus toward parallelism vs. increased core speed, but it's not going to suddenly come to a screeching halt any more than my DOS programs from 15 years ago are.

      This somewhat depends on what architects do. If they add another level of cache to a processor then that increases the penalty of a cache miss which could lead to a decrease in performance... just a thought.

      A lot depends on what hardware architects and mass-market compiler developers start doing when they get beyond having just 4 or so cores on a processor. Performance of legacy code remaining fixed in terms of wall-clock time to solution forever definitely depends on a number of things.
    23. Re:Clearing things up a bit by Lazerf4rt · · Score: 3, Interesting

      TFA is nothing more than a press release announcing the plan to develop a supercomputer in Los Alamos, New Mexico. Yeah, it'll be made by IBM and based on Cell (and Opteron). In an attempt to make it more interesting, the article seems to struggle to make another point... and the point is difficult to discern from its river of vague generalities, lame statistics and other banalities. Best I can fathom is that the writer (IBM's chief architect) simply hopes that new, multicore-centered development tools will somehow emerge as a result of the computer's development:

      We are inviting industry partners to define the components (APIs, tools, etc.) of the programming methodology so that the multicore systems are accessible to those partners as well.

      Fair enough. The Slashdot summary is a horrible spin on TFA, and the attached "-dept." tagline attached is just embarassing. Too bad there wasn't more information content here, because multicore processing is indeed the future, and this could have been a much more interesting read.

    24. Re:Clearing things up a bit by AKAImBatman · · Score: 1

      16-bit software from the DOS days runs like crud on modern processors. But because of the constant die shrinks and Gigahertz updates, the software runs many, many, many times faster than was originally intended. So even a gross reduction in performance can still lead to a net gain for old software. :)

    25. Re:Clearing things up a bit by maxwell+demon · · Score: 1

      They are, however, the only company working on the Roadrunner project
      I guess the competition is working on a Coyote project?
      --
      The Tao of math: The numbers you can count are not the real numbers.
    26. Re:Clearing things up a bit by sconeu · · Score: 1

      You miss the point.

      The 5 or 6 computers statement is based on an apocryphal comment by Thomas J Watson, chairman of IBM: "I think there is a world market for maybe five computers."

      --
      General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
    27. Re:Clearing things up a bit by caffeinemessiah · · Score: 1
      Absolutely. Also, even though you have 60 cores in parallel, each core is running your good ol' vanilla serial code. So at the end of day, you take your Turing machine, slap in a sync/communication library like MPI or PVM and before you know it, your 60 cores are chugging along happily.

      Also, non-deterministic Turing machines are not really good models for parallel computation as we know it. Simulating non-determinism exactly would require an exponential number of cores. Nevertheless, there are other computational models that deal with parallelism in the way we know it. My favourite complexity class in this respect is the bizzarely-named NC (Nick's class).

      --
      An old-timer with old-timey ideas.
    28. Re:Clearing things up a bit by Anonymous Coward · · Score: 0
      If you choose to use languages designed for a PDP-11, that's up to you, but the rest of us are quite happy writing code for 64+ processors in languages designed for parallelism.

      ... and giving you the performance equivalent to the one of C on one processor. Well except for O'Caml.

    29. Re:Clearing things up a bit by Prof.Phreak · · Score: 1

      Old software may not get any faster due to a change in focus toward parallelism vs. increased core speed, but it's not going to suddenly come to a screeching halt any more than my DOS programs from 15 years ago are.

      8086 had 29,000 transistors.
      Opteron has 230,000,000 transistors.

      Now, imagine a CPU with 8192 cores, each one as fast as an 8086.
      Now imagine doing 8 thousand (basic; [multiplication, etc. would be extra]) operations in 1 clock tick.

      This is something (or close to it) that's possible with current technology, yet noone is doing it.

      While I agree with what you say, I'd imagine there are uses for CPUs with -many- cores each one being no faster than your old 8086 (I seriously doubt we'll get 10000 modern cores into the size of a single CPU).

      Ie: massive parallelism, with each core being relatively feeble computationally. I'd also imagine such a setup having the ability to outperform single core processors by quite a margin at tasks specifically built that utilize the parallelism.

      --

      "If anything can go wrong, it will." - Murphy

    30. Re:Clearing things up a bit by Branko · · Score: 1

      And 640K ought to be enough for anybody right?

      Well... 640K processors ought to be enough for anybody ;)

    31. Re:Clearing things up a bit by cmacb · · Score: 2, Insightful

      So many misconceptions, so little time...

      I'm not sure if anyone above read past the third paragraph, but I see no evidence of it.

      Noteworthy in the article was a combining of conventional X86 technology and Cell technology along with some state of the art memory management. (I'm not employed by or invested in any of the companies involved, just reporting the facts mam).

      For the average user there is NO downside to multi core technology, so any statement to the contrary (in the article summary in this case, not the article itself) gets me worked up.

      If you don't have a multi-core machine, go into your local superstore and start up the Windows Task Manager and watch the little graphs on the two (or more) processors as you open programs etc. See, both processors are being kept busy doing things in the background? Modern bloat-ware OSs have plenty of stuff that can be done in the background as you type up your little office party announcement. The "average" user can even benefit by being able to keep multiple programs running at the same time, doing a big complex document reformat, syncing your palm device, downloading the latest virus update, and so on. The OSs have been pretty good at multitasking for some time now, and while 16 or 32 processors are probably overkill, it is simply wrong to say there is no benefit and REALLY wrong to imply that there is some sort of disadvantage to multi-core processors (or even multiple single core processors) in almost ANY modern use of a computer. Beyond having multiple processors, advances are being made in controlling shared memory and I?O devices so those processors don't end up stepping on each others toes. What is finally happening is the "commodity" PC is beginning to look like a mainframe of the 70s (and earlier, which had separate devices for memory and I/O management) which the OS, not the application programmer, could use to very great effect. So THERE.

      Microsoft has been doing some "interesting" work in using the multiple processors in some graphics cards to do floating point calculations in the background and getting orders of magnitude faster restult with some (specialized) applications. Of course the better way is to leave the graphics card alone to accelerate graphics (presumably thats why you paid big bucks for it) and build the basic PC to handle all these parallel tasks (not just spreadsheet recalcs, but ordinary I/O and memory management) more efficiently. Based on this article, sounds like the scientific community will be seeing such systems in the near future, and us ordinary desktop users will probably start benefiting from it (or some Dell/Apple/Intel/etc variation in a few years.) It's great news.

      Yes, this is a sales piece. Just like yesterdays "announcement" of the upcoming 45nm processors was a (gigantic) sales piece coordinated to show up here there and everywhere with pre-taped videos, Scoble blog DRAHMA meltdowns and more pictures of bunny suits than we've seen in ten years. How much actual "news" was there in the Intel/IBM announcments? Not a lot as I think they (and AMD, and IBM) have been hawking this change for almost a year now. Yesterday we learned about "Hafnium", or at least that aspect of it was news to me, and in all these product announcements, even when there isn't MUCH news, there are often tidbits that make it interesting. There is no reason to be complaining about the article, at least until it has been duped half a dozen times or so (and it probably will be.)

    32. Re:Clearing things up a bit by Anonymous Coward · · Score: 0

      Now, imagine a CPU with 8192 cores, each one as fast as an 8086.
      Now imagine doing 8 thousand (basic; [multiplication, etc. would be extra]) operations in 1 clock tick.
      What you're talking about is neither feasible nor useful. Not to mention the insane number of pins you'd need to connect to the wafer.
    33. Re:Clearing things up a bit by Anonymous Coward · · Score: 0

      Is it just me or does Catherine Crawford sound like a dim wit when it comes to the marketing & hype game?

      Let me see. Multiple processes and multiple threads can all take advantage of multi-core platforms. I've been working on multi-threaded apps for years and years now. We've been spreading out stability risk via multiple processes for years now too.

      Let me see, graphics engines have applied parrallel procssing indirectly via graphics processors for some time now. The NSA, DOD, NASA, etc. have been utilizing parrallel processing for some time now.

      What does she want? MS Word to go highly parallel? The average word processor is idle for 99% of the available CPU cycles.

      Video games are going in this direction. We already have a form of parallelism with software that runs on a CPU and can also take advantage of a graphics processor and a separate physics engine/processor. Moving forward they will take advantage of multiple cores and/or processors for better AI, better graphics, better physics, etc.

      Heck most colleges and universities have been teaching CS majors multi-threading and parallel processing for some time now.

      I think in the future IBM may want to rope Catherine Crawford back in to keep from appearing BEHIND THE TIMES. A sales person she is NOT!

    34. Re:Clearing things up a bit by nuzak · · Score: 1

      > So my J2EE server will happily scale on IBM's latest multicore Xenon PowerPC 64 processor.

      It will, but hardly at pace with something written for parallel architectures to begin with. Don't think 4 cores, think 40. Now think of how much serial work the J2EE server is doing per-request. While it's querying the database, it could be preparing the component tree of the returned view, maybe even speculatively filling some of it in. The renderkit shouldn't need to wait for a complete tree. And so on.

      Sure it'll scale up to more requests, but if your CPUs are sitting idle when the requests aren't coming in 40 at a time, they're being wasted. None of this is anything you should have to write -- a Sufficiently Advanced Compiler should be able to do enough analysis to parallelize tasks itself. But such a compiler is always a pipe dream when it comes to existing languages, and that's why software is, if not at a "dead end", at least not keeping up.

      --
      Done with slashdot, done with nerds, getting a life.
    35. Re:Clearing things up a bit by Anonymous Coward · · Score: 0

      In order to avoid looking foolish, you shouldn't try to make the joke if you don't actually understand how. Idiot.

      HTH. HAND.

    36. Re:Clearing things up a bit by David+Greene · · Score: 1

      She's not talking about Word. She's talking about ISV codes. Like NASTRAN. Her point is that these codes are not written to scale to thousands of cores. And she's right.

      GPGPU and video games are not the same as bioinformatics or particle physics. These are heavy-duty codes, some of which have a very hard time scaling to large numbers of processors. Custom codes are usually much better about this than ISV codes.

      Her point is that to use these new architectures, the software stack has to get much better. She's spot on. Certainly PGI and PathScale have not shown yet that they can keep up. I believe they will get there eventually, but it may be much later than we'd like. We will see.

      --

    37. Re:Clearing things up a bit by Kazoo+the+Clown · · Score: 1

      There are a couple of serious problems with this statement. The most important one is that the article doesn't say that existing software will get slower. And there's a reason for that: Existing software will continue to run on the individual processor cores. Something that they've done for a long period of time. Old software may not get any faster due to a change in focus toward parallelism vs. increased core speed, but it's not going to suddenly come to a screeching halt any more than my DOS programs from 15 years ago are.

      Uh-- what if the 3GHZ CPU you have now is upgraded for a 64-core 500MHZ system? You'll have essentially ~32GHZ of performance for programs that can utilize parallelism, but only 500MHZ of individual core performance for those that cannot...

      Also remember the old RISC and CISC battles? Then we came to see that both architectures evolved towards each other. RISC instruction sets became more complex, CISC ones adopted some of the RISC architecture advantages. I expect that multi-core and CELL may do the same. But it's possible in the process that rather than continuing to crank up the clock speed and have to further shorten the signal paths in order to make it work, that they'll reduce the clock and increase the parallelism in order to open up means of performance expansion that aren't butting up against some of the hard physical limitations as clock rate currently is.

      I'm not saying that's definately how it all is going to go, but it is a distinct possibility that is consistent with the statement that "current programs will get slower," and is not necessarily unreasonable, IMHO.

    38. Re:Clearing things up a bit by BKX · · Score: 1

      Um, 386's were 32-bit. They were the first 32-bit Intel processors, actually. The 286 was the last 16-bit CPU Intel (well, general-purpose CPU; they still make 16-bit microcontrollers and the such). 386's went the way of the dodo quickly when 32-bit computing became the norm in the Windows world (it already was elsewhere) because the Windows world didn't go 32-bit until Windows 95 in 1995. This was NINE years after the 386 was released. Furthermore, Intel continued to produce 386's until LAST YEAR.

      I agree that single-core processors are going to be out fairly soon, but to say that 386's went out of style when 32-bit computing became the norm is gross mischaracterization. From personal computing, 386's were long gone, and from the world of computing in general, 386's had an extremely long life.

    39. Re:Clearing things up a bit by ArcherB · · Score: 1

      Um, 386's were 32-bit. They were the first 32-bit Intel processors, actually

      I stand corrected. I was thinking of the 386sx and did not know that it came out AFTER the original 386, which was renamed to 386dx. The 386sx would not run Win95 as it only had a 16-bit external data bus even though it was 32-bit internally.

      Reference

      So I'm going to say something you never ever read on slashdot or any other comment-based site, so pay attention.

      By God you are right and I was wrong. You have successfully changed my mind!

      Seriously, thanx for the correction.

      --
      There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
    40. Re:Clearing things up a bit by sgt_doom · · Score: 1
      Chief Architect at IBM

      I believe that description says it all.....

    41. Re:Clearing things up a bit by CODiNE · · Score: 1

      Those silly, silly, SILLY Engineers!

      --
      Cwm, fjord-bank glyphs vext quiz
    42. Re:Clearing things up a bit by hackstraw · · Score: 1


      FWIW, here http://www-03.ibm.com/servers/eserver/opteron/pdf/ IBM_dualcore_whitepaper.pdf is a paper that talks about the merits of multicore processors (specifically Opterons) in the HPC world.

      To be a plot spoiler, they conclude that dual core is a good thing.

    43. Re:Clearing things up a bit by Krakhan · · Score: 1

      Small nit, but it's not known if we [i]need[/i] exponential amount of time to simulate a non-deterministic TM. Or do you have your own proof that P = NP ? :)

    44. Re:Clearing things up a bit by Anonymous Coward · · Score: 0
    45. Re:Clearing things up a bit by Breakfast+Pants · · Score: 1

      Not only that, chips could (with sufficient technical advances) be made in cubes (with sufficient piping for cooling) rather than wafer thin things, and we would be able to get a lot more speed out of individual cores.

      --

      --

      WHO ATE MY BREAKFAST PANTS?
    46. Re:Clearing things up a bit by Breakfast+Pants · · Score: 1

      Something I just thought of as a possibly easy first step: take a current chip and fold it into a cylinder and you've halved the latency between any two points on average.

      --

      --

      WHO ATE MY BREAKFAST PANTS?
    47. Re:Clearing things up a bit by fabs64 · · Score: 1

      Small nit, but if we need exponential amount of time to simulate a non-deterministic TM that would mean P != NP

    48. Re:Clearing things up a bit by BKX · · Score: 1

      Thank you. I quit pop a month ago, and took it out on you. So now I'm going to say something you'll never again hear on /. :

      I'm sorry

    49. Re:Clearing things up a bit by Nutria · · Score: 1
      Take 3D programming as an example. Before I can render the screen, I have to run thousands of vertices through a matrix transformation so that they align with where the camera sees them. This is a bulk operation that can be run in parallel by multiple SIMD cores (each tranforming 2-4 vertices per instruction) by simply providing each core with a copy of the computational matrix. Simple, straightforward, and FAST. But utterly useless for general purpose code like multithreaded web servers.

      I'm wondering why NVIDIA hasn't jumped into this market. Isn't that exactly what modern GPUs do?

      --
      "I don't know, therefore Aliens" Wafflebox1
    50. Re:Clearing things up a bit by AKAImBatman · · Score: 1

      I'm wondering why NVIDIA hasn't jumped into this market. Isn't that exactly what modern GPUs do?
      They haven't? ;)
    51. Re:Clearing things up a bit by Fred_A · · Score: 1

      If you go that way, most people could just save themselves a lot of bother and attrition by just using a wad of paper and a pencil. For a lot of tasks it might even end up being faster (although less glitzy). like *cough*presentations*cough*

      --

      May contain traces of nut.
      Made from the freshest electrons.
    52. Re:Clearing things up a bit by ArcherB · · Score: 1

      I'm sorry

      Apology denied! You have nothing to apologize for. I was in the Army and learned to appreciate corrections and even criticism when (and only when) I'm wrong. My post had some incorrect information, you corrected me, I looked it up and saw that you were right. I know more now then I did when I made the first post. I read slashdot to learn stuff and people like you help to make it happen. Besides, I'd rather be corrected than wander around like a fool thinking I know everything when I'm really just spouting incorrect crap.

      So, Thanx again.

      --
      There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
    53. Re:Clearing things up a bit by Nutria · · Score: 1
      They haven't? ;)

      No, they haven't.

      Available today on the new GeForce® 8800 graphics card and future NVIDIA Quadro® Professional Graphics solutions
      They'd need a demonstration motherboard with, say, an Opteron and 8 or 16 of these theoretical GPU-derived chips that take in a stream of input, and spit out input that is then passed to a different computer for visualization.

      --
      "I don't know, therefore Aliens" Wafflebox1
    54. Re:Clearing things up a bit by AKAImBatman · · Score: 1

      No, they haven't.
      Yes, they have.

      A CUDA-enabled GPU operates as either a flexible thread processor, where thousands of computing programs called threads work together to solve complex problems, or as a streaming processor in specific applications such as imaging where threads do not communicate. CUDA-enabled applications use the GPU for fine grained data-intensive processing, and the multi-core CPUs for complicated coarse grained tasks such as control and data management.
       
      "CUDA gives us a whole new level of computing capability and enables closer access to the hardware," said Ryan Schneider, CTO of Acceleware Corp. "CUDA makes it possible for Acceleware's electromagnetic simulation and geophysical processing products to continue to double in speed each year, and, with our OEM partners like SPEAG, will enable us to address the needs of new markets such as biomedical imaging and reservoir modeling. The latest advancements from NVIDIA are helping to quickly push the boundaries of product development and commercial science."

      They'd need a demonstration motherboard with, say, an Opteron and 8 or 16 of these theoretical GPU-derived chips that take in a stream of input, and spit out input that is then passed to a different computer for visualization.
      What exactly is wrong with using a high speed bus to a super-computing coprocessor rather than packing in those same coprocessors onto a single CPU chip? The Cell only has one primary CPU + 8 SPEs that all require DMA transfers of data into their address space. That's not much different than shunting data streams over the PCIe bus, then copying the return data over the network using the primary CPU.

      It's the same sort of architecture, except that you can be flexible about how many GPU cores and CPUs you place in your specific configuration.
    55. Re:Clearing things up a bit by Anonymous Coward · · Score: 0
    56. Re:Clearing things up a bit by xanalogical · · Score: 1

      > Existing software will continue to run on the individual processor cores. Something that
      > they've done for a long period of time. Old software may not get any faster due to a
      > change in focus toward parallelism vs. increased core speed, but it's not going to
      > suddenly come to a screeching halt any more than my DOS programs from 15 years ago are.

      It _will_ run slower if Intel follows its design path. Did you read about their prototype 80-core CPU? Those cores are not of the computing power we have now but trimmed down processors, such that 80 of them combined result in an overall improvement. But if your old software of 2007 uses only one core -- you are going to run slower than you do today.

      >> compelling reasons why your favorite software will soon be rendered deadly slow

      > Secondly, multicore systems are not a problem. Software (especially server software!) has
      > been written around multi-processing capabilities for a long time now.

      I read that as your favorite -desktop- software - people don't usually have favorite server software, as that is invisible to most folk. But people develop an attachment to their preferred desktop apps.

    57. Re:Clearing things up a bit by j2xs · · Score: 1

      Smart poster...

      --
      Java To Excess
    58. Re:Clearing things up a bit by Anonymous Coward · · Score: 0

      Uh, he was probably making a joke based on the fact that some people spell "Microsoft" or "MS" as "Micro$oft" or "M$".
      That is, they substitue a "$" for an "S".
      The GP did this in reverse, translating "$COMPANY" to "SCOMPANY".
      (The fact that "$COMPANY" is used as a variable in this instance, and not as a commentary on a money-grubbing company, is irrelevant to the joke.)
      Your misunderstanding of this train of thought indicates that, vis a vis the GP's joke, the proper response to you is as follows: Whoosh!

      HTH HAND

  2. That's ridiculous. by The-Bus · · Score: 5, Funny

    I see no need for why we would ever need anything more than 640 cores per processor in the future.

    --

    Small potatoes make the steak look bigger.

    1. Re:That's ridiculous. by MysteriousPreacher · · Score: 0, Offtopic

      I've waited days for an amusing joke it came. Slashdot works!

      --
      -- Using the preview button since 2005
    2. Re:That's ridiculous. by maxwell+demon · · Score: 1

      You surely mean 640K cores, right? :-)

      --
      The Tao of math: The numbers you can count are not the real numbers.
    3. Re:That's ridiculous. by maxwell+demon · · Score: 1

      I just need something to receive email.

      **Whistles** You'll need a top-of-the-line machine for that.
      Indeed, the Spam filter software will be so sophisticated that it will easily keep all of your 640 cores at 100%.
      --
      The Tao of math: The numbers you can count are not the real numbers.
  3. But Developers do? by Ckwop · · Score: 3, Insightful

    Software, she says, just doesn't understand how to do work in parallel to take advantage of 16, 64, 128 cores on new processors.

    But the developers do? When these processors become prevelant, people will design their software to utilise the parallel processing capability. What am I missing here?

    Simon

    1. Re:But Developers do? by jd · · Score: 1
      The first mistake is in assuming that the program has to understand concurrency. There are parallelizing compilers which will take standard C code, spot the parallelizable segments, and build those to run in parallel threads. Sure, GCC isn't one of them - OpenMP is manually-described parallelism - but there is no obvious reason why it couldn't do this. It already has a profile round that is followed by a build-to-profile optimization round, so why not have something similar for segmenting the code?

      The second mistake is in assuming that all existing programs are, indeed, linear. PVM, MPI and BSP have been around for a long time now, and I spent plenty of time at University learning Occam (now Linuxified in the form of KROC). Oh, and for that matter there's OpenMP, which I've already mentioned. Everything that is based on RPC, Corba, DCL, or similar technologies is also parallel, albeit not quite to tightly-coupled. No, far as I can see, there's no shortage of parallel code. Maybe at IBM there is, but that's IBM's problem.

      In the meantime, I'll set the OS to run in one code, the X server in another, the X client in a third, and supertuxkart in a fourth. It won't run any better, but at least I can pompously sneer at IBM's chief architect for their lack of understanding of how either people or the software they have use their machines.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    2. Re:But Developers do? by theStorminMormon · · Score: 3, Interesting

      How does current virtualization software fare with multi-core architecture? I mean, if the hype is even somewhat believed even SMBs will be able to afford off-the-shelf "supercomputers". Of course relative to the real super-computers, these machines will be slow. But relative to actual requirements, they should be, well, supercomputers.

      Suddenly the old "everyone's moving to thin-clients/mainframes/dumb terminals/etc" story (as recently as today: http://it.slashdot.org/article.pl?sid=07/01/30/134 0210 ) becomes interesting again. If virtualization software works, then we don't need to wait for a golden age of multi-threaded software development. SMBs (and large companies too) will be able to deploy dumb terminals linked to multi-core monsters, install virtualization software to get as many servers as they need, offload individual instances of programs to the various cores as is natural, and viola: now you can actually realize all those TOC savings the thin client crowd has been raving about all these years.

      This transition to multi-core is what we need because, as far as I know, actually getting individual programs to run nicely on multiple cores is (with notable exceptions) something we're not really ready for yet in terms of development.

      -stormin

      --
      The Southern Baptist Convention has creationism. On Slashdot, we have porn.
    3. Re:But Developers do? by Anonymous Coward · · Score: 0

      When these processors become prevelant, people will design their software to utilise the parallel processing capability. What am I missing here?

      The fact that these processors are already prevalent, and that people are not designing their software to use parallel processing capability?

  4. Huh? by RightSaidFred99 · · Score: 0

    Worst. Summary. Ever. She's talking about technical computing. Regardless, software will evolve to take advantage of new hardware architectures - this has been proven by history. I'm not in the least worried. If this doesn't happen, then by definition the hardware architecture will be forced to change.

    1. Re:Huh? by ArcherB · · Score: 1

      Exactly! Old 16-bit Windows apps didn't die win Win95, NT and OS/2 came out. I don't see single threaded apps dying either. What I do see is all future apps will be multi-threaded to take advantage of multiple cores, just like few companies released 16-bit apps after 1996. I don't see software at a dead-end, but I do see single threaded apps becoming legacy very soon.

      --
      There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
  5. Yeah, if you only run one program at a time.. by ruiner13 · · Score: 5, Insightful

    What the author fails to take into account is that multi-core allows each program to effectively use a separate core to do its work, regardless of how it is programmed. All it takes is the OS to be smart enough to task each program to a free core, if available. The programs don't have to be specifically written to be multi-core aware as long as the OS is smart enough to send process to the idle cores. The programs that need more power than one core can deliver will usually have the multi-core support built in, as many games are starting to do now that the technology is taking off.

    Notice I took the high ground and didn't make the obligatory windows virus scan jokes... :)

    --

    today is spelling optional day.

    1. Re:Yeah, if you only run one program at a time.. by ArcherB · · Score: 3, Informative

      The programs don't have to be specifically written to be multi-core aware as long as the OS is smart enough to send process to the idle cores.

      While that is true of multi-core general purpose processors like the x86, but I don't think that works too well when talking about the Cell processor. The OS can't just assign a Power-PC compiled app to a SPU and expect it to run. Apps have to be specifically coded to take advantage of the SPU's on the Cell.

      --
      There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
    2. Re:Yeah, if you only run one program at a time.. by SatanicPuppy · · Score: 3, Interesting

      I keep thinking about this as well. Really, sitting down a trying to write code that runs optimally on multiple processors is a huge headache, and, frankly, judging by the code I've seen in my life, most coders aren't up to it...It would be far better to put a VM or a specialty compiler between the code and the system, one that is capable of taking regular code and making it more multi-core friendly.

      Sure it'll add overhead, but the number of cores we're going to be working with at a time is going to continue to change, and the only way to not write immediately obsolete code is to have an intermediate control layer that is smart enough to translate.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    3. Re:Yeah, if you only run one program at a time.. by oliverthered · · Score: 3, Interesting

      And if thread management is good/fast enough then there's no reason things like GUI widgets can't run on their own thread/core. (I doubt spell checker in Firefox runs in it's own thread though)

      --
      thank God the internet isn't a human right.
    4. Re:Yeah, if you only run one program at a time.. by MysteriousPreacher · · Score: 3, Interesting

      I'm just dipping my toe in to the world of programming so bear with me if this is silly.

      Couldn't the programs inherit the benefits of a multi-core system if the APIs they call are written to distribute the work to the cores? I know this probably isn't optimal but there must be some benefits from this.

      I could take an old library (QuickDraw for example) and totally rewrite it to take advantage of a new architecture as long as it accepts the old calls and returns the expected results. This is probably an over-simplification though.

      --
      -- Using the preview button since 2005
    5. Re:Yeah, if you only run one program at a time.. by drinkypoo · · Score: 1

      Couldn't the programs inherit the benefits of a multi-core system if the APIs they call are written to distribute the work to the cores? I know this probably isn't optimal but there must be some benefits from this.

      Yes! Reusable code is the answer to this dilemma. This works best when the APIs are part of the OS, or when they are Open Source. Both increase their use.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    6. Re:Yeah, if you only run one program at a time.. by Nappa48 · · Score: 1

      RapidMind has been designed to do what you speak of.
      You can write on multicore processors using C and specialised libraries that were designed for multicores.
      Its a pretty neat and should make multi-core development easier.

      Theres some videos on their website of some pretty interesting things they done using Cell.
      http://www.rapidmind.net/samples.php/
      (note: these programs were done in as little as 3 weeks)
      Some on Spectrum at IEEE http://www.spectrum.ieee.org/jan07/4837/1

      According to some artices i read (hell knows what the links were again), it will be available for PS3, actually running under YDL.
      Not sure if it is true, but it will be added to the devkits, it was meant to be added before release, but they decided to spend more time on it (possibly to their disadvantage with some developers being "left on their own"...pfft lazy if you ask me, not true programmers in my eyes! A true programmer would strive to get code working on anything!)

    7. Re:Yeah, if you only run one program at a time.. by geekoid · · Score: 1

      Actually it'a not really that hard. Most developers just aren't in the habit of thinking that way.

      Much like threading.

      I ahve done multi-processor development, and it scared me to death at first. I was working with some very, very bright people and thought I was out of my ballpark.
      Once it became a habit it no longer posed an intellectual difficulty.

      That experience is why I would like to see more of a 'trade' aspect to getting into the field.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    8. Re:Yeah, if you only run one program at a time.. by Anonymous Coward · · Score: 0

      And if thread management is good/fast enough then there's no reason things like GUI widgets can't run on their own thread/core.

      This seems to be the approach that Apple is using. Core Animation runs in a separate thread from the main application, which means you get some parallelism "for free" by using it. There's some other examples under NDA. Basically, they're moving to make system frameworks run in separate threads wherever possible, so that even if the application itself isn't multi-threaded, it still can make the most of multiple cores.

      This is a lot smarter (I, the AC, think) than requiring a "smart compiler" (though they expressed a lot of interest in LLVM) or begging application developers to write multithreaded code (though they have made some tasty APIs to make it easy.).

    9. Re:Yeah, if you only run one program at a time.. by Jerf · · Score: 4, Informative

      Couldn't the programs inherit the benefits of a multi-core system if the APIs they call are written to distribute the work to the cores? I know this probably isn't optimal but there must be some benefits from this.

      In a word, no.

      The more complicated answer is "Yes, in rare cases".

      The problem is that programs written in your normal languages (C, C++, Java, C#, basically anything you've ever heard of) are totally synchronous; you can not proceed on to the next statement until the previous one completes.

      Thus, trying to parallelize something at the API is virtually worthless. I don't win anything if my "drawWindow" or "displayMPEGFrame" function flies off to another processor to do its work, if I still have to wait for it to complete before I can move on.

      (This can be helpful if you have two types of processors, so in fact 3D graphics APIs can be looked at as working just this way. But we already have that.)

      You might say, "But there are some operations that I can do that with, like loading a webpage!" We already can do that. It's called asynchronous IO; you fire your IO request, the hardware (with software assist) does its thing, and you get the results later. You might even fire off a lot of things and process them in the non-deterministic order they come back. UNIX has been doing that for about as long as it has been UNIX, via the select call.

      The easy stuff has been done. To write programs that actually fill a multi-core CPU's capacity is going to require a paradigm change. Shared-memory threading isn't looking very good (too complex for any human to correctly implement). There are several candidate paradigms, but there is no clear winner at the moment, some of them may never work, and they all have one thing in common: They look nothing like current coding practices with threads (because, as I said, that's looking pretty useless if we can't get it working in the decades we've had to play with it).

      The claims I've seen so far:

      • Erlang-style concurrency: This is a ton of little threads that communicate solely through message passing, no shared state. On the plus side, it's got a working implementation that you can use today. On the down side (and this is my personal opinion), I'm not sure you really need the "functional" part of Erlang to use it (I think you just need threads that share nothing, and if you did that in a more conventional OO language it'd be fine), and Erlang's still quite short on libraries for anything outside of its core competency of network programming.
      • Pure functional programming: Pure functional programming has the idea of no mutable state, which allows you to do certain things out-of-order automatically without fear of the system behaving non-deterministically. A lot of people are still making bold claims about this one, but I tend to agree with the papers that show the amount of implicit parallelism in real-world programs is fairly minimal; you're going to need to tell the system where the parallelism for the forseeable future.
      • Stream programming: Probably ultimately a special case of Erlang-style processes, and only useful in certain domains (like sound processing).
      • And of course, I'd be remiss to not mention the "suck it up and use threads" school of thought, but my feeling is that if programmers in general haven't gotten it right after 20 years, the claim that programmers are especially stupid becomes less plausible, and "the technology is uselessly complex in practice" must be the right answer.

      This isn't exhaustive, it's off the top of my head, and there are endless variations on each of those themes.

      If I had to lay money down, I'd go with "a language that used threadlets like Erlang and rigidly enforced no sharing, in an OO environment" winning, which does not really exist yet. (Probably the closest you get today would be Stackless Python with a manual enforcement of sending only immutables across t

    10. Re:Yeah, if you only run one program at a time.. by gatesvp · · Score: 1

      Couldn't the programs inherit the benefits of a multi-core system if the APIs they call are written to distribute the work to the cores? I know this probably isn't optimal but there must be some benefits from this.

      Yeah, this we have. Run a Virus Scan on a Dual-Core proc and you can continue to work normally.

      I could take an old library (QuickDraw for example) and totally rewrite it to take advantage of a new architecture as long as it accepts the old calls and returns the expected results.

      Rewriting old libraries is not trivial and "taking advantage of the new architecture" first requires that this is even possible. If I'm running a business app that retrieves data from a database putting 5 DB calls on 5 "different cores" isn't necessarily going to make anything run faster. It might help if I'm talking to 5 different servers and if the 5 DB calls are independent. But even then, I can solve that problem by making the calls asynchronously and waiting for the results.

      Really, at the moment, the top home uses for multiple cores are: video and audio processing, and gaming (e.g.: AI on a different core). Skype can suck up proc time, ripping and recording movies/songs can be intensive, transcoding files for DVDs can grind the comp to halt. And games can always find a use for another ounce of power here or there, but they do have to be programmed with multiple cores in mind.

      All in all, this article is really talking about the Hard Problems, like a market analysis computer or a protein folder that needs to perform billions of parallel calculations per second. But these are so far from Home/Office use that they're really "out of scope" for the typical user (even the typical Slashdotter).

    11. Re:Yeah, if you only run one program at a time.. by spaceyhackerlady · · Score: 1

      What the author fails to take into account is that multi-core allows each program to effectively use a separate core to do its work, regardless of how it is programmed. All it takes is the OS to be smart enough to task each program to a free core, if available. The programs don't have to be specifically written to be multi-core aware as long as the OS is smart enough to send process to the idle cores.

      I did this to solve a major performance problem on a flagship Tomcat application for my employers.

      Since each request stood alone, I figured that if I ran more than one copy of Tomcat, each running the app, it should do The Right Thing on a dual processor box. And so it did. There was enough I/O and CPU overlap that I could run 4 copies to good effect. I ended up putting Apache in front of the mess to load-balance requests.

      The bosses didn't mind the 6x speed improvement one bit. Maybe some day I'll get a raise out of it.

      ...laura

    12. Re:Yeah, if you only run one program at a time.. by maxwell+demon · · Score: 2, Interesting

      But in which way are threads which don't share anything different from several processes which communicate (e.g. through sockets or through pipes)?

      --
      The Tao of math: The numbers you can count are not the real numbers.
    13. Re:Yeah, if you only run one program at a time.. by daggre · · Score: 1

      Although it's worth noting that a properly written kernel COULD theoretically dynamically distribute "SPU tasks" between the SPUs, you're right that it's up to the application running on the "full" core to do that. Each of the SPUs inherently doesn't do anything until it has its instruction set code sent to it from the full core. What I could see happening is a generic SPU instruction set that could (for example) run a subset of a VM instruction set so that certain types of VM threads could execute on one of a set of, say 4 SPUs per Cell processor (while the other SPUs could remain dedicated to memory management or IO processing). That would allow applications that did not in themselves include SPU code to take advantage of the SPUs beyond just OS level operations. Unfortunately making an SPU run anything generic sort of defeats the purpose of the SPU in the first place (highly optimized instruction sets) but it would still be better than the SPUs just sitting there dormant since most developers probably won't be writing custom SPU instruction set code. On true multi-core chips though, the solution is really simple. Breaking large tasks into multiple threads will inherently take advantage of both multiple processors and multiple cores on each processor. There's a certain amount of performance hit taken in any thread context switch, so you don't want to shoot yourself in the foot by launching 200 threads when your typical user is going to have 2 cores, but it's easy enough in code to query the number of physical cores you have on the system and distribute the load accordingly (for a non-Server app I'd suggest MaxWorkerThreads = NumCores * 4 which seems to give a decent balance between using the cores and hyperthreading without wasting a lot of time context switching).

    14. Re:Yeah, if you only run one program at a time.. by cweber · · Score: 2, Informative

      Exactly, and as it stands right now this is already happening.

      Scientific computing has gone from exhaustive and detailed simulation to exhaustive analyses of an entire parameter space with the advent of new life science branches such as Genomics, Proteomics and all the other broadly based omics-type endeavors. This means embarrassingly parallel computation at a massive scale. At my institution we keep roughly 3000 cores humming around the clock without any difficulty, largely using legacy code.

      At home I have a recording studio where the bulk of the processing is happening through plugins. Again, embarrassingly parallel workload, very easy to keep a number of cores working at 100% TODAY.

      That's just two examples, but I could mention many more, and so could many of you I'm sure. I fail to see why today's software cannot make productive use of multicore architectures. Unless we're talking productivity apps, which don't use much CPU anyway...

    15. Re:Yeah, if you only run one program at a time.. by TodMinuit · · Score: 1

      Erlang-style concurrency: This is a ton of little threads that communicate solely through message passing, no shared state. On the plus side, it's got a working implementation that you can use today. On the down side (and this is my personal opinion), I'm not sure you really need the "functional" part of Erlang to use it (I think you just need threads that share nothing, and if you did that in a more conventional OO language it'd be fine), and Erlang's still quite short on libraries for anything outside of its core competency of network programming.

      Actually, it's CSP-syle concurrency, and Limbo does it without functional programming. Limbo thankfully isn't object-oriented, however.

      --
      I wonder if I use bold in my signature, people will notice my posts.
    16. Re:Yeah, if you only run one program at a time.. by owlstead · · Score: 1

      "And of course, I'd be remiss to not mention the "suck it up and use threads" school of thought, but my feeling is that if programmers in general haven't gotten it right after 20 years, the claim that programmers are especially stupid becomes less plausible, and "the technology is uselessly complex in practice" must be the right answer."

      I have to disagree on this. There have been many developments that would aid developers in writing better code, which also leads to easier multi-threading:
      - managed code and garbage collection (Java GC also uses a tread);
      - new and better multi-threaded API's;
      - better code analysis;
      - better debuggers;
      - more components.

      Currently I am reading a book on Java concurrency, and although it is indeed hard, the ready availability of a multi-threading API (including optimized, thread safe collections) makes it much easier to code with multiple threads. This will make it possible for mediocre programmers to do something with multi-threading as well. It's probably easier than trying to understand any of the other models.

      Not that it matters too much; many, many programs will never be faster even with multiple threads, because 1) they are already fast enough, 2) they are I/O bound or 3) suffering from lack of performance for other reasons (database connections, memory usage etc). Note that sometimes threads are just the most likely model. I am currently in the (ever slow) task of writing a binary news client in Java. I would not even know where to start without threads - one per connection *at least*.

    17. Re:Yeah, if you only run one program at a time.. by Jerf · · Score: 1

      Speed and resource consumption. It is currently completely impractical to architect a program as several hundred or thousand processes communicating with each other, whereas Erlang works like this all the time. Simply creating several thousand threads with modern threading libraries often bogs down, and that's before they are even doing anything.

      Other than that, the only difference is the difference between using OO in C++ and using OO in C, in that there's little to nothing you can't do in C (taking away C++ templates), but it's a different experience; a sufficiently large quantitative difference becomes a qualitative difference.

    18. Re:Yeah, if you only run one program at a time.. by Coryoth · · Score: 1

      Erlang-style concurrency: This is a ton of little threads that communicate solely through message passing, no shared state. On the plus side, it's got a working implementation that you can use today. On the down side (and this is my personal opinion), I'm not sure you really need the "functional" part of Erlang to use it (I think you just need threads that share nothing, and if you did that in a more conventional OO language it'd be fine)
      It's CSP style concurrency you're after there, and indeed it can be done in conventional OO languages. A simple example would be JCSP which is a CSP style threading library for Java. A better example would be SCOOP for Eiffel which integrates a CSP style concurrency model very naturally into an OO model. It's worth looking into because it makes concurrent programming seem easy (just declare any objects that can run independently of one another as separate ... and that's pretty much it, the compiler handles the rest), but gets it right at the same time, all while keeping everything very much in the standard OO model that many programmers are familiar with. The downside is that SCOOP is still experimental - there are now working prototypes that use a preprocessor, but it isn't yet integrated into the Eiffel compiler. Were SCOOP for Java or C++ instead of the rather more niche Eiffel I suspect you'd be looking at your "winner". At the very least a polished version of SCOOP integrated into the compiler could make Eiffel a more popular language.
    19. Re:Yeah, if you only run one program at a time.. by Jerf · · Score: 1

      Currently I am reading a book on Java concurrency
      Ah, a real expert then. No offense intended.

      All books have to try to sell you on what they are writing about. It doesn't mean the marketing is true. It is true that threading has gotten two or three times easier, but shared-state threading multiplies in complexity geometrically in the best case, exponentially in the worse. (It's related to how much state is being shared amongst the threads.) A factor of two improvement means one more thread, at best. It doesn't mean you can use those primitives to write a Java program that can actually use 64 cores, and we're likely to see such machines on consumer desktops before the multithreaded programming world works itself out. (Unless they start holding back on cores artificially.)

      It's like the marketing for Mozilla-based app development; all roses and revolution, until you notice five years later it doesn't do much more than it did five years ago, all the promises still ring hollow, and you still can't do anything more than write a Firefox extension. But you can still find the marketing material.
    20. Re:Yeah, if you only run one program at a time.. by joib · · Score: 1

      Actually, Erlang is an implementation of the "Actor model", somewhat different from CSP.

    21. Re:Yeah, if you only run one program at a time.. by jstott · · Score: 2, Informative

      The problem is that programs written in your normal languages (C, C++, Java, C#, basically anything you've ever heard of) are totally synchronous; you can not proceed on to the next statement until the previous one completes.

      *cough* Fortran *cough*

      Fortran has had support for this type of thing since F90 came out 15+ years ago. The language standard defines what are (and are not) asynchronous operations. For example, the WHERE()...OTHERWISE...END construct is designed to be implemented asynchronous. Dual-core is new enough that the free compilers don't implement parallel operations yet, but the support is already there with some of the commercial compilers.

      F90, it's not your Grandfather's FORTRAN...

      -JS

      --
      Vanity of vanities, all is vanity...
    22. Re:Yeah, if you only run one program at a time.. by owlstead · · Score: 1

      I would not call myself an expert on multi-threading (yet) - that's one reason why I am reading the book. But as I mentioned I am in the process of writing a multi-threaded implementation and I've written a few before. But most of the time you don't need to be an expert if you are just using a technology without going too deep. Anyway, there have been quite a few changes regarding the Java API and I've not fully read up into that yet.

      The book starts off by showing all the common multi-threading problems. Hardly a way to sell multi-threading. Also I do not use threads to use my processor to the max. That would be foolish. The design goal is to maximize the speed of my application and implementation ease. If more applications do this as well, then there could be a significant win in using multi-core processors. It's like firefox that you so judge so unfairly. It's a good, rather safe browser that's more nimble and extensible than its predecessor - many people use and love it. What more do you want? What more do they market?

      Anyway, the book is called: Concurrent Programming in Java, Second Edition, Doug Lea (Addison-Wesley) - it's reviewed by o.a. Joshua Bloch, who has written Java Puzzlers. You can imagine that this book is also slightly critical to common Java uses. So maybe you should reconsider before writing a comment like that. No offense intended.

    23. Re:Yeah, if you only run one program at a time.. by mesterha · · Score: 1

      The problem is that programs written in your normal languages (C, C++, Java, C#, basically anything you've ever heard of) are totally synchronous; you can not proceed on to the next statement until the previous one completes.

      Thus, trying to parallelize something at the API is virtually worthless. I don't win anything if my "drawWindow" or "displayMPEGFrame" function flies off to another processor to do its work, if I still have to wait for it to complete before I can move on.

      The point of parallelizing the API, in this case, is not to execute the API in parallel with the main program but to have the API execute parallel code. This was the point of the Information Week article. Of course, a much more sophisticated API is needed that targets a flexible and general set of expensive parallelizable operations. The goal would then be to write a sequential program that is expressed in terms of the parallel API. This is suboptimal, but it does push the difficulty of parallelization to the API.

      --

      Chris Mesterharm
    24. Re:Yeah, if you only run one program at a time.. by rifter · · Score: 1

      Couldn't the programs inherit the benefits of a multi-core system if the APIs they call are written to distribute the work to the cores? I know this probably isn't optimal but there must be some benefits from this.

      Yes. I think this is in fact what The Architect is proposing to do as part of the solution to the particular problem of this project, while suggesting this might become a product usable by others in future.

    25. Re:Yeah, if you only run one program at a time.. by Estanislao+Mart�nez · · Score: 1

      I would not call myself an expert on multi-threading (yet) - that's one reason why I am reading the book.

      Your problem now is that reading a book on Java concurrency won't make you an expert in the general problem of how a language system ought to be designed to simplify writing massively concurrent programs.

      If you want to get a broader view of this topic, the best recommendation I can give you is to study some Erlang. (Note that I did not claim it's a great recommendation--I'm not an expert on multi-threading, and I don't expect to become one in the near future; but I've certainly seen more than one programming paradigm, and understand how paradigms can make it easier or harder to write some programs.)

    26. Re:Yeah, if you only run one program at a time.. by jerdenn · · Score: 1

      Anyway, the book is called: Concurrent Programming in Java, Second Edition, Doug Lea (Addison-Wesley)


      Good book, by the way. I'm actually a .NET guy, and don't do that much Java, and I consider this book my go-to reference for understanding many threading issues. While there are sometime subtle differences between the two threading models, I consider Doug Lea's text a "must-read," even for people on the .NET side of the house.
    27. Re:Yeah, if you only run one program at a time.. by krischik · · Score: 1

      The problem is that programs written in your normal languages (C, C++, Java, C#, basically anything you've ever heard of) are totally synchronous; you can not proceed on to the next statement until the previous one completes.

      I heard of one more:

      http://en.wikibooks.org/wiki/Ada_Programming/Taski ng

      And with it comes another approach: rendezvous based tasking. I found it a lot easier to used then semaphore based threading.

      C and all it's descendent's have been a step back. C 73's most notable feature was "fit's into 8 kb of memory".

      Martin

    28. Re:Yeah, if you only run one program at a time.. by maxwell+demon · · Score: 1

      Given these benchmarks, I doubt that speed is a major concern here, at least with current operating systems. I'm not sure about resource usage, though.

      About the experience, this should IMHO be solvable by an appropriate library.

      --
      The Tao of math: The numbers you can count are not the real numbers.
  6. rendered deadly slow? by Dr+Kool,+PhD · · Score: 3, Informative

    If you look at single-thread performance on Intel and AMD's dual/quad core chips, they meet or beat the best that single-core has to offer. I don't see why a multi-core system in the future will run single-thread apps any slower than right now. If anything I'd expect single-thread performance to increase incrementally as Intel and AMD are able to increase clock speeds.

    1. Re:rendered deadly slow? by Wesley+Felter · · Score: 3, Insightful

      But software bloat increases faster than single-thread performance, thus making software run slower.

    2. Re:rendered deadly slow? by Anonymous Coward · · Score: 0

      Hah, you haven't been running with Suns Niagra. It was like going back 5-7 years in single-thread performance. :)

    3. Re:rendered deadly slow? by owlstead · · Score: 1

      Software *functionality* and reliability increases as well. Better managability, error reporting, memory management, security etc. all take their toll. Of course you could call all this bloat, but I doubt that we would like to do without in the end. What I see is that software is not that slow - more the opposite - on current CPU architectures. The architecture (loading all components in advance), memory usage and IO are the most annoying aspects of current software. Of course there is bloat, and of course this will take performance, but how much performance problems do you really have because of bloat if you come to think of it? And how much of that can be removed by faster single thread performance?

  7. Compilers need to be better. by y86 · · Score: 0

    We just need a compiler to translate our code into threaded processes. Impossible? Think about the translation a C++ compiler does, this is minimal task. Problem solved. Move along, nothing to see here.

    1. Re:Compilers need to be better. by Rosco+P.+Coltrane · · Score: 2, Insightful

      Don't be silly, it's not that simple: sure you can spread processes and threads across several cores, as opposed to using just one cpu to do it all, but what distributed computing is about is arranging the code in a single thread to take advantage of the presence of several cores. It's called parallelizing code, and it's an extremely tough branch of computer sciences.

      Of course OSes can do load balancing on several cores with several processes, that's trivial... What's not is real parallel code.

      --
      "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
    2. Re:Compilers need to be better. by Anonymous Coward · · Score: 1, Funny

      I'm glad that arm-chair computer scientists such as yourself have such great vision and wisdom to guide us.

      Will you please share your secret on how to accomplish this task?

    3. Re:Compilers need to be better. by AKAImBatman · · Score: 2, Interesting
      There are so many things wrong with this statement, that it's not even funny. You can't just recompile a program for multiprocessing. When we create computer programs, it is generally expected that future data processing will rely on past data processing. Attempts to parallelize the operations will give bad results. For example:

      int a = 10;
      int b = 20;
      int c = 30;
       
      a = b + c;
      c = a + b;
      If you run the additions in a serial fashion, you get a = 50 and c = 70. If you run them in parallel, you get a = 50 and c = 30. Whoops.

      Being a simplified example, of course, it is possible to parallelize the instructions above. It will require more memory, but we can do the following instead:

      int a = 10;
      int b = 20;
      int c = 30;
      int d;
      int e;
       
      d = b + c;
      e = b + c + b;
      If the first addition is run on a separate core than the second processor, then we'll get a net increase in performance even though we used more computational cycles to compute the results. There's just one catch. CPU designers have known about these micro-optimizations for decades, and have been designing microprocessors with an ability called "Superscalar execution" for almost as long. Superscalar designs make use of CPU processing units not currently utilized by other instructions in order to offer a simplistic form of multithreaded execution on a single core. In this way, the CPU can chew on a larger number of instructions in parallel than it could if it fully serialized the execution. Which makes full multithreading mostly redundant for these situations.
    4. Re:Compilers need to be better. by xero314 · · Score: 2, Insightful

      Attempts to parallelize the operations will give bad results.
      I think what you meant was "attempts to parallelize the operations incorrectly may yield incorrect results."
      The example that you had given above where you manual converted an algorithm from sequential to potentially parallel processed could easily be handled by a compiler. If your brain can handle the optimization so can a compiler given enough time. When writing in a higher level language (i.e. Not Assembly or Machine Code), like you used in your example, then you should be able to expect the compiler to handle those optimizations. Yes I realize all of this is in theory, but eventually reality has to catch up with theory if we expect to improve.
    5. Re:Compilers need to be better. by AKAImBatman · · Score: 2, Informative

      I think what you meant was "attempts to parallelize the operations incorrectly may yield incorrect results."
      Indeed. Thanks for the correction. :)

      The example that you had given above where you manual converted an algorithm from sequential to potentially parallel processed could easily be handled by a compiler.
      Of course. Which is why I showed exactly how the code could be handled in parallel. The key is that compilers already do this. Adding a new core won't help. It will just add overhead that will slow the program down rather than speeding it up.
    6. Re:Compilers need to be better. by WinterSolstice · · Score: 1

      This is true enough, but in my experience most programmers have tremendous difficulty with parallel operations and programs. Heck, several have difficulty with serial operations. On VMS I ran into a lot of issues where people would incorrectly attempt to run in parallel, just to try and access information at inappropriate times.

      What we really need is for people to start using and developing the parallel languages (like Charm++) so that we can simply phase the older stuff out of existence.

      -WS

      --
      An operating system should be like a light switch... simple, effective, easy to use, and designed for everyone.
    7. Re:Compilers need to be better. by Valar · · Score: 1

      Except that no compiler would do that. A compiler would apply a little analysis to the code, realize c depends on a, and not parallelize the code. So what good does that do, if the code is still serial? Well, in real world applications, there WILL be blocks that can be executed in parallel (even should be executed in parallel [witness threads])- it isn't all or nothing. Dependency analysis is used in compilers all the time in order to order instructions for execution in the optimal order (to keep the pipeline filled).

    8. Re:Compilers need to be better. by Anonymous Coward · · Score: 0
      He did say that it's a simplified example.

      A compiler would apply a little analysis to the code, realize c depends on a, and not parallelize the code.
      A compiler would apply a little analysis to the code, and realize that the variables a, b, and c are constants in the scope under analysis, and simply statically assign a = 50 and c = 70. You save on the arithmetic evaluation.

      Likewise in the second example, d and e derive from constants in the current scope.

      Now, if the variables were subject to mutation by instructions in another scope then the compiler has to decide whether it is safe to use the results of these assignments in arbitrary order.

      (A really good compiler would only force the additions at reference time, and not before, and would cache the result if future references are possible. There are compilers which support lazy evaluation of this nature for other languages than C).

  8. stupid article by tomstdenis · · Score: 0, Flamebait

    Why do the individual cores have to become slower? Am I missing a logical step here?

    Let's see, we have efficient and fast ALU/FPUs now. All of a sudden they'll become totally inefficient because we've gone quad-core?

    Hey, biatch from IBM [or just poor reporter], shut your ignorant gob.

    Tom

    --
    Someday, I'll have a real sig.
    1. Re:stupid article by Red+Flayer · · Score: 1

      Why do the individual cores have to become slower? Am I missing a logical step here?

      Yes, the logical step of RTFA.

      Hey, biatch from IBM [or just poor reporter], shut your ignorant gob.
      Sounds like someone should heed their own advice.

      Either that, or go post on Fark where that comment belongs.
      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    2. Re:stupid article by GooberToo · · Score: 1

      I think the logic is, as concurrent programming becomes the norm, systems which do not physically support the model will begin to suffer performance problems.

      I personally am not worried at this point because it's very hard to find anyone that can do any type of complex multithreaded programming. Heck, it's hard to find someone that can just explain different types of semaphores. As such, the technology window might be ripe but the talent required to leverage it is rather weak and small. I don't expect that to change over night.

    3. Re:stupid article by Anonymous Coward · · Score: 0

      Well, given that IBM has completely lost there ability to develop anything that looks like contemporary software, I'd say that
      the article is dead on as long as he's talking about IBM software.

    4. Re:stupid article by Anonymous Coward · · Score: 0

      Yet more proof of your homosexial stalking habits. You're like a giddy girl waiting by the phone, just hoping I'll post. Shesh. You are one sad, empty, stalker. You seriously need help.

      In the mean time, feel free to keep posting...when I get past the creep factor, I normally have a good laugh at your expense. So please, tell us more about how you think all service men are idiots and how you love to worship John Kerry. I can't wait for your rambling response... No...but...your...it's you...all about you...and your post proves it...shesh...you can't see because you're an idiot...faggot...which proves you're gay and I'm not...must...wait...for...more postings...teeheee...teeehheee...he'll call...I know he will! CALL!!!

      LOL! Come on...keep it up... LOL! To friggen funny! I especially love the parts where you try so hard to deny you're gay, try to turn it on me, yet suffer from every stereo-typed, closet affliction, including stalking someone of the same sex. LOL! This is just awesome stuff!

  9. Yeah, but... by GillBates0 · · Score: 2, Funny

    Has Netcraft confirmed this yet?

    --
    An Indian-American Hindu committed to non-violent thought/speech/action alarmed by the global explosion of radical Islam
  10. Bah by Idimmu+Xul · · Score: 0, Flamebait

    What do women know about computers? Someone tell her to go play Barbie.

    --
    The problem with slashdot is that most of its users were bullied and stuffed into lockers as kids!
    1. Re:Bah by Anonymous Coward · · Score: 1, Funny

      Concurrency is hard!

  11. Concurrency in software by NullProg · · Score: 4, Informative

    Herb Sutter wrote about this topic two years ago. A great read for anyone who is interested.
    http://www.gotw.ca/publications/concurrency-ddj.ht m

    Enjoy,

    --
    It's just the normal noises in here.
    1. Re:Concurrency in software by TodMinuit · · Score: 1

      Currently I have VLC, Opera, a bunch of Notepads, and Visual Studio open. None of these would benefit all too greatly from concurrency.

      --
      I wonder if I use bold in my signature, people will notice my posts.
    2. Re:Concurrency in software by gbjbaanb · · Score: 1

      Visual Studio would - even if you consider the speed improvement from compiling concurrently (except that it'll still bottleneck on the disk), I'm sure the many stupid threads that update intellisense or the the object tree or whatever it is that makes my box hang for a couple of seconds when I want it to do stuff will benefit.

    3. Re:Concurrency in software by TodMinuit · · Score: 1

      My point was that most desktop applications gain little from multithreading.

      --
      I wonder if I use bold in my signature, people will notice my posts.
    4. Re:Concurrency in software by AKAImBatman · · Score: 2, Insightful

      VLC would benefit greatly from concurrent SIMD cores like the Cell Broadband Engine. Depending on the particular compression stream, the cores could be decoding multiple frames of video/audio in parallel at a much faster rate than a regular PC. Even if the particular compression stream didn't allow for multiprocessing, the SIMD design would still allow for the decompression stream to be completed in a fraction of the time it would take general purpose instructions to perform. (The exact fraction is dependent on how large the bits of data are. It could be as little as twice as fast, or it could easily be four times as fast.)

    5. Re:Concurrency in software by MysteriousPreacher · · Score: 1

      A mail application can benefit from multithreading. While you're busy composing a mail, it can have a thread handling the updating of the mail databse. This is a very common desktop app.

      With decent state management and locks, it should be safe enough.

      --
      -- Using the preview button since 2005
    6. Re:Concurrency in software by Peter+La+Casse · · Score: 1

      Other common desktop apps could benefit too. A web browser ideally should open different tabs and run different plugins in different threads, so that a page with a java applet doesn't slow other pages to a crawl. Giving fancy gui widgets their own threads speeds up any nontrivial program, and modern word processors and spreadsheets often have things that can be parallelized to one extent or another.

      So we've covered music players, email, web browsers, word processors, and spreadsheets. It's true that vi might not benefit directly from multiple processors, but its cpu impact is minimal anyway.

    7. Re:Concurrency in software by Anonymous Coward · · Score: 0

      Emacs could benefit from multicore

  12. Multi-cores vs. internal parallelism by BritneySP2 · · Score: 4, Informative

    IMHO, multi-cores are good for multitasking, which does not cover the whole problem of parallelism. Software (at least, in principle) _is_ ready: pure functional languages, for example, are perfectly suited for parallel processing; it is the lack of the CPUs with architectures that support internal concurrency (using a single core - as opposed to those providing support for multi-threading using multiple cores) that is the problem...

    1. Re:Multi-cores vs. internal parallelism by Just+Some+Guy · · Score: 1

      Software (at least, in principle) _is_ ready: pure functional languages, for example, are perfectly suited for parallel processing

      To explain that for newcomers to the idea:

      The idea in functional programming is to make functions that have no side effects whatsoever. That is, functions don't modify global variables, don't save state somewhere, and don't do screwy things like writing to buffers allocated by other functions. Therefore, it's very (almost trivially) easy to establish formally correct dependency graphs showing the order of function calls in a program, and then parallelize them aggressively.

      That isn't to say that you can't write C code that avoids side effects, just that it's so much harder that you basically have to add human intervention to tell the compiler about it. From my understanding, OpenMP is basically that: you tell the compiler that certain blocks of code are explicitly parallelizable. Now, imagine that all of your code is that way by default.

      --
      Dewey, what part of this looks like authorities should be involved?
    2. Re:Multi-cores vs. internal parallelism by Anonymous Coward · · Score: 0

      To paraphrase, in theory, pure functional languages solve the parallelism problem, in practice, they don't.

      This is because:
      - while pure functions are indeed inherently parallelisable, they don't solve the problem: if you have a recursive function, it doesn't matter if the next iteration can be run on a different processor, since it has to wait on the previous anyway.
      - second, they have the wrong granularity: the big deal with good parallel design in figuring out the chunks of work that can be done in parallel efficiently. Just saying 'everything, let the scheduler figure it out' sin't even remotely an option.
      - finally pure functions are less than pure anyway: software is inherently stateful. Indeed this statefulness is the problem with parallelism. FPs move this into special constructs, such as monads, but then you still have to deal with the problem there..

  13. Her confusion means that ... by Anonymous Coward · · Score: 0, Troll

    IBM needs a new Chief Software Architect.

  14. Compilers by Jasper__unique_dammi · · Score: 1

    From this i get three questions in my head:
    -Can compilers be improved to automatically use multiple cores and where are the limits of this?
    -Multiple cores? Why not just treat it multiple computers?
    -Besides this, is there a solution to this in the form of new programming languages?

    1. Re:Compilers by TodMinuit · · Score: 2, Informative

      Besides this, is there a solution to this in the form of new programming languages?

      Erlang and Limbo have concurrency primitives built-in. Both used CSP as a launching point. Both give the programming easy-to-use, lightweight processes and message passing. Processes share nothing.

      However, neither have built-in support for multiple cores or multiple CPUs at the moment. It's just not a priority for the teams behind them. You can cheat such a setup with Erlang, however, as you can spawn processes on remote machines or remote Erlang instances. If you had two Erlang instances on the same machine, each would run on its own core, so all you'd need to do was spawn a process on each and then message pass between the two.

      --
      I wonder if I use bold in my signature, people will notice my posts.
    2. Re:Compilers by cyborg_zx · · Score: 1

      -Can compilers be improved to automatically use multiple cores and where are the limits of this?
      Yes, but it's really hard to automatically parallelize sequential algorithms in general and just about impossible to get anything near optimal.

      -Multiple cores? Why not just treat it multiple computers?
      Doesn't really change the nature of the problem does it?

      -Besides this, is there a solution to this in the form of new programming languages?
      Only in the sense that threads are really fucking bad for concurrent programming. Otherwise there is no magic bullet.
    3. Re:Compilers by Utopia · · Score: 1

      Currently compiler support for parellelization is not very automatic. You need to provide hints like OpenMT pragmas.
      A lot of good libraries are available which help in multi-threaded execution: For example Concurrency and Coordination Runtime is a excellent framework.

      I use OpenMT for a lot of my work, it scales well for upto 8 processors beyond that shared memory has proved to a bottleneck (I don't have NUMA hardware)

    4. Re:Compilers by malraid · · Score: 1

      From this i get three questions in my head: -Can compilers be improved to automatically use multiple cores and where are the limits of this? Not on a general way. Programs that depend on the order of execution, will break if run in parallel without proper synchronization. Synchronization is hard, and depends a lot on the program's logic.

      -Multiple cores? Why not just treat it multiple computers? Multiple cores are very different than multiple computers. Some applications scale well upon multiple computers (SETI@Home for example), while some other application really only scale well on multicore single image systems.

      -Besides this, is there a solution to this in the form of new programming languages? There's a solution in pretty much all programming languages, multithreading. The hard part is making it work well. This, again, depends on the program's logic.
      --
      please excuse my apathy
    5. Re:Compilers by Utopia · · Score: 1

      Its OpenMP not sure why I typed OpenMT :)

    6. Re:Compilers by duranaki · · Score: 1

      I used mp++ library for c++ in my college parallel programming class.. it's a library that make it easier to write and debug paralllized programs on a single computer, then running the same source on a super computer (IBM paragon at the time). There's also some parallel version of FORTRAN i think, but in the end it still looks like FORTRAN. I think the best general advice for programmers is to try and use multiple threads to tackle time critical tasks. At least then your program will scale *some* on multiple cores. But I still think heavy use of parallel processing is a scientific programming issue. Normal scaling issues are like trying to support X clients at a time, or support one user running 15 programs. Both of those work very well today.

    7. Re:Compilers by Anonymous Coward · · Score: 0

      SmartHeap for SMP

      Has its own issues but is relevant here.

    8. Re:Compilers by mabhatter654 · · Score: 2, Insightful
      this is the best thread to reply to...


      First issue... who says "most" programs CAN be recompiled? The first gen dual cores were basically duplicates of full processors, but as multicore becomes more popular, the cores will be more efficient and may start leaving out 100% compatibility in favor of sending threads to the better processor... that could save millions of gates per chip by tailoring some cores for FPU and some for SSE3 etc. This means in the future multicore processors won't automatically handle the old code more efficently. In comment to your "multiple computer" comment, that's what happens with code that doesn't play nice NOW.. in the future, it may not be possible to have ALL the features fo a full processor on ALL the cores.



      In many companies they don't have access to code... sometimes the key parts are 20 + years old and the source physically lost.. very common in business/manufacturing. Sometimes it's not "profitable".. witness how long Adobe is taking to get a version for Intel macs... Sue it's JUST a recompile, but they don't WANT TO do it.. and normal users are legally not allowed.



      The problem is not NEW programing languages, it's that much low-level stuff needs to be at least looked at and tested even if it's simply recompiled... that takes TIME and MONEY! If it's copyrighted software, there's nobody but the publisher that can legally do that! That means new versions with upgrade costs (and profit scalping). Like you said, forcing people to recompile usually makes them want to rewrite parts as well from being lost, misunderstood, or inefficient. That's a great time to bring in a new language to simplify things on one base of code and tools... On the other hand it's a great time to push Linux and OSS!!! After all, the code is open so there's nothing preventing somebody from doing the simple work of recompiling and testing on their own. (it still costs TIME, which isn't free, but at least it CAN be done).

    9. Re:Compilers by Jasper__unique_dammi · · Score: 1

      All, thanks for the replies.
      "First issue... who says "most" programs CAN be recompiled?"
      "sometimes the key parts are 20 + years old and the source physically lost"
      "If it's copyrighted software, there's nobody but the publisher that can legally do that!"
      For all these, I didnt take into account the politics, and assumed you have the source. And ofcourse the inclination to make a better build of the software.
      "it's that much low-level stuff needs to be at least looked at and tested even if it's simply recompiled."
      I guess if it is that low-level you could well be in the position of having to redo it. A lot of code isnt that low level?

    10. Re:Compilers by Anonymous Coward · · Score: 0

      According to the erlang.org front page:

      "The Erlang/OTP team is proud to announce the release of Erlang/OTP R11B, which is the first release with SMP support. (May 17, 2006)"

      Having said that, I haven't worked out how to make the erlang interpreter run in multi processor mode yet.

    11. Re:Compilers by Jasper__unique_dammi · · Score: 1

      Ok i should clarify my third question, and state that with the second one i meant that in some cases, multithreading is easy. (like in multiple non-interacting programs) With the third question i meant wether there was a language that could take info about how things are threaded, and optimize that way. Also, maybe the syntax/logic of the compiler can spot errors earlier then it would if it were just an library for multithreading. I must note that i am not a very experienced programmer, then again surely enough other slashdotians arent either, so enlighten them a bit.

    12. Re:Compilers by Jasper__unique_dammi · · Score: 1

      I meant a solution in a way that the compiler can make use of how things are threaded. The implementation of multithreading is exactly that, an implementation in the language, the compiler doesnt use the information well. (ofcourse in principle it could though, i dont think they do now)
      other reply about this. (continue there if you wish)

    13. Re:Compilers by Just+Some+Guy · · Score: 1

      -Besides this, is there a solution to this in the form of new programming languages?

      Yes, where "new" equals "Lisp 45 years ago". See other comments for details.

      --
      Dewey, what part of this looks like authorities should be involved?
    14. Re:Compilers by cyborg_zx · · Score: 1

      If you have multiple non-interacting programs then that means you're just running a lot of sequential programs together. That's obviously a non-problem but it does limit the processing speed to the limit of the sequential execution and the goal here is to exploit parallelism in order to get better performance. There are certainly better ways of constructing parallel programs and ensuring they are well behaved and correct (I am in fact working on a data flow language as a final year project that touches on these issues) but there's nothing that can automatically make this any easier as far as constructing the algorithms to run with threads. We cannot even do the simplest of things such as prove that deadlocks cannot occur in a system (which is pretty damn important really). Unfortunately it has rarely been the case that the best practises in computing have been applied so I suspect that threads will persist as the de facto solution for programming concurrency and our future systems will suffer from it as they suffer now from the inadequacies of the most popularly used imperative-style languages.

  15. more investments by len_p · · Score: 1

    Surely part of it it's true, but why not to ask more money for the software, if it needs to be rewritten to better handle new hardware and "security"? Five years later it seems it is still 32 bits and has drm inside. Sounds familiar? Len

  16. Concurrency is hard. by argent · · Score: 5, Informative

    Concurrency is a hard problem, and unexpected interactions between asynchronous events in concurrent environments has been a periodic bugbear for almost as long as computers have been interactive.

    It's what made the Amiga look less reliable than its competitors... if you only ran one native program at a time it was a lot more stable than MacOS or MS-DOS, because the OS provided a much richer set of services so applications didn't have to replicate them... but most people took advantage of the multitasking and when something crashed in the background the lack of memory protection meant the whole thing went down, and non-native software that wasn't written with multitasking in mind could produce the most entertaining crashes.

    These days we all have good protected mode multitasking operating systems, but we don't have good easy ways to distribute an application across multiple cores. Until we do, most applications are going to be written to run single-threaded and depend on the OS to use the other cores to speed up the rest of the system, both at the application level and doing things like running graphics libraries on another core.

    Until we have so many cores that the OS can't make effective use of them I don't think there's even going to be much of an attempt to make use of them for more developers. And then we're going to go through a painful period like we went through before Microsoft discovered multitasking.

    1. Re:Concurrency is hard. by Trails · · Score: 1

      Concurrency is hard, but so is Object Oriented programming... to those who aren't used to it.

      Concurrency comes with its own set of hurdles, traps, etc... etc... and the reason why people fall into them is that the majority of programmers have only limited experience with multi-threading. One could also make the argument that existing mainstream API's are a little "thin", expecting a lot from each implementation.

      The shift in hardware towards multi-threading precursors a shift in software towards the same. There will be growing pains, people will have to learn to spot and deal with the gamut of problems associated with multi-threading. However, this is not some impending crisis, and serious development (not "check outs my leetz Asteroids clone!!") will move fairly quickly to take advantage- it's already par for the course on most server and high end business apps (someone mentioned CAD programs as an example earlier).

    2. Re:Concurrency is hard. by drinkypoo · · Score: 1

      It's what made the Amiga look less reliable than its competitors... if you only ran one native program at a time it was a lot more stable than MacOS or MS-DOS, because the OS provided a much richer set of services so applications didn't have to replicate them... but most people took advantage of the multitasking and when something crashed in the background the lack of memory protection meant the whole thing went down

      What made the Amiga unstable was the lack of memory protection, not the multitasking. What made the Amiga fast was the microkernel design, the custom hardware... and the lack of memory protection. BTW Apple didn't use the MMU for anything but virtual memory until what, OS9? And windows lacked true protected memory until NT (some would say Windows ME - the important criteria being that the chip is never run in "real" mode.)

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    3. Re:Concurrency is hard. by texag98 · · Score: 3, Informative

      I agree... anyone who's developed multi-threaded code for an SMP has probably run into the problems of debugging asynchronous thread events. This can make debugging, which is already tedious even more tedious and time consuming.

      As the number of cores increases different algorithmic approaches will need to be pursued to get the maximum performance. Many algorithms which are great for serial processors will perform poorly on a parallel architecture.

      I think many people don't realize just yet how big of a paradigm shift multi-core really represents. Think of all the billions of lines of legacy code that exists out which was written for sequential computing. Scalability of code is also important since code written today is tomorrow's legacy code code written that isn't scalable will eventually need to be revisited.

      Multi-core will probably also require a new look at memory systems in PCs... To keep a lot of cores busy you have to feed them and that means possibly changes to the memory subsystems. It's not so bad now with so few cores on processors, but as they increase to 16, 32, etc. things start to get harder.

      In any case, multicore is here to stay and it will be exciting to see what changes come about in the next few years.

    4. Re:Concurrency is hard. by gaspar+ilom · · Score: 1

      I'm all about making frameworks as "declarative" as possible. ***

      I wonder if one side benefit is that the data (and the data architecture) can be moved to other systems where the code that interprets those declarations is optimized for multiple processors.

      *** I try make high-level abstractions about the organization of data and *functionality* in a web application, for example -- and I try to keep the code implementation completely separate from that.

    5. Re:Concurrency is hard. by operagost · · Score: 2, Informative

      Windows 3.1, 95, and 98 didn't run in real mode either. Starting with 3.1, Windows required a 286 because it only ran in protected mode (called "Standard") and virtual 8086 ("386 enhanced") mode. Unless, of course, you mean during the DOS boot sequence which has no bearing on system performance once the 32-bit kernel is loaded.

      http://support.microsoft.com/kb/78326
      http://support.microsoft.com/kb/79749

      --

      Gamingmuseum.com: Give your 3D accelerator a rest.
    6. Re:Concurrency is hard. by argent · · Score: 1

      What made the Amiga unstable was the lack of memory protection, not the multitasking.

      None of the other contemporary systems that the Amiga was compared to had memory protection either... and they weren't objectively a lot more stable than the Amiga... and they were less stable than the Amiga was if you stuck to native applications and didn't make significant use of the concurrency that the real-time microkernel made possible.

      So the point you should have taken from my comment isn't "multitasking made the Amiga unstable", but that "multitasking exacerbated the problems caused by the lack of memory protection that was the norm for personal computers in 1985".

  17. You hit the nail right on the head by Salvance · · Score: 5, Interesting

    The argument that software will get slower assumes that most consumer software will continue to have additional CPU requirements without being coded for multi-core applications. This doesn't make sense. The average consumer uses an Office product, e-mail, and a browser. None of these use anywhere close to 100% of the CPU for very long even on a Pentium 3, let alone on a 2GHz+ core in a multi-core processor.

    Workstation computing will suffer some until software vendors catch up, but this is already happening (e.g. most CAD, Animation, Video Processing are starting to come out with multi-core optimized software). Sure, some apps will continue to be single-threaded, but eventually, who would buy them? Software vendors aren't dumb.

    Games will probably speed up significantly as well. Imagine the possibilities of having a game engine where each AI character utilizes 100% of a single core? Game designers aren't going to sit around desiging games that run on single core engines, they always push the boundaries and will continue to do so.

    --
    Crack - Free with every butt and set of boobs
    1. Re:You hit the nail right on the head by Pxtl · · Score: 4, Interesting

      Even worst-case-scenario, minimally-threaded workstation software can still allow for manual multitasking - if the render-loop of your 3D-modelling app is only using a small amount of the available processor, then at least the others remain available for continuing to work in the main app.

      The real problem is that procedural languages are fugly for working in on this stuff. Even the "modern" commercial languages like Java/DotNet still are somewhat cumbersome in the world of threading, compared to other languages where the threading metaphors are deeper in teh logic (or more mutable languages, like Lisp, where creating new core metaphors is trivial).

    2. Re:You hit the nail right on the head by Wesley+Felter · · Score: 1, Funny

      The average consumer uses an Office product, e-mail, and a browser. None of these use anywhere close to 100% of the CPU for very long even on a Pentium 3, let alone on a 2GHz+ core in a multi-core processor.

      Sounds like you haven't tried Vista, Office 2007, and IE7.

    3. Re:You hit the nail right on the head by Pojut · · Score: 2, Interesting

      Well, programming languages come and go...of course, some of the "classics" are still in limited use (cobol, Pascal, C) but for the most part programming languages go the way of the dodo eventually.

      I would imagine that if these new multi-multi core procs are released into the wild in mass numbers, new programming languages will be developed that will enable things to be done more efficiently and easier....or perhaps a hybrid language: One half of the language is for writing processes for individual cores, while the other half acts as a "hub"....or even better, say you have 16 cores, and then one "central" core that acts like a post office...it doesn't actually create any of the mail, it just makes sure it gets delivered to the correct place.

      There is no way that the hardware would advance without the programming ability to back it up

    4. Re:You hit the nail right on the head by guaigean · · Score: 1

      Well, programming languages come and go...of course, some of the "classics" are still in limited use (cobol, Pascal, C) but for the most part programming languages go the way of the dodo eventually.

      I hate to see C lumped in there. Most supercomputing and parallel code in the world is written in C or Fortran. Sure, there is the rogue C++, Python, or something, but for now, parallel program runs mostly C/Fortran. They're fast, efficient, and well entrenched. One of the things that is available is addon languages which obfuscate the more difficult tasks. UPC (Unified Parallel C) and Co-Array Fortran have helped IMMENSELY to handle these problems. But I wouldn't expect C or Fortran to go away any time soon...

      And in regards to your "Post Office" system, most parallel code already runs that way in MPI, so it is not a new practice.

      --
      Microsoft Sucks, F/OSS Rocks. I get mod points now right?
    5. Re:You hit the nail right on the head by Pojut · · Score: 1

      I know, that's why I included it in being a classic that is still in use:-) Maybe not as limited as others, but still in use:-)

    6. Re:You hit the nail right on the head by fucksl4shd0t · · Score: 1

      I don't think workstation computing will suffer at all, for the reason you mentioned. :)

      The average consumer uses an Office product, e-mail, and a browser.

      Multi-core processors will hopefully schedule each of those on a different core, which will give the user added performance in task-switching. I, for one, am sick and tired of waiting for my computer to catch up whenever I switch tasks. When I'm "in the zone" on some program I'm working on, the cost of task-switching goes up significantly when those 1-3 seconds I have to wait for shit to finish switching is required. I could fall out of the zone waiting for my computer to catch up to me. I thought computers were supposed to be faster than people!

      --
      Like what I said? You might like my music
    7. Re:You hit the nail right on the head by drinkypoo · · Score: 1

      Multi-core processors will hopefully schedule each of those on a different core, which will give the user added performance in task-switching.

      They already do, but it won't. That's because what having multiple cores buys you is a reduction in context switches. When you switch applications what's slow is waiting for the cached elements of the GUI to be uncached, the paged memory of the idle application to be swapped back in, and the graphics to be redrawn. Multi-buffering solves some of this but the biggest problem is stupid paging.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    8. Re:You hit the nail right on the head by rifter · · Score: 1

      The argument that software will get slower assumes that most consumer software will continue to have additional CPU requirements without being coded for multi-core applications. This doesn't make sense. The average consumer uses an Office product, e-mail, and a browser. None of these use anywhere close to 100% of the CPU for very long even on a Pentium 3, let alone on a 2GHz+ core in a multi-core processor.

      Be that as it may, I think that the focus here was more on scientific computing and enterprise software, at least for now. Those are the people who are more likely to care whether their application is taking advantage of 128 processors.

    9. Re:You hit the nail right on the head by jacksonj04 · · Score: 1

      Not to mention the fact that your system can quite easily throw applications on the 'least busy' core. If you had a quad core system, you can still get better performance out of single thread applications running at the same time than you do at the moment. Ideal for those systems which insist on having 12 background apps open - they can be lumped on one core, the OS and a couple of other bits can take up another, and you've still got two 'empty' cores to do the real work.

      --
      How many people can read hex if only you and dead people can read hex?
    10. Re:You hit the nail right on the head by maxwell+demon · · Score: 1

      Well, 16 core systems will improve the context switching performance: They'll use 3 cores for the 3 applications you use, and the other 13 for predicting what you'll do next and preloading the necessary pages etc. :-)

      --
      The Tao of math: The numbers you can count are not the real numbers.
    11. Re:You hit the nail right on the head by Pxtl · · Score: 1

      Well, it's not really fair to include C in there - since _everything_ is tricky in C. C is good because it's simple, fast, and universal... the fact that it is dangerous and hard has never stopped anyone from using it. Likewise, that same fact won't stop people from using it for heavily parallelized apps.

      The problem is the middling languages that are designed to be _easy_ and have none of the aforementioned advantages of C are just about as bad as C for concurrency.

    12. Re:You hit the nail right on the head by Pausanias · · Score: 2, Informative
      Er, C is in "limited use?" How about all of GNU software, the linux kernel, and all of GNOME, which are written in C (not C++ or anything else), and even large parts of Apple's OS X Darwin kernel?

      Regarding multicore CPUs, there already plenty of parallelization packages linkable directly into C (e.g. the various MPI implementations). All you have to do is structure your for loops to make use of it. Once you do that, you can run each iteration of the loop on a separate core via MPI or something similar, thus fantastically improving your code execution time and making full use of all your cores.

      Heck, with your OS's built-in threading calls, you can do this even without MPI, as long as you can make your for loops thread-safe. Interestingly, OS X does this all the time---in Activity Monitor you can see the number of threads your processes have spawned. The kernel usually has the most, and iTunes, iMovies, etc usually have a few as well. Expect this number to go up when cpus with dozens of cores come out. And, of course, linux has the same functionality, though I've seen fewer linux apps that actually make significant use of multiple threads. They'll come soon, as long as the GNOME, etc. authors

      Well, programming languages come and go...of course, some of the "classics" are still in limited use (cobol, Pascal, C) but for the most part programming languages go the way of the dodo eventually.

      I would imagine that if these new multi-multi core procs are released into the wild in mass numbers, new programming languages will be developed that will enable things to be done more efficiently and easier....or perhaps a hybrid language: One half of the language is for writing processes for individual cores, while the other half acts as a "hub"....or even better, say you have 16 cores, and then one "central" core that acts like a post office...it doesn't actually create any of the mail, it just makes sure it gets delivered to the correct place.

      There is no way that the hardware would advance without the programming ability to back it up
    13. Re:You hit the nail right on the head by suv4x4 · · Score: 1

      Sure, some apps will continue to be single-threaded, but eventually, who would buy them? Software vendors aren't dumb.

      Is utilizing efficiently 100% of the CPU was always top priority for all possible apps, we wouldn't have technologies like Java, or even let alone Python, Perl and PHP on mission/performance critical servers, worldwide.

      The simple truth is lots of apps can get away with not grabbing the entire CPU for themselves.

      Also you're missing something: with modern technologies you don't have to write for multiple threads to get them. If you target .NET and Avalon, your GUI is already being rendered in a separate thread and potentially separate core.

      Modern computers also multitask a lot, so the cores are automatically useful there.

      And last but not least: we've pretty much reached maturity of abstraction with platforms like .net / java, which run fast even on single core.

      I seriously doubt we'll see more programming abstraction in terms of runtime processing. We'd instead see more technologies and API-s that work with those runtimes to delivr better results, faster (namely the Vista programming model).

    14. Re:You hit the nail right on the head by newt0311 · · Score: 1

      with interpreted languages, what may happen is that the interpreter just reprocesses the AST to give it multiple threads and programmers still don't have to worry about multi-threading and all of its associated headaches.

    15. Re:You hit the nail right on the head by Pausanias · · Score: 1

      Cat ate my post.

      meant to say...as long as GNOME authors can make the necessary revisions.

    16. Re:You hit the nail right on the head by tfinniga · · Score: 1

      The real problem is that procedural languages are fugly for working in on this stuff.

      And the other side of that coin is that functional languages are fugly for looking at, or manipulating data. It's not just that most people aren't used to them, it's that they have ugly syntax and notation (Lisp, I'm looking at you))))))))))))). Not to mention that figuring out how to do many common things is a little puzzle.

      If there was a functional, highly-threaded language that let me do procedural and functional stuff without needing to do a bunch of FoldR and cdrs all over the place, and not making my eyes bleed from the punctuation used, I'd be more interested in using it.
      --
      Powered by Web3.5 RC 2
    17. Re:You hit the nail right on the head by nuzak · · Score: 1

      If there was a functional, highly-threaded language that let me do procedural and functional stuff without needing to do a bunch of FoldR and cdrs all over the place, and not making my eyes bleed from the punctuation used, I'd be more interested in using it.

      One word: erlang

      --
      Done with slashdot, done with nerds, getting a life.
    18. Re:You hit the nail right on the head by Fatalis · · Score: 1

      .. the fact that it is dangerous and hard has never stopped anyone from using it.

      You think so?

      --
      Deus est fatalis
    19. Re:You hit the nail right on the head by tfinniga · · Score: 1

      I'll check it out.. :)

      --
      Powered by Web3.5 RC 2
    20. Re:You hit the nail right on the head by be-fan · · Score: 1

      Both Dylan and Lisp are excellent procedural languages. Lisp makes a better imperative language than C. Yeha, the foldr and cdrs are there and whatnot, but you don't have to use them. Just start out using "dolist" (basically a foreach), and progress to "map" or "fold" where it makes sense.

      --
      A deep unwavering belief is a sure sign you're missing something...
    21. Re:You hit the nail right on the head by Anonymous Coward · · Score: 0

      The argument that software will get slower assumes that most consumer software will continue to have additional CPU requirements without being coded for multi-core applications.

      No, it doesn't. It could also come about if Intel (and others) decide to take the route of "more lower-speed cores". If we figure out how to write high-end apps efficiently on 64 cores, then maybe in a few years we'll be running desktops with 64 cores, 500 MHz each. On such a system, any program that can only run on a single core will indeed run slower.

      I'm not saying this will or won't happen -- just that "email doesn't use 100% of CPU!" isn't a sound argument here.

    22. Re:You hit the nail right on the head by shadowkoder · · Score: 1

      I have a dual-core P4, and I still very occasionally see high utilization when doing relatively simple tasks. The culprit? The McAfee virus scan software provided by my school. I think when really big series of writes are done to the HD it spikes CPU utilization as it scans those files. Also, you will eventually need your 12 core processor to do your virus scanning + MS DRM (en/de)cryption + (RI/MP)AA file scanner + firewall + work related to your pretty MS UI ripped from OS X.

    23. Re:You hit the nail right on the head by TeknoHog · · Score: 1

      Most supercomputing and parallel code in the world is written in C or Fortran.

      Yeah, it's funny how multicore systems are touted as something new and difficult, while scientific programmers have been dealing with parallel systems for decades. And funny how Fortran is often used as the epitome of old and dead programming languages, whereas it's really SIMD at heart.

      --
      Escher was the first MC and Giger invented the HR department.
    24. Re:You hit the nail right on the head by Money+for+Nothin' · · Score: 1

      Also you're missing something: with modern technologies you don't have to write for multiple threads to get them. If you target .NET and Avalon, your GUI is already being rendered in a separate thread and potentially separate core.
      Irritating then that I can write a .NET app with no instances of System.Threading.Thread defined and running anywhere (that I have explicitly defined), and the WinForm I've created will not update a textfield during a long-running loop which (basically) dumps a remote database. The same is true of Java.

      Admittedly, I haven't tried this yet, but it looks to me like the GUI (and all its controls) needs to be instantiated and run in another, programmer-defined thread function (e.g. a while(bQuit == false), where bQuit is a boolean representing whether the user has signaled to quit the app)...

      The .NET interpreter does spawn a few threads upon startup (as indicated by Task Manager). But I don't know as they are all GUI-related threads, when running a GUI app...
    25. Re:You hit the nail right on the head by mccoma · · Score: 1

      Calling Lisp a functional language these days might not be exactly true, and with a good editor, s-expressions are not really as much of an issue after a little while.
      Haskell looks quite nice and has facilities (monads) to deal with some procedural stuff.

    26. Re:You hit the nail right on the head by Dutch+Gun · · Score: 1

      "Games will probably speed up significantly as well. Imagine the possibilities of having a game engine where each AI character utilizes 100% of a single core? Game designers aren't going to sit around desiging games that run on single core engines, they always push the boundaries and will continue to do so."

      You're correct. My company has a small group of developers working on our next-gen engine while the bulk of the company is working on our next product. One of the first systems to be worked on is an integrated framework to help reduce the complexity of safely writing multi-threaded code. Our assumption is that each major subsystem (graphics, audio, physics / collision, AI, etc) is going to have a dedicated core (or at least a large percentage of one), and we're planning innovative features that can take advantage of this distributed computing power.

      It definitely feels like the original article is way off base to me - a glorified sales pitch - as was rightly pointed out. Software developers are not morons. We see where the wind is blowing, and are adjusting our ship's sails as we speak.

      --
      Irony: Agile development has too much intertia to be abandoned now.
  18. Languages by Anonymous Coward · · Score: 0

    An issue is perhaps that we don't really have a programming language that really helps in thinking with multiple cores. Sure, there are constructs for threading and sharing memory and the like, but they usually boil down to os-specific function calls.

    Take ANSI Pascal. How do you do OOP in Pascal with proper abstraction, inheritance, and polymorphism? Borland added extentions to the language and got around some of those issues. So did C by way of C++.

    Thinking with multiple cores to solve problems isn't necessarily hard. Humans do parallel thinking all the time: walking, driving, dancing, etc. The old formats of linear code are just inadequate to really take advantage of lots and lots of cores.

    That said, it can still be done. But it's like digging a canal with a bunch of sporks.

  19. Bloody architects by Anonymous Coward · · Score: 0

    Why can't they shut up about computers and go back to
    making buildings. You don't find coders telling
    architects how to build skyscrapers.

  20. Stephen Wolfram has a solution by maynard · · Score: 5, Interesting

    A New Kind of Science. Converting a range of standard CS algorithms into Cellular Automata networks is the very solution our brains use; a combination of message passing and feedback loops. If we want our computers to scale in parallel, we might want to look at how biology has solved the problem. A lot of people laughed at Wolfram when he initially published that book. I think he yet might have the last laugh.

    1. Re:Stephen Wolfram has a solution by Noiprox · · Score: 2, Informative

      That is not true. Our brains do not use Cellular Automata. Neural Networks is a branch of Artificial Intelligence which attempts to model biological nervous systems. There are many reasons why it is not practical to design software such as office suites or whole video games to run on neural nets. Biological networks are trained, not designed. We also have no way of building efficient artificial neural net hardware at present. Wolfram himself does mention in his book that Cellular Automata are not the alpha and the omega, they are merely visually striking simple computing systems which illustrate many of his more general points well.

      People scoffed when Wolfram published his tome with some justification. They were n

      ot arguing against the merit of many of his points. They were pointing out the fact that he has an arrogant tone and is blatantly plagiarising decades of established computer science, restating the ideas of many other scientists as though they were his own. That is a serious breach of scientific ethics and he deserves to be tarred and feathered for it.

    2. Re:Stephen Wolfram has a solution by maynard · · Score: 1

      What are neurons? Independent self supporting cells, right? What are the interconnects between neurons but a highway for message passing. This highly oversimplifies the many kinds of messages that are passed, such as excitatory and inhibitory messages. But underneath the term neural network is a description which can modeled within Cellular Automata networks as well. As it turns out, these automata networks are massively parallel. Which would be a solution to the very problem our software developers now face.

    3. Re:Stephen Wolfram has a solution by micromuncher · · Score: 1

      Agree; Wolfram is not god, Mathematica wasn't revolutionary, and most everything he says isn't original.

      That said, KSI is pretty much dead in computer science, because we've moved from trying to figure out algorithmic learning to modelling systems that we think are trainable. The biggest advantage of multicore isn't new compilers or languages that take advantage of them; because we already have languages that support multithreading. We think in linear ways, and we write programs in linear ways, and what n-cores really gives us is the capability to reassign multiple serial tasks (or threads) to a core so traditional multitasking play nice isn't so important anymore.

      Look at what we got in our Xbox 360. Renderer, sound system, and input all are delegated.

      --
      /\/\icro/\/\uncher
  21. In other words, there's still room for bloat by Anonymous Coward · · Score: 0

    This sounds like a complaint that software has not yet caught up with hardware in their never-ending cycle where software expands to take up all available hardware resources.

    Developers, start your eye-candy-izations!

  22. Architect by cowscows · · Score: 0, Flamebait

    Architects design buildings.

    If engineers want to call themselves system architects, or chip architects, or something like that to try and pretend that they're somehow better than normal engineers, whatever. But don't refer to them with the title of Architect followed by their name. To design buildings and sign your name as a licensed architect has real legal implications, and a long and expensive process is required to get to that point.

    It's very similar to the term Doctor, which you generally should not go around referring to yourself as unless you truly are a doctor. Just because architects aren't as well paid or respected as doctors in our culture doesn't mean it's ok to steal the title.

    --

    One time I threw a brick at a duck.

    1. Re:Architect by Overzeetop · · Score: 2, Insightful

      Give it up. Protected titles ceased to be protected decades ago when industry decided that it didn't need to be regulated. Architect means nothing these days, nor does engineer or doctor. We can throw around RA and PE and MD all we want, but the common words will always be crapped on. Interstingly, accountant and lawyer seems pretty safe - I guess we just need to choose fields that nobody wants to be associated with if we want to keep our monikers pristine.

      Overzeetop, PE

      --
      Is it just my observation, or are there way too many stupid people in the world?
    2. Re:Architect by westlake · · Score: 1
      Architects design buildings

      When I look at a microphotgraph of a chip what I see is an urban landscape viewed from above, patterns as elegant and satisfying in their own internal logic.

      If this is not architecture, I don't what is.

    3. Re:Architect by balbeir · · Score: 1

      Right, and engineers only drive trains....
      How dare these bridge builders call themselves engineers. Where's the engine in that bridge ?

    4. Re:Architect by Waffle+Iron · · Score: 1
      From dictionary.com:

      architect noun

      1. a person who engages in the profession of architecture.
      2. a person professionally engaged in the design of certain large constructions other than buildings and the like: landscape architect; naval architect.
      3. the deviser, maker, or creator of anything: the architects of the Constitution of the United States. verb (used with object)
      4. to plan, organize, or structure as an architect: The house is well architected.

      It looks like 3 out of 4 definitions of the term don't match your criteria. Maybe you should hold off on your wrath unless these people start wielding building blueprints and claim to be something like *Registered Architects*.

      This is nothing new. The term "Computer Architecture" has been in widespread use for many decades now.

    5. Re:Architect by Anonymous Coward · · Score: 0

      The Architecture majors I'm going to school with are nothing to brag on. I haven't seen one yet that could make it in Civil Engineering.

    6. Re:Architect by MrCopilot · · Score: 1
      Here is how I define architect.

      If you look at any system / building / software, and wonder "How the hell does it keep from falling to pieces?"; an Architect built it.

      This applies to every multiprocessor system I have engineered, just as well as the brooklyn bridge or the Guggenheim.

      I've always wanted to use that word in a meaningful way.

      --
      OSGGFG - Open Source Gamers Guide to Free Games
    7. Re:Architect by kfg · · Score: 1

      Architect; someone an engineer has to explain reality to.

      KFG

    8. Re:Architect by kfg · · Score: 1

      For that matter, when he says "doctor" does he mean someone licensed to practice medicine, someone who holds a PhD or a Wise Man?

      Come to think of it though, his use of "engineer" to mean programer annoys me. That was invented by a company that wanted to give their programers a perk without spending any money.

      But an "Associate" is still just a minimum wage cash registar jockey.

      KFG

    9. Re:Architect by Anonymous Coward · · Score: 0

      It's very similar to the term Doctor, which you generally should not go around referring to yourself as unless you truly are a doctor.
      Or you happen to be Doctor Who.
    10. Re:Architect by Anonymous Coward · · Score: 0

      ut don't refer to them with the title of Architect followed by their name. To design buildings and sign your name as a licensed architect has real legal implications, and a long and expensive process is required to get to that point.

      You're thinking of Civil Engineers. Architects just draw pretty pictures. Any joe blow can call themselves an architect.

    11. Re:Architect by Anonymous Coward · · Score: 0

      Here in Arizona it is a class 2 felony to call yourself an Architect unless you are so liscensed by the state. They do prosecute.

      Once again, ignorance triumphs here on slashdot.

    12. Re:Architect by Flunitrazepam · · Score: 1

      what about dr. dre? are you trying to say he's not a real doctor?

      --
      1) Your analysis is based on bad assumptions so your result is way off. 2) You're a sick bastard for fucking a horse.
    13. Re:Architect by dbIII · · Score: 1

      If engineers want to call themselves system architects

      To be precise most of these people are not engineers either. I used to be a professional engineer but now consider myself some form of computer wrangler instead, so I do not call myself this unlike MSCE types with no degree and little very experience.

    14. Re:Architect by Overzeetop · · Score: 1

      Do you have any MCSEs in AZ? If so, why aren't they in jail, or does the proetction just extend to architects? Or, perhaps Registered Architects, which is a regulated field.

      The only place to effectively prosecute MSCEs was Quebec, if I remeber correctly. Everybody else just drops their panties and bend over for industry.

      By the way - IBM has a nexus in AZ, and yet they have a Cheif Architect. I don't see your AG going after her or revoking the corporation in the state.

      You're not just a stupid architect, but an AC stupid architect. God, what an asshole.

      --
      Is it just my observation, or are there way too many stupid people in the world?
  23. Not mine by Anonymous Coward · · Score: 0

    My native c++ apps will still run like the wind.
    Everyone buying into Microsoft's huge, slow runtimes
    (.NET where it isn't needed) will have to suffer.

    Wait, this is /. I mean er yah! FreeBSD app runeth fast!

  24. hardware by Turn-X+Alphonse · · Score: 1

    I rather feel hardware is at an end rather than software. It seems we've got to the point where stacking things on top of each other is the only way to keep improving things.

    --
    I like muppets.
  25. Can't the OS just bump apps to their own procs? by 192939495969798999 · · Score: 3, Interesting

    Forgive my ignorance, but can't the OS just make each new app run on it's own core? That would probably give us some overall apparent-speed-of-computer increases, without having to completely modify all existing stuff.

    --
    stuff |
    1. Re:Can't the OS just bump apps to their own procs? by Overzeetop · · Score: 4, Interesting

      You are correct. And given the multitude of things that modern OSes need to do to "help us", we need these cores. I wish my laptop could be upgraded to a multi-core system, as there are too many things that will bod down the system that have to run in the background. Having a processor (or two) for them would significantly increase the responsiveness of my system.

      A decade ago I had a dual PP200 that was one of the nicest machines I had ever run. I ran some unruly apps at the time, and having an extra idle processor to cut those processes of at the knee without rebooting was a nice benefit. Nothing was multi-threaded back then, but having two processors was still valuable.

      --
      Is it just my observation, or are there way too many stupid people in the world?
    2. Re:Can't the OS just bump apps to their own procs? by teh_chrizzle · · Score: 1

      can't the OS just make each new app run on it's own core?

      that's my question. why not put some scheduler thing in the OS to load balance between cores?

      That would probably give us some overall apparent-speed-of-computer increases, without having to completely modify all existing stuff.

      with all of this talk about virtualization as the future of rock and roll, why can't you just stick your legacy apps into some container and have the container take a single core all to itself? presumably clockspeeds will continue to increase along with the ability to put more cores on a stick. if virtualization software can imitate dual processors on a single core, why can't you do the reverse as well and use virtualization to span processes intended for a single processor over multiple cores?

      from what i gather, the tricky issue with the cell is that not all of it's cores are created equal, with one core that rules the others, lord of the rings style. if that is true, why would i use a cell when using a current or future iteration of an X86 multicore processor would introduce fewer problems?

      --
      sarcasm:
      -noun
      1. harsh or bitter derision or irony.
    3. Re:Can't the OS just bump apps to their own procs? by 192939495969798999 · · Score: 1

      "with one core that rules the others, lord of the rings style."

      In this case, you'd have the command O/S run on the "lead" core, and the apps on the other cores, right? I mean, am I a rocket scientist here, or shouldn't this stuff all be obvious?

      --
      stuff |
    4. Re:Can't the OS just bump apps to their own procs? by Sique · · Score: 1

      That's not the problem. But if you have a CPU intensive, but non-threaded program in your 128-processor-computer, then one processer runs at 100% load for your program, another one maybe at 28% to keep the I/O running, and 126 processors are idle. Thus your computer runs at 128%/128 = 1% of its capacity, even though the problem you are trying to solve on it is solely CPU limited.

      --
      .sig: Sique *sigh*
    5. Re:Can't the OS just bump apps to their own procs? by teh_chrizzle · · Score: 1

      well, i thought that the beauty of grid computing was that it could be made of disperate architectures and that the translating was handled by the "client"... or whatever you call the program that lets a node talk to the grid.

      isn't it the same deal, only for interprocess communication? it seems that the cluster/grid engineers already solved this one and you just have to miniaturize the whole thing to work between cores instead of between nodes.

      one thing i learned in the very brief dotcom era experience that i had working with a software architect is that in the interest of producing new and clever ideas, sometimes it's tough to see new ways to apply old ideas.

      i'm not trying to insinuate that i know more abou this stuff than the chief architect at IBM, i'm just saying that sometimes, a simple solution is often "too simple" to be entertained at the architecture level.

      --
      sarcasm:
      -noun
      1. harsh or bitter derision or irony.
    6. Re:Can't the OS just bump apps to their own procs? by maxwell+demon · · Score: 1

      Well, in my experience it's processes competing for disk access which slow the computer down (with swapping when memory gets full as special case). I can run computing-intensive processes in the background (niced, of course) without any apparent impact on the computer's responsiveness. However, as soon as something does lots of disk I/O (e.g. updatedb or beagle), the computer turns close to unusable.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    7. Re:Can't the OS just bump apps to their own procs? by owlstead · · Score: 1

      Yup, when my Unreal crashes or doesn't quit, I love having a fully operational (X2) core left. Of course, if the application *would* have been multi-threaded, I might have two processors bound by this application. So lets have 32 cores with one for the operating system and its fully tested apps. Or a real time OS that leaves it's core processes (e.g. task manager) enough room to run.

      Of course, 99% of the time this game also takes the keyboard and screen with it, so even 256 cores are no help then. Linux/X is not much better either. In the end its the (operating) system that makes most difference, and the number of cores is nice, but non-essential. And of course current HDD's are not up to multi-tasking. Everybody that has tried to run two copy commands at the same time will know what I am talking about.

      Hmm, this comment turned out to be a bit of a mess, but you get the general idea.

  26. Did the submitter even read the article? by jndale · · Score: 2, Informative


    If you read the article, you will see that Mrs. Crawford does not even come close to saying that "Software is at Dead End". She says software needs to catch up with the hardware.

    Computers have more and more processors (and different kinds of processors, like GPUs), and currently most software isn't designed for that kind of environment. IBM has developed some clever ways to program these types of systems in a "general purpose" way.

    That's the worst summary of a headline that I've ever read.

    1. Re:Did the submitter even read the article? by barnacle · · Score: 1

      welcome to slashdot :-)

  27. Concurrency is... by TodMinuit · · Score: 4, Informative
    --
    I wonder if I use bold in my signature, people will notice my posts.
  28. It's called web 2.0, DUH!!!! by Trails · · Score: 1

    Clearly this person hasn't heard of our lord and master (and commander) Tim O'Reilly. Web 2.0, with it's centralised software-as-a-service paradigm will synergize the blah blah blah.

    Ok, ok, buzz words aside (synergize!), with the move to web apps, desktop terminals, people browsing on gaming consoles, etc... I just don't see what the person is whinging about.

    Ok, so hardware is moving towards parellelism (new buzzword? It's mine, and I've trademarked it, use it and I'll sue you!!). Software will need to be engineered differently to take advantage. This is nothing new. Old games don't take advantage of 3d cards. Once the hardware became relatively available, they started to. It's the same thing here.

    But what I find most ironic is that further down the /. main page is an article about how businesses should move to dumb terminals for most users, implying server software which implies software designed for parellelism. So I guess I don't see where there's some giant disconnect between software and hardware, there's just a shift coming up, and there'll be a "synching up" period. We've had these in the past and this won't be the last. Therefore, can we please put the rhetoric down, and step away from it, before someone loses an eye?

    1. Re:It's called web 2.0, DUH!!!! by Anonymous+Brave+Guy · · Score: 1

      Ok, so hardware is moving towards parellelism (new buzzword? It's mine, and I've trademarked it, use it and I'll sue you!!).

      Sure, you can have that one. "Parallelism", however, has been in use for years.

      Software will need to be engineered differently to take advantage. This is nothing new. Old games don't take advantage of 3d cards. Once the hardware became relatively available, they started to. It's the same thing here.

      Except that it's not the same at all. 3D cards provided hardware implementations of what the software was already doing, but the programming interface was essentially the same. Writing good software using concurrent execution, however, is a very difficult problem, and one not at all well served by today's threads and locking techniques.

      But what I find most ironic is that further down the /. main page is an article about how businesses should move to dumb terminals for most users, implying server software which implies software designed for parellelism.

      Firing off multiple essentially independent threads to deal with incoming requests on a server is easy. Co-ordinating multiple threads to perform complex operations efficiently on the new hardware is not.

      So I guess I don't see where there's some giant disconnect between software and hardware, there's just a shift coming up, and there'll be a "synching up" period. We've had these in the past and this won't be the last.

      That is almost certainly true. But there is a lot more than just hype in this case, even if you don't yet appreciate that fact.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  29. Not really news.... by HerculesMO · · Score: 0, Offtopic

    I knew IBM's Lotus Notes was a dead end years ago :)

    --
    The price is always right if someone else is paying.
  30. To sum up: by kahei · · Score: 0, Troll


    IBM have invested heavily in multicore technology that is only effective for very parallel tasks.

    However, not all tasks can be parallelized at all, and not all can be parallelized easily. This makes IBM's product unattractive to many potential customers.

    IBM is therefore also investing in people to go around telling prospective buyers that sure, if the developers just build 'multicore aware' programs, then multicore will help them a whole lot, yes sirree. And sure, there's an element of truth in that in most scenarios.

    IBM's investment has been successful enough to appear on Slashdot.

    The end.

    --
    Whence? Hence. Whither? Thither.
  31. programming for multi-core architectures by barnacle · · Score: 5, Informative

    was an interesting article, particularly the part about the hybrid "roadrunner" architecture.

    However what is more relevant to today's non-supercomputing needs is SMP scalability.

    One of the challenges with SMP scalability is cache coherency; synchronizing the caches on the processors is a costly operation (this is necessary to ensure that each processor has the same view of certain memory at the same time), normally (always?) done with a cache invalidation.

    So the more invalidations you do, the more often the processor has to fetch memory from main memory, and the less it's using its cache. Processing slows down dramatically.

    I've tried to design the qore programming language http://qore.sourceforge.net/ to be scalable on SMP systems. The new version (released today) has some interesting optimizations that have resulting in a large performance boost on SMP machines - the optimizations involve reducing the number of cache invalidations to the minimum (more than just reducing locking, although that is a part of it too - even an atomic update - for example on intel an assembly lock and increment - involves a cache invalidation and therefore is an expensive operation on SMP platforms). There is more work to be done, but in simple benchmarks of affected code paths the performance increase was between 2 and 3 times as fast with the optimizations on the same qore code.

    Anyway it would be interesting to know if other high-level programming languages have also taken the same approach (or will do so); as we go forward, it's clear that SMP scalability will be an important topic for the future...

    1. Re:programming for multi-core architectures by DamnStupidElf · · Score: 1

      One of the challenges with SMP scalability is cache coherency; synchronizing the caches on the processors is a costly operation (this is necessary to ensure that each processor has the same view of certain memory at the same time), normally (always?) done with a cache invalidation.

      Opterons with Hypertransport use the MOESI cache coherency protocol to exchange data between core caches without invalidation back to main memory. I have not looked into the actual semantics of the instructions (and the LOCK prefix) to see exactly how they impact cache coherency though.

  32. Consistent Frameworks PLEASE!!! by tezza · · Score: 1
    Writing software is hard. Very hard. So hard that it can take many years to appreciate all the interactions between all components. These components are both concrete and abstract. Multi core is yet another layer on top of everything else.


    One of the first problems which Developers will need to master is Cache-Consistency. We are not being helped very much here. At the moment this is all very level/library specific. All the tricks for, say, elegantly sharing a session in a Hibernate based J2EE webapp are different for synching L3 cache structures between different cores. They are the same Cache-Consistency problem in principle.

    Hibernate accomplishes a lot by giving in-code Hints [called AOP for some stupid reason]. These are instructions which are reasonably close in to where the code which deals with that data is located.

    What is needed is a lot more consistent frameworks for describing what data should be shared between cores&servers. Some will be a priority and the rest can be fetched later. Similar to marking

    register
    to hint the compiler should use a cpu register to store the variable.


    Describing this data stuff cuts across many levels. Data design, language choice, IDE integration, build tools and then target deployment environments.

    From the question 'Where's the Software to Catch Up to Multicore Computing?'. We need better consistency to describe to the computer what we'd like it to be doing, and we need a consistent system so we can learn it more easily when we're novices.
    --
    [% slash_sig_val.text %]
    1. Re:Consistent Frameworks PLEASE!!! by geekoid · · Score: 1

      Writing software is insanely easy.
      Engineering software is vary hard.

      Just thought I would clarify for our Java and .net folks.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  33. the limit is the brain by Anonymous Coward · · Score: 0

    The human brain is not good at task parallelism, so advances in parallel computation MUST at some point
    be driven at the compiler level. Try to remember 10 things at once. It's hard. Try writing a program with 600
    threads. It's almost impossible.

    This is where languages that have the concept of no side effects will come in and replace the concepts we have today.
    Maybe we will all be programming is Haskell soon.

  34. It'll speed things up... by sugarman · · Score: 1

    I think multiple cores are great. Now each of the spyware apps on my Windows box will have their own dedicated processor, and I can actually get something done on the ones that are freed up.

    Bring it on!

    --
    --sugarman--
  35. Never, ever, not in a million years! by Phat_Tony · · Score: 2, Insightful

    "We will never, ever return to single processor computers"

    Does anyone think that's anything other than a stupid thing to say?

    I mean, maybe we never will, and maybe it's really unlikely that we will anytime soon. But it seems that anytime there's a real revolutionary (rather than evolutionary) jump in processors, we may well go back to a single "core." For example, if they invented a fully optical processor that was insanely faster than anything in silicon, but they were very expensive to produce per core, and the price scaled linearly with the number of cores... sounds like we'd have single core computers around again for a while. And what about quantum computers? I don't even know what a "core" would be for a quantum computer, but are they by nature going to have a design that works on multiple problems simultaneously without being able to use that capacity to work on an individual problem faster? Even if that is the case, does the author know that, or are they just ignoring any possibility of non-silicon architectures?

    Even within silicon, is it out of the realm of conceivability that someone will develop a radical new architecture that can use more transistors to make a single core faster such that it's competitive with using the same transistor count for multiple cores?

    Considering how computers have spent a good 40 years continuously changing more quickly than any other technology in history, I'd be a bit more reserved in making sweeping generalizations about all possible future developments that might occur in the next forever.

    Still, computer scientists seem to be in rough agreement that current software development models mostly don't produce programs that are multi-threaded enough to take optimal advantage of the current trend toward increased cores. maybe it just sounds too boring when worded that way.

    --
    Can anyone tell me how to set my sig on Slashdot?
    1. Re:Never, ever, not in a million years! by drinkypoo · · Score: 1

      Even within silicon, is it out of the realm of conceivability that someone will develop a radical new architecture that can use more transistors to make a single core faster such that it's competitive with using the same transistor count for multiple cores?

      It's not inconceivable, but what is inconceivable is that anyone would bother using it for a desktop system until the price came down - and also that people wouldn't be using multiple cores, because they would. Such a system would be most desirable in the heavy-lifting category, like weather modeling and such, and the more power you can get, the better.

      If you put the hardware to do multiple loads and/or stores at once into such a system, or get the bus bandwidth high enough, you don't need multiple cores, but one thing you get with a usefully-designed SMP system (IE, one where all cores aren't sharing one bus) is that as you add more processors you add more bandwidth. That is as valuable as increasing your processing power, for some tasks.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    2. Re:Never, ever, not in a million years! by geekoid · · Score: 1

      1. They are talking in terms of todays technology. Silicon, fabs, etc. SO to say "What if magic computer happen" is a little outside the context of this discussion.

      That said, if I create an 'optical' chip, why wouldn't I create a muliticore optical chip?

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    3. Re:Never, ever, not in a million years! by Anonymous Coward · · Score: 0

      Also, given that portable computers and computerish devices like smartphones and ipods are always growing in popularity, and that power efficiency and weight reduction rather than raw power are the drivers in that space, I wouldn't be too surprised to see ultra-low-wattage single-core chips being popular indefinitely.
      Single core will probably rule PDAs and phones and be a big deal in laptops for a very long time.

  36. VM or dumb terminals by Anonymous Coward · · Score: 0

    If I had a multi-core near-supercomputer, I'd stick it in my basement and use it to run VM'd or dumb terminals in every room in my house. I'd only use the full processing power for cracking and transcoding DRM'd video.

  37. CPU not the bottleneck by Tablizer · · Score: 4, Insightful

    Most apps get slow for these reasons:

    1. Disk is slow
    2. Network is slow
    3. Junkware hogging CPU
    4. Some primadona process decided against my will that it wants to run a scan, Java RTE update, registry cleaning, etc., using up disk head movements, RAM, and CPU.

    CPU is usually not the bottleneck except when other crap makes it the bottleneck.

    1. Re:CPU not the bottleneck by Anonymous+Brave+Guy · · Score: 1

      CPU is usually not the bottleneck except when other crap makes it the bottleneck.

      Not if all you write is database front-ends and GUIs, sure. If you do serious maths, whether for simulation or CAD or gaming or an optimising compiler or whatever, then CPU is sometimes all that matters.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:CPU not the bottleneck by arifirefox · · Score: 1

      actually most apps end up slow because of poor UI. Brains are slower than cpu's so an app that asks more of the brain will end up with a slower end result.

      --
      Firefox Power http://firefoxpower.blogspot.com/
  38. boooo.... by Skizmo · · Score: 0

    ring. . . Sorry. . .but I get sick of all those 'smart' people who think they can predict the future and evolution.

  39. still old wrong news by 12357bd · · Score: 1

    Turing imagined massively parallel machines, but the succes of Von Newman architectures (hardware/software) has lead to the actual state of computers.
    There are things that can only be achieved with massive parallel processing, but after +60 years we are still triyng to extend the current arquitecture to multiple (not massive) units.
    I can understand the motivations and advantages but they are still fundamentally wrong.

    --
    What's in a sig?
    1. Re:still old wrong news by Anonymous Coward · · Score: 0

      Massively parallel?

      Things are either parallel or they aren't. Something can't be "more parallel" than something else.

      Now if I only I could explain this to the idiots who say "massively multiplayer."

    2. Re:still old wrong news by Throtex · · Score: 1

      They can be embarassingly parallel, though.

  40. Chuck Moore by Anonymous Coward · · Score: 0

    The first person I met who was seriously looking at this question of how to design (and take advantage of) chips with lots of cores was Chuck Moore, the inventor of the Forth Language. I know he's been working on this general problem quite a while-and I'd tend to take what he has to say in this area _very_ seriously. Moore is an original thinker--and the "real deal".

    Randall Burns

  41. You need Ruby by Anonymous Coward · · Score: 0

    Why are $COMPANY and $PRODUCT both in the global namespace?

    Or can only one company sell only one product?

    1. Re:You need Ruby by Red+Flayer · · Score: 1

      Why are $COMPANY and $PRODUCT both in the global namespace?
      Because it would be a major PITA if "Cell architecture" meant a different thing within each company.

      And because the "Cell architecture" has a ton of patents on it, which means that it is indeed a global value, as far as most IP law is concerned; ditto for the trademarked IBM.
      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
  42. It's the Language, stupid! by david.emery · · Score: 2, Insightful

    I believe a big part of our problem is our piss-poor set of programming langauges and their support for concurrency. C/C++ threads packages and Java's low level synchronization primitives make developing parallel/concurrent programs much more difficult than it should be. (Ada95/Ada05 gets it better, at least by raising the level of abstraction and supporting one approach to unifying concurrency synchronization, concurrency avoidance, and object-oriented programming.)

    Additionally, there's the related problems of understanding concurrency. In the 80's and 90s in particular, there were a lot of fundamental research results in reasoning about concurrent systems. Nancy Lynch's work at MIT (http://theory.csail.mit.edu/tds/lynch-pubs.html) comes to my mind. I'm always dismayed at how little both new CS grads and practicing programmers know about distributed systems, and how poor their ability is collectively to reason about concurrency. It seems like most of the time when I say "race condition" or "deadlock", eyes glaze over and I have to go back and explain 'concurrency 101' to folks who I think should know this.

    Wasn't it Jim Gray (I sure hope he shows up safe and sound!) who coined the terms "Heisenbugs" and "Bohrbugs" to help describe concurrency and faults? (Wikipedia attributes this to Bruce Lindsay, http://en.wikipedia.org/wiki/Heisenbug) Not only is developing concurrent programs hard, debugging them is -really hard-, and our tools (starting with programming languages and emphasizing development tools/checkers), should be focused on substantially reducing or elminating the need for debugging, or development effort will continue to grow.

    Until we have more powerful tools -and training- (both academic and industrial) in using those tools, the Sapir-Whorf hypothesis (http://en.wikipedia.org/wiki/Sapir-Whorf_hypothes is) will apply: The lack of a language (programming language as well as 'spoken language') to talk about concurrency will make it nearly impossible for most programmers to develop concurrent programs. This applies to both MIMD and SIMD kinds of parallelism.

              dave

  43. "Build it and they will come" attitude by Animats · · Score: 4, Insightful

    I've met some of the architects of the Cell processor, and they have a "build it and they will come" attitude. They've designed the computer; it's up to others to make it useful. This is probably not going to fly.

    The Cell is a non-shared memory multiprocessor with quite limited memory per processor. There's only 256K per processor, which takes us back to before the 640K IBM PC. There are DMA channels to a bigger memory, but no cacheing. Architecturally, it's very retro; it's very similar to the NCube of the mid-1980s. It's not even superscalar. Cell processors are dumb RISC engines, like the old low-end MIPS machines. They clock fast, but not much gets done per clock.

    Yes, you get lots of CPUs, but that may not help. On a server, what are you going to run in a Cell? Not your Java or Perl or Python server app; there's not enough memory. No way will an instance of Apache fit. You could put a copy of the TCP/IP stack in a Cell, but that's not where the CPU time goes in a web server. One IBM document suggests putting "XML acceleration" (i.e. XML parsing) in the server, but that's an answer looking for a problem. It might be useful for streaming video or audio; that's a pipelined process. If you need to compress or decompress or transcode or decrypt, the Cell might be useful. But for most web services, those jobs are done once, not during playout. Even MPEG4 compression might be too much for a Cell; you need at least two frames of storage, and it doesn't have enough memory for that.

    Now if they had, say, 16MB per CPU, it might be different.

    The track record of non-shared memory supercomputers is terrible. There's a long history of dead ends, from the ILLIAC IV to the BBN Butterfly to the NCube to the Connection Machine. They're easy to design and build, but just not that useful for general purpose computing. Some volumetric simulation problems, like weather prediction, structural analysis, and fluid dynamics can be crammed into those machines, so there are jobs for them, but the applications are limited.

    Shared-memory microprocessors look much more promising as general purpose computers. Having eight or sixteen CPUs in a shared-memory multicore configuration is quite useful. That's how SGI servers worked, and they had a good track record. Scaling up today's multicore shared-memory CPUs is repeating that idea, but smaller and cheaper.

    At some point, you have to go to non-shared memory, but that doesn't have to happen until you hit maybe 16 CPUs sharing a few gigabytes of memory, which is about when the cache interconnects start to choke and speed of light lag to the far side of the RAM starts to hurt. That might even be pushed harder; there's been talk of 80 CPUs in a shared memory configuration. That's optimistic. But we know 16 will work; SGI had that years ago.

    Then you go to a cluster on a chip, which is also well understood.

    That's the near future. Not the Cell.

    1. Re:"Build it and they will come" attitude by DamonHD · · Score: 1

      Note that the Sun Niagara machines responsible for their current black ink are already up to 32 cores and a few GB of memory. Perfect for Web servers, and Java's efficient concurrency-aware memory model lets you write stuff that avoid beating up your interconnect unnecessarily (eg lock-less algorithms). Yes, asymmetric CPUs are very hard to program and/or to apply to even relatively generic workloads...

      --
      http://m.earth.org.uk/
    2. Re:"Build it and they will come" attitude by joib · · Score: 1


      The track record of non-shared memory supercomputers is terrible. There's a long history of dead ends, from the ILLIAC IV to the BBN Butterfly to the NCube to the Connection Machine.


      The vast majority of supercomputers today have distributed memory, from basic PC clusters to the highest end stuff available such as IBM blue gene or Cray XT4.


      At some point, you have to go to non-shared memory, but that doesn't have to happen until you hit maybe 16 CPUs sharing a few gigabytes of memory, which is about when the cache interconnects start to choke and speed of light lag to the far side of the RAM starts to hurt. That might even be pushed harder; there's been talk of 80 CPUs in a shared memory configuration. That's optimistic. But we know 16 will work; SGI had that years ago.


      Current SGI gear supports a maximum of 512 sockets, i.e. 2048 threads, all cache coherent.

      That being said, considering all the problems with shared state programming, I think the future belongs to some form of message passing, e.g. actor model, CSP, join calculus etc. Those can be implemented without CC.

    3. Re:"Build it and they will come" attitude by Mike1024 · · Score: 1

      Shared-memory microprocessors look much more promising as general purpose computers. Having eight or sixteen CPUs in a shared-memory multicore configuration is quite useful.

      Isn't shared memory intrinsically slow, because access has to be interleaved between all the processors sharing it?

      Obviously it depends on the operation, but for something like matrix multiplication or image blurring (with lots of memory accesses) wouldn't memory bandwidth be a limiting factor?

      I ask out of genuine curiosity - I'd be interested to know what you think.

      Cheers,

      Michael

      --
      "Goodness me, how unlike the FBI to abuse the trust of the American public." -- The Onion
    4. Re:"Build it and they will come" attitude by Anonymous Coward · · Score: 0
      I have a fundimental problem with the logic used to attack the "build it and they will come" position. (As an aside, there is no external reference to prove that this attitude is the primary position at IBM.) If a Cell style processor dosen't exist, then it is clear that no software of this type will be developed. Yes, one could simulate this kind of system, but there would be no compelling reason to do so. Meanwhile, IBM has made a significant investment in creating the Cell processor. They expect to make money on this investment. Literally, they have put there money where their collective mouths are. How does this make them arrogant, as the poster seems to imply?

      As for the other historical references to failed systems, all I can say is that times change, and so do price performance points. As a counter example, I can offer the growth of the GPU. These are specialized processors with limited memory with a bus connection, and they are becoming mainstream computing elements. Heck, you need one of these to run Vista, which is the definition of mainstream. If a Cell style system becomes readilty available, who knows what kind of software will be written for it?

    5. Re:"Build it and they will come" attitude by Animats · · Score: 1

      Isn't shared memory intrinsically slow, because access has to be interleaved between all the processors sharing it?

      In practice, no. There are clever techniques to get around that, most of which involve caches.

      Shared memory between modern multiprocessors is to some extent an illusion, one created by very clever cache hardware design. Each processor has its own cache with local memory, and each cache controller has some information about what the other processors have in their caches. When one processor changes a memory location and another process needs to read it, the cache controllers communicate and update the caches. That slows things down, but it doesn't happen too often. This is called "cache coherency", which you can look up to learn more about the subject. The end result is that it looks to programs like all the processors share the same memory, but most of the time they're really accessing local copies of main memory.

  44. When will you by geekoid · · Score: 1

    build good compilers that support these options?

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  45. MOD PARENT UP by TheRaven64 · · Score: 1
    Concurrency is easy, threading is hard. If all of your threads are in the same address space, or communicating synchronously then your debugging complexity scales roughly according to the factorial of your degree of concurrency. If you use an asynchronous model with no shared address space then it scales roughly linearly with your degree of parallelism.

    Pick the right tool for the job.

    --
    I am TheRaven on Soylent News
    1. Re:MOD PARENT UP by swillden · · Score: 1

      If you use an asynchronous model with no shared address space then it scales roughly linearly with your degree of parallelism.

      I agree, except that the question of shared or separate address spaces isn't relevant. Separate address spaces are nice, because they ensure that certain types of error in one process can't screw up another process. That assurance is of limited value, though, since the errors can still screw up the process that makes them, meaning the system doesn't work.

      What matters is the model. It's okay to have a shared address space -- just don't use it to share data across the threads, except maybe to implement the communication primitives that allow your threads to communicate. Keep in mind that if you find yourself needing to implement such communication primitives, you are probably doing something wrong. Find a library.

      Concurrency is easy

      Also, I have to take issue with this statement. Once you have become accustomed to thinking about concurrency then concurrency can be relatively easy. That first step, getting used to thinking about your software as a set of communicating processes, is hard. The CSP model is much easier to work with than the mutex/semaphore/critical section/etc. approach, but it's still perfectly possible to create livelocks, deadlocks and even race conditions. If your communicating processes have different execution or resource access priorities, then you can also create all of the problems associated with those, such as priority inversion.

      CSP is a big help, but it's no silver bullet. With discipline and a well-designed division of responsibilities into processes, concurrency can be manageable and even very pleasant (I really enjoy it), but that's not at all the same as saying that it's easy.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    2. Re:MOD PARENT UP by GileadGreene · · Score: 1

      CSP is a big help, but it's no silver bullet. With discipline and a well-designed division of responsibilities into processes, concurrency can be manageable and even very pleasant (I really enjoy it), but that's not at all the same as saying that it's easy.

      Amen to that. I really enjoy programming using CSP or Actor-style concurrency. Using those kinds of concurrency models is certainly far easier than programming using a shared-state thread model. But that isn't the same as being "easy" - you still need to think about the design of the system, and take care with the way processes interact. One of the more complex highly-concurrent systems that I've developed was an occam program with around 1,000+ interacting concurrent processes organized with a dynamically changing communications topology. It worked extremely well. Partly because the interactions were carefully designed, and in some cases modelled and verified (and fixed!) using CSP before I wrote a single line of occam.

    3. Re:MOD PARENT UP by Anonymous Coward · · Score: 0

      you are an idiot. if the tasks do not share memory, then they are already seperate tasks. you should learn the difference between parallel programming and multiprogramming.

  46. Translation: by acidrain69 · · Score: 0, Troll

    "I work for IBM, and we've been doing multicore (well, multi-processor) for years. Buy IBM software"

    --
    -- Having a Creationist Museum is like having an Atheist place of worship
    1. Re:Translation: by DuckDodgers · · Score: 1

      I can't speak for the other post-writer. I've been trying to learn functional for a while - but I've got school + 6 years of professional work with procedural under my belt, and I'm finding the transition difficult.

  47. How about the David Patterson perspective? by kscguru · · Score: 3, Interesting
    Instead of an IBM executive, how about David Patterson. Hint: he wrote The Book on computer architecture.

    Berkeley tech report (inc. Patterson as author)

    Brief summary (I heard the same talk when he spoke at PARC), computational problems are divisible into one of thirteen categories that range from matrix multiplication to finite state automata. Most existing research (academia and industry) into parallelism tends to focus on about seven of those categories that are most easily parallelized - think supercomputer cluster. Most apps that you or I use fall into the graph traversal or finite-state categories (think compilers, apps with an event loop, etc.), into which there is essentially no research. Patterson even suspects that finite state machines are inherently serial and CANNOT be parallelized.

    So ... the apps that we already use can't really get faster on parallel cores without major, fundamental advances in computer science that don't seem to be approaching. Which means we'll be using our current apps for a LONG time.

    Additional note: IBM (and other chip manufacturers) have a vested interest in telling everyone that parallelism is the future. They can't make faster chips anymore, they can only compete on sheer number of cores.

    --

    A witty [sig] proves nothing. --Voltaire

    1. Re:How about the David Patterson perspective? by fred+fleenblat · · Score: 1

      >> Patterson even suspects that finite state machines are inherently
      >> serial and CANNOT be parallelized.

      That's because each state of a DFA already represents a (possibly very large) set of states in an NFA. Exploding it back into an NFA would be an anti-optimization. Patterson did not touch on this subtlety.

      FA's derived from regex's go through this transform automatically (via grep or a parser generator for example). FA's from pretty flowcharts designed by humans are just the same level of monothink as anything else they do and probably belong in one of the other categories.

    2. Re:How about the David Patterson perspective? by rho180 · · Score: 1

      When I was doing my grad work in parallelizing compilers (over ten years ago), there was a general understanding amongst most researchers that the programs we were working on weren't of great interest to the general computing
      public. The point of focusing on these "easy" programs was that it made the problem somewhat tractable, i.e., let's first understand how to write a compiler that can generate parallel code given this relatively easy-to-analyze array-based code, and once we have a handle on that, we can move on to the programs that 90 percent of the world actually cares about. Given that researchers are still working on these "easy" programs, I guess the problem really is as difficult as we all thought.

      As for IBM and other chip-makers having a bias towards parallelism, I understand the skepticism, but multi-core processors weren't the only proposed solution to the question of "what the hell do we do with all these transistors now?". There was a ton of research in the 90s looking at this question as it became clear that wider and wider issue processors weren't buying us anything, and a lot of seemingly good ideas simply didn't pan out. Personally, I find it amusing that the SMT camp and the single chip multiprocessor camps seemed so diametrically opposed at the time, and yet a decade later, we've ended up with both of them happily coexisting on the same chip.

    3. Re:How about the David Patterson perspective? by feepness · · Score: 1

      Additional note: IBM (and other chip manufacturers) have a vested interest in telling everyone that parallelism is the future. They can't make faster chips anymore, they can only compete on sheer number of cores.

      It occurs to me that if that is true then they are probably right.

  48. Provong once again by geekoid · · Score: 1

    that main frames had the right idead 25+ years ago.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  49. Perl 6's chance?.. by Noiser · · Score: 2, Interesting

    Perl 6 (as it is designed) introduces a new concept of "junctions", which are a bit like arrays, but can be used in clever ways. One useful way is:

    if ($fruit == ("apple"|"orange"|"pear")) {
            print "sweet!";
    }

    But another intriguing way of using the junction will be parallel loops -

    for ("apple"|"orange"|"pear") {
            eat($_);
    } ... and instead of doing three consecutive eat's -

    eat("apple");
    eat("orange");
    eat("pear");

    the interpreter will run 3 threads, each with the eat() function.

    As the whole of Perl 6, this design is not finalized. Maybe it won't be like that at all. And of course threading is all non-safe and stuff.

    But having threads in a vanilla for loop, instead of setting up thread with clever functions, modules, etc. is something new. If it will happen and unsuspecting programmers will just use it, hey - that'd be something special.

    1. Re:Perl 6's chance?.. by maxwell+demon · · Score: 1

      But having threads in a vanilla for loop, instead of setting up thread with clever functions, modules, etc. is something new.
      Ever heared of OpenMP?
      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:Perl 6's chance?.. by TimToady · · Score: 1

      Perl 6 also provides implicit parallelism through hyperoperators (vector processing) and feeds (object pipes). Junctions are really for logic, so it's not guaranteed that all the threads run to completion. That's what hyperoperators are for. And feeds are aimed directly at using the Cell processor (and such) efficiently.

    3. Re:Perl 6's chance?.. by owlstead · · Score: 1

      "And of course threading is all non-safe and stuff."

      Yes, and running multiple threads for fine grained tasks might not be a good idea. Maybe it can put it into threads when it has run for some time and the VM sees that it might want to split the loop iterations in the future. Of course, it must be sure that it is thread-safe and that the performance won't go down. It could this by trial and error or by knowing the processing and communication speeds of the architecture. Having a multithreaded loop is nice, but it's a long way from solving the multi-threading problem in any significant way.

    4. Re:Perl 6's chance?.. by Noiser · · Score: 1

      Oh. I haven't got the whole grasp of the Perl 6 hyperoperators yet. I thought that they are syntax sugar for clever operations with multiple arrays, such as

      (1, 2, 3) >>+ (5, 7, 9)

      But in any case, it even strengthens my original claim: Perl 6 seems to be the first mainstream programming language design with implicit multi-threading in the core syntax and not an external module (like in Perl 5) or a standard library class (like in Java).

      (Of course, different people have different definitions of "mainstream".)

      If this design is implemented successfully, it might just happen that in the multi-core world Perl 6's pervasive multi-threading will outweigh its other performance problems and become Perl 6's killer app.

  50. Multiple Cores will lead to Neural Net Apps by Geeko+Roman · · Score: 2, Informative

    This comment does not exactly apply to the question put forth about performance of existing apps under multiple cores. However, I would like to bring up that, in my opinion, given my experience with artificial Neural networks and related work, that I expect, in some form or another, that it is likely that one could fairly easily argue:

    1) The number of cores is going to increase
    2) The current concept of an artificial Neuron having some sort of value, with weights attributed to it is too simple for how our human brains realy work, and therefore need more than a simple value and one algorithm, such that it will likely need to be replaced with a more complex model of values and algorithms, and the work on such that requires a mini-process or in this case "a core"

    I expect that given that there will be an increased amount of cores, probably with an increase similiar to hard disc, processor, or memory increases of the past (1 10MB hard disc increasing to 500GB today), that we will have thousands or even hundreds of thousands of cores.

    As we learn more about how the brain works I believe that 2) will be accepted as true at some point.

    So I expect that more and more new software will attempt to be more intuitive, as more and more people begin to agree that the software we have now in general is crap, in that it doesn't help the layman as much as it could do their jobs.

    This intuitiveness will likely be in the form of artificial Neural Nets, paving the way for computing systems to begin to act like the science fiction computer systems we think of in "the future".

    Just my two-cents guess...

    1. Re:Multiple Cores will lead to Neural Net Apps by tehdaemon · · Score: 1

      The current concept of an artificial Neuron having some sort of value, with weights attributed to it is too simple for how our human brains realy work,

      Could you back this up with some details? I have been looking for information about how an individual human neuron works for a while, and, while there are signifigant differences between real and simulated neurons, the value/weights thing does seem to be more or less correct.

      T

      --
      Laws are horrible moral guides, moral guides make even worse laws.
    2. Re:Multiple Cores will lead to Neural Net Apps by Geeko+Roman · · Score: 1

      T,

      I am not sure if you are asking for specific professional references or just more info.

      I run two companies, so I'm not sure I can find time to look up a bunch of work I have studied for years. I certainly have the literary resources, but finding an actual reference to theory may take a while. If you're simply looking for online references or books that describe natural and artificial neurons, I know plenty. Let me know what you're looking for.

      It's not so much that values/weights are an invalid way of generating a neural network. That's the basic for almost all nets I know of. There are two issues. The most straightforward issue is that these neurons generate a fire/don't fire result, which could be thought of as a 0 or 1 answer. Some studies have shown that the human brain doesn't really work this way. They certainly do fire, but not the brain is electo/chemical, and sometimes the chemicals between neurons change without an electrical firing. This is key. However, the issue could be simplified by saying that the results might be better with a -10VDC to 10VDC analogue value rather than a simply binary computer-related 0 or 1.

      The second issue is partially related - these computer-based neural nets fundamentally do not work the way our brains do, as they are purely electrical and not chemical - so the issue is that because they don't fundamentally work like a brain does, then in order to actually achieve conscieousness and real usefullness, maybe "thought", the way these neurons work needs to be more complex, thus my suggestion of a core attributed to one neuron. It may not need that much processing or it may need much more, and certainly I believe that under this model we're talking about millions or billions of "cores", but overall, for the sake of this conversation, I am simply saying that these are precursors to things that will indeed support more accurate representations of how the brain works. It's difficult to make Von-Neumann architecture machines (computers as we know them today) to do this effort.

      Hope that helps.

      Jeff

    3. Re:Multiple Cores will lead to Neural Net Apps by daran0815 · · Score: 1

      have been looking for information about how an individual human neuron works for a while Same here. Tricky topic. Complex with tons of subtle details and misrepresentations; rapidly advancing area.

      the value/weights thing does seem to be more or less correct Nope. Its describing one essential attribute but insufficient for brain style computation. The technical reasoning for it use is simplicity and the fire-rate analogy.

      In the brain all higher level functions are recurrent and can process multiple competing "ideas" concurrently. One essential capability is the detection of time concurrency (ie: inputs firing at the same time instance have a strongly different effect from inputs firing in an alternating fashion). The simplistic fire-rate models (the continuous valued output is interpreted as the rate or likelihood of firing) is incapable of modeling that.

      If you wana know more, read Rolls&Deco, 2002: Neuronal Neuroscience of Vision or simply google for "synchronous firing".
    4. Re:Multiple Cores will lead to Neural Net Apps by tehdaemon · · Score: 1

      I am aware that the continuous value output part is not correct, but all you really have to do do is send an actual 0 or 1 instead, right?

      The trouble of recurrent processes in artificial networks is mostly due to the lack of loops and feedback, (most simple ones have several layers where layer 1 outputs to layer 2 etc but never 2's output never loops back to layer 1's inputs...) This would be a flaw in topology, not values/weights. As far as I can tell anyway...

      T

      --
      Laws are horrible moral guides, moral guides make even worse laws.
    5. Re:Multiple Cores will lead to Neural Net Apps by tehdaemon · · Score: 1

      ...online references or books that describe natural and artificial neurons,...

      Would be very nice, it may take me too long to learn the jargon of professional references, this is a personal interest of mine. I have an engineering background, not biology.

      As for the pure electrical vs electro-mechanical differences, I do not see them as a big deal, because the electrical sides alone are totally different too. In the end you break the actual neuron's actions into cause/effect relationships and model those relationships. It is not like an artificial neuron in a computer 'fires' via opening and closing ion channels in a cell membrane anyway. Right?

      I think it is obvious that multiple cores will be useful in this kind of research/application though. If for no other reason than they are both parallel processes.

      T

      --
      Laws are horrible moral guides, moral guides make even worse laws.
    6. Re:Multiple Cores will lead to Neural Net Apps by daran0815 · · Score: 1

      but all you really have to do do is send an actual 0 or 1 instead, right? Using 0/1 outputs for meaningful nets requires using a pulsed network. So instead of a single state (0/1) you'll work with trains of such values per neuron.

      The trouble of recurrent processes in artificial networks is mostly due to the lack of loops and feedback Jup. Recurrent & continuously adapting & pulsed networks are turing capable. Imagine the capabilities:-)

      This would be a flaw in topology Using a computer system with no loops or decisions would be quite boring, don't you think? Same with those nets. The pulsed feedback enables:

      - associating independent concurrent ideas (synchrony)
      - conveying relevance (structural feedback)
      - keeping state (local recurrent feedback)
      - competition among ideas (local inhibition)
      - shifting attention (large scale enhancement)
      etc

      Among other things such a networks can find mappings from the input that are abstracting to a stable & relevant representation, as needed for the next layer. They can also make decisions, attract attention, etc.

      It's fairly hard to program & analyze these beasts though. Almost as difficult as understanding the real brain.
    7. Re:Multiple Cores will lead to Neural Net Apps by Geeko+Roman · · Score: 1

      ...online references or books that describe natural and artificial neurons,...

      This is a good start for an online reference:
      http://www.ai-junkie.com/ann/evolved/nnt2.html

      Would be very nice, it may take me too long to learn the jargon of professional references, this is a personal interest of mine. I have an engineering background, not biology.

      My background is engineering too - circuit design, programming, etc. I picked up the knowledge of biological neural nets from my interest in artificial ones.

      As for the pure electrical vs electro-mechanical differences, I do not see them as a big deal, because the electrical sides alone are totally different too. In the end you break the actual neuron's actions into cause/effect relationships and model those relationships. It is not like an artificial neuron in a computer 'fires' via opening and closing ion channels in a cell membrane anyway. Right?

      It is correct that artificial neurons in a computer are simply arriving at values, not even firing at all, let alone in a cell membrane. It's also true that you're tring to model the neuron's actions from cause/effect. Here's the rub - today's artificial neural nets are in their infancy, and really aren't that great at mimicking what the brain does. That's my point. Today, artificial neural nets have to be trained first to do any sort of recognition job (there are a few self-learning nets, but I won't get into that, and those have very specialized purposes), and one neural net that recognizes faces in a crowd would be terrible at recognizing items on a table. The brain is able to recognize all sorts of things and how to process them, and it's learning mode is ongoing. Scientists today have no idea how to model this behavior. A real neuron does not just come up with a fire/no fire rule with an output of 1 based solely on weighted inputs. A real neuron fires with varing amounts of electrical current, and also, the chemical receptors in the neuron can change whether or not it fires at all! The chemical side of things has not been modeled at all.

      So I expect that as we learn how to make neural nets more like how our actual brain works, including things like variable voltage firing, and modeling what affect the chemical swirl in the brain actually does to the net itself, we'll find the model becomes more complex and requires the artificial neuron itself to require more computing power. Hence my suggestion that possibly a computer core might be allocated to a single artificial neuron.

      I think it is obvious that multiple cores will be useful in this kind of research/application though. If for no other reason than they are both parallel processes.

      I guess we'll find out. Ever consider what a parallel process in your own body might be? Here's a fun one that most people can relate to - Have you ever had the experience of someone behind you saying something you couldn't quite hear so you said "What?" and then a moment later you knew what they said and you say to yourself, "Why did I just say 'What?'? I know what they said!". Here's why that happens. When your ears hear that somone said something, two parallel processes start at the same time. The first of these is a quick and dirty "phrase matching" process that simply says "What phrase did that person just say? Do I recognize that whole thing?" This process takes a short amount of time because it's trying to match a huge phrase, and if the sounds uttered were not that discernable (noisy or low), this process returns "Nope, no idea what the person said", causing you to say "What?". But the other process, that was started at the same time as the first process, hasn't finished yet. This process is slow and methodical. It takes each sound and slowly compares them to other sounds you've heard and slowly pieces together the puzzle of what each word you heard was". This takes a while, certainly longer than the first

  51. Reliable programs by pfurnanz · · Score: 1

    The main issue with threaded programming is creating reliable programs. With multiple cores, you get a much higher level of parallelism than we have seen before.

    There is a great (though depressing) paper that discusses the challenges:

    http://www.ddj.com/dept/64bit/196901362?cid=RSSfee d_DDJ_All -- a very brief summary/review
    http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EE CS-2006-1.pdf -- full paper

  52. i wouldn't say by Pollardito · · Score: 1

    splitting a task in a way that works well in parallel is a problem whether you're using threads or concurrency though, so i wouldn't say either method is particularly easy for someone who has a background in designing more linear solutions

  53. Java does threading probably easiest of all by a1mint · · Score: 1

    Java's threading is practically 1:1 to the OS. It's incredibly easy to use.
    new Thread() { public void run() { go nuts } }.start().

    1. Re:Java does threading probably easiest of all by Pxtl · · Score: 2, Insightful

      And Forth's manual stack-loading is practically 1:1 to the underlying OS too, why don't you use that? Garbage collection has nothing to do with the underlying OS, but we keep it around.

      Mapping 1:1 to the underlying OS is not the be-all and end-all of linguistic constructs. Consider Actors model languages, or dataflow-model languages - or the native rendezvous concepts from Ada. Im not saying that any of these are ideal approaches (I hate Ada, for example) - Im just saying that Algol-descended languages were designed to model procedure and formulas... so modelling concurrency doesnt come naturally to them.

    2. Re:Java does threading probably easiest of all by EsbenMoseHansen · · Score: 1

      I really don't think starting a thread is hard in any reasonably modern language, essentially boiling down to creating a Thread object, and then starting it (like your example). The hard part is managing access to shared resources, which is a pain in the butt, rife with possibilities for race conditions. Sort of like doing stringhandling in C, but without critical errors and security breaches being so easy to spot and fix :) Java provides some nice tools to do the locking and so forth, but the entire burdening of finding out what to lock and what not is left up to the programmer. That Java does not have a const qualifier makes it a bit more fun than it might have been...

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
  54. Maybe, try another OS... by lpointal · · Score: 1

    ...built from ground with multiprocessors in mind, like... BeOS.

    For those which have not tested it, it was really reactive, more reactive on my old PPC604 PowerMac-7300 than current OSes are on recent hyper-powerful hardware with mountain of memory.

    So, maybe its a known design problem for OS designers, and at least partially resolved.

    Note: I dont talk about thouthands of core, for me they are still for number crunching, video production... For normal use, a reactive OS like was BeOS, even on a single core chip, is more efficient in my daily task than recent OSes with too many layers and software history support [I use Linux at home, WinXP at work].

    --
    L.Pointal
  55. The purpose of hardware? by natoochtoniket · · Score: 1

    Hardware has two purposes:

    To the hardware vendors, the purpose of hardware is only to generate revenue. They will say or do just about anything to try to convince the rest of us to buy their product.

    To most companies, and most individuals, the purpose of hardware is to run the software. Nobody uses a raw computer. You use a word processor, or a spreadsheet, or a database, or some other application program. The hardware is just there to run the applications.

    I don't need a gazillion-gigahertz kilo-processor box on my desk. My company might need it in specialized units to run specific business or scientific applications. (It might even let us use fewer boxes to run the highly threaded apps that have been the norm in my business for the last 20+ years.)

  56. haahaahaa by Anonymous Coward · · Score: 0

    You lost me at 'IBM Architect' :-)))

    an IBM anonymous coward

  57. The RFP must have been interesting. by Kadin2048 · · Score: 1

    I guess the competition is working on a Coyote project?

    I think the Acme Corporation got prime on that contract. Their past performance was a bit sketchy, but they were the low bid...

    --
    "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
  58. I have a question by Anonymous Coward · · Score: 0

    I have a question.

    Instead of, say, using a dual core proccessor computer, why not use a single core proccessor computer with the double speed CPU? Is it because the cost will be way higher for the double speed CPU than for the dual CPUs?

    Thanks.

    1. Re:I have a question by mr_mischief · · Score: 1

      At some point we can't make the cores any faster. This has to do with roadblocks both in the current state of technology (meaning it can't be done now) and in the limits of physics (meaning that at some point it would take a major breakthrough in raw scientific understanding to make any progress at all).

      If you need ten very different things in a particular order and the way each one of them is constructed depends on the result of the one before it, then it's possible that you'd be best served by one processor that's ten times as fast, but that's getting progressively harder and more expensive to do.

      If you need one hundred very similar small things right now, you'd be best served by something which can deliver high volumes of the stuff. This is the kind of thing the Cell is very good at.

      If you need ten different sorts of large things that may have things about them them overlap in time because the state of one doesn't necessarily depend on the state of the others, you'd be best served by ten processors each working on a partial solution the whole time, and the final piece being tied together at the end. This is the sort of thing multi-core general processors are getting better at.

      One issue many people in this thread are addressing is the difference between the second and third options. Another is how to best achieve the third one, since it is not always easy to figure out which parts of which tasks are going to be independent enough to be calculated separately nor easy to tell the computer the difference once the programmer knows.

      Multi-core is the only sure way to get much additional performance for the near future. Breakthroughs are wonderful and maybe even worth a wager. They're definitely not the norm, though, and therefore cannot be counted upon as a strategy. Optical computing or quantum computing may end up being widespread in a few years, and taking stock in someone working on them may pay off big. People who work in the field, though, have to hedge that bet.

    2. Re:I have a question by Anonymous Coward · · Score: 0

      Ok, thanks!

  59. IBM's Chief Architect? by LauraW · · Score: 1

    Um, editors? She "is chief architect for next-generation systems software at IBM Systems Group's Quasar Design Center". (FTFA) She's not "IBM's Chief Architect". I don't think IBM even has a Chief Architect.

    1. Re:IBM's Chief Architect? by octaene · · Score: 1

      Exactly. Anybody at IBM who claims to be `Chief Architect` needs to architect himself/herself a clue. FYI, there are 5 levels of management between Catherine Crawford and the CEO. She does not speak for IBM.

  60. commodityware by bobs666 · · Score: 1

    The problem the layman has with understanding computers
    is the language. We need more words to describe software.
    In this case Source code would better take advantage of
    a new architecture. The problem is the old "commodity ware"
    that so many people run on PC's. Contrast that with the portability
    of UNIX. A operating system that has been ported to (for me) countless
    hardware architectures. The advantage UNIX has is its portability is based on
    Source code. Not a binaries compiled for a single thread Intel architecture.

    The issue is not that software will not run well on many cores.
    It the old binaries will not run.

    Many new software architectures(eg. java?, smalltalk?, perl6? )
    Could/should run on many core with out programmers doing any thing special.

  61. Umm... it exists already... by sjanes71 · · Score: 1

    http://en.wikipedia.org/wiki/MapReduce provides a nice model of parallel computation to be exploited: in a multicore chip, you can treat each core as a node with a very reliable network and fast I/O.

    Don't like MapReduce and want something more... heterogenous... you could use PVM: http://www.csm.ornl.gov/pvm/ ; which later became MPI: http://www.hlrs.de/organization/par/services/model s/mpi/ or a nice collection of learning materials at: http://www.hlrs.de/organization/par/par_prog_ws/ .

    Want something from Sun? OpenMP: http://developers.sun.com/sunstudio/articles/openm p/openmp_content.html

    I think that we have the software to do it, already, yes.

  62. OpenMP by Noiser · · Score: 1

    No, but thanks for the link. I'm pretty out of the C world since about 1998 - i code almost exclusively in Perl (5), which explains my Perl bias.

    OpenMP seems nice, but the charm with the Perl 6 junctions idea (if and when it is implemented; i haven't tried the latest Pugs build yet), is that the programmer doesn't even know that he's writing multi-threaded code. And that's something.

  63. Accelerate library by tfinniga · · Score: 1

    So, I wrote a little app that uses the Accelerate library on OSX. Basically, I use it for running convolutions on images that are coming from a webcam - blur, laplacian, etc.

    The task itself is highly parallelizable, so the library actually does create multiple threads and use image tiling to get me better performance when multiple cores are available. On machines where there's just one core, it doesn't using threading. However, they join all the threads before returning from the API call, so my program works identically either way.

    Also, I wrote the app on a PPC, but it still ran very nicely on Intel machines through Rosetta, because it was just a call to the underlying library.

    --
    Powered by Web3.5 RC 2
  64. only useful for servers? by Grinin · · Score: 1

    I see some major problems with multi-core processors for home users who only really use their computers for internet browsing, email, and standard productivity. They basically don't need it. Unless they're playing intense games (which would have to be programmed to use multi-cores) or video editing, or software development... I just don't see it being as usual as everyone hoped... especially if the software itself is still only utilizing one core, or one thread at a time.

    In the business world, I see people moving towards blade servers and dumb terminals, and so truly, the servers are the only ones who really need the multiple cores. Yet again though, the software needs to be written to make use of multi-threading and multiple cores.

    1. Re:only useful for servers? by maxwell+demon · · Score: 1

      I see some major problems with multi-core processors for home users who only really use their computers for internet browsing, email, and standard productivity. They basically don't need it.
      You mean, just like they don't need processors with several GHz? Or hard disks with several hundred GBytes?
      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:only useful for servers? by Grinin · · Score: 1

      No. I just think that the common user is usually sold something thats "newer" "faster" "better in every which way" when truly they will never put those new features, extra capacity to use.

      Putting to use additional hard drive capacity does not requite too much extra programming. A program uses what it needs and that that. A user can fill a hard drive with MP3s if they so choose. Similarly, faster processors are capable of faster computations without having to rewrite code... The difference however is that most end-user software isn't programmed to use multi-core or multi-thread capabilities. Thus, its the old chicken and the egg story. Do I think multi-core computing is great forward progress, definitely. Do I think most home user software is putting it to use? I don't think they are. Ultimately it is up to software programmers and engineers to put these new technologies to use, and then the home user will be able to see its full potential, if they notice it at all.

      Ultimately the goal of processors is to try and simulate the human mind as best as it can, and thus, until we will strive until processors are running on membrane or tissue that is nearly infinite in the number of cores and connections that can be made and calculations processed. That right there would be a giant leap in computing... As for Intel simply gluing two dual core's together and calling it a quad? Come on... these aren't lego's... do something to impress us.

    3. Re:only useful for servers? by owlstead · · Score: 1

      Well, while downloading and parring/unrarring, it is very nice to still be able to view a movie you just downloaded. This is very basic stuff that millions of users out there are doing. Don't forget that things like bit torrent are pretty easy to make multithreaded. I would be *very* surprised if Azureus is only running a single thread. Of course the OS and apps should also be able to support multi-threading in a meaningfull way, and random access disk IO should be maximized as well (flash drives?). Currently it's as good as impossible to view a movie if both cores are busy or if *any* disk I/O is taking place (hint, use multiple disks). It's a bit like security; the system is only as strong as its weakest component.

    4. Re:only useful for servers? by Grinin · · Score: 1

      I can definitely see you point, and couldn't agree with you more. I'm all for software programmers make proper use of multi-core and multi-threaded capabilities. I just don't see it is often as I'd like.

    5. Re:only useful for servers? by maxwell+demon · · Score: 1

      What was the time between the release of the 80286 and user software making use of the protected mode features? What was the time between the release of the 80386 and the time user software made use of 32 bit addressing? How many user programs already run in 64 bit mode right now?

      Note that not everyone buys a new computer every one or two years. Especially since todays computers are generally powerful enough for most normal user's need. So when buying a computer today, it's probably a good idea to think about what sort of software will run on it in three or four years.

      --
      The Tao of math: The numbers you can count are not the real numbers.
  65. Re:To sum up by bennini · · Score: 1

    This makes IBM's product unattractive to many potential customers.
    IBM is therefore also investing in people to go around telling prospective buyers that sure, if the developers just build 'multicore aware' programs, then multicore will help them a whole lot, yes sirree. And sure, there's an element of truth in that in most scenarios.
    to put it bluntly, you have no clue what ur talking about. Essentially every product in IBMs portfolio excels on multi-proc systems.

    Any server side app running in a remotely decent jee Application server with Stateless beans for example will scale unbelievable well onto multi-proc systems.
    any application with a handler thread per incoming connection request will benefit from multi-proc systems.
     
    the beauty of things like jee application servers is that developers design applications as if everything was single threaded, then u flick a couple switches and all of a sudden ur app is replicated and running on a cluster of 100 machines....now consolidate that into one machine with 100 procs and ull see even more performance enhancements.
    DB2 is another example of an app that scales amazingly on multi-proc machines.

    designing multi-threaded applications really isnt as hard as most people make it out to be. everything in the real world is "multi-threaded". when u move ur left arm up, u can move ur right arm down. if u have a robot with 4 cores....spawn 4 threads, one for each limb....if u need to multiply 4 matrices....spawn 2 threads....each thread multiplies two matrices....join the threads.....then multiply the results. u just need to get creative in order to start takign advantage of multi-proc machines.

    and when i think about it...i dont think theres a single app i could name that uses only one thread.
  66. Can we use MPI http://www-unix.mcs.anl.gov/mpi/ on these new multicore processor architectures?

  67. The End of Context Switching by Nom+du+Keyboard · · Score: 1

    Finally, the end of painful Context Switching in multi-threaded environments. I can hardly wait!

    --
    "It's the height of ridiculousness to say for those 9 lines you get hundreds of millions."
  68. TNBHA - See It Discussed Here First by Nom+du+Keyboard · · Score: 1
    Okay, this just means we're ready for TNBHA (The Next Big Hardware Advance).

    When we went to Instruction Parallelism, first in mainframes such as the IBM 360/91 and 195, and later in microprocessors such as the Intel Pentium, the programmer didn't have to hand-code the parallel instructions. Yes you could hand-tune code to better run down the I & J pipes together in the Pentium, and compilers could and did optimize for it. But the hardware itself took the instruction stream as given to it, and dispatched a second instruction in parallel each time it determined that the second instruction met the criteria to run in parallel. Everything that's followed is simple refinement of this principal.

    Transmeta did the same thing with instruction sets, translating them on the fly to match the underlying hardware in a special Code Morphing[tm] approach.

    The next challenge for hardware is for the hardware itself to assign tasks to processing cores automatically. Look for context switches and instead pass them along to available processing resources. Do it once in the hardware, and all the software to follow will benefit from it.

    I'm waiting...

    --
    "It's the height of ridiculousness to say for those 9 lines you get hundreds of millions."
  69. Purely Functional Programming... by Tracy+Reed · · Score: 2, Insightful

    ...is the only way we are going to take advantage of multi-core cpu's and continue to improve our software. Only through purely functional code can you make guarantees about what can be executed simultaneously and let the machine sort it all out. I'm learning Haskell for this very reason.

    1. Re:Purely Functional Programming... by Anonymous+Brave+Guy · · Score: 2, Interesting

      I commend you for broadening your programming horizons by learning Haskell. I also caution against drinking the kool-aid too much. A lot of the support for Haskell is in the academic community, and their priorities are very different to those of industrial software developers.

      When you start to combine Haskell with real world problems, a lot of that natural elegance starts to look very artificial. Then you introduce concepts that mimic imperative programming with shared state (albeit based on more mathematically rigorous underlying models) to overcome that. At that point, you're in the same bind as many of the newer languages today that are basically imperative in nature but starting to borrow from functional programming: you can do lots of the neat tricks, but when you dig deeper the expressive power isn't as much as you hoped.

      In other words, purely functional programming is very limited until you build in support for real world issues like I/O using monads or whatever. Once you do that, you're not really working with purely functional code (in the sense of having no side-effects) anymore, but rather with code that represents and reasons with side-effects explicitly. Whether the best way to write such code is in a declarative, functional style, or an imperative one, or something else, is a question yet to be answered, because right now only the functional programming language community is making a serious effort to do it.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:Purely Functional Programming... by Tracy+Reed · · Score: 2, Informative

      A lot of the support for Haskell *used* to be in Academia. But #haskell is full of people using it for every day real-world purposes it seems. I was especially impressed after talking to Cliff Beshers of Linspire who are doing all of their distro-specific coding such as the installer etc. in Haskell. I have now seen IRC bots in haskell, web servers and web application servers in haskell, and video games in haskell. Heck, the only existing implementation of Perl 6 is written in Haskell. It seems like it has escaped Academia and has been looking for a problem to solve for a few years now. And it looks like this multi-core business may well be it. Especially since haskell has a parallelizing compiler.

    3. Re:Purely Functional Programming... by Anonymous+Brave+Guy · · Score: 1

      All of what you say is true, as far as I know, but please pause and consider what you're saying.

      For example, I assume you've read the paper about the development of Frag. Most of the advantages of using Haskell come from things like using a DSL to define the game behaviour concisely, the elegant type system, the ability to use higher-order functions in connection with the above, and the fact that the HOpenGL binding is available. The abstraction of the event loop is quite neat, but there are plenty of references to things like I/O, state, do notation, and the like, and there is no serious attempt to compare performance with the equivalent game written in a more traditional language like C. In other words, the advantages of using Haskell did not stem primarily from adopting a purely functional style, and one of the major potential weaknesses of using functional programming languages for industrial applications -- performance -- was not addressed.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    4. Re:Purely Functional Programming... by GileadGreene · · Score: 1

      Purely Functional Programming...is the only way we are going to take advantage of multi-core cpu's and continue to improve our software.

      Er... not really. The occam was very successfully doing the multicore thing 20 years ago, when multi-processor systems were last seen as "the next big thing". And occam is quite definitely imperative. There're also several modern languages that are being successfully used in the concurrent space which are not really purely functional too: Oz and E spring to mind. Purely functional programming is certainly a good answer, but it's hardly the only answer. While it may be a good idea to "let the machine sort it out" for some applications, in others it makes much more sense to write the code itself in an explicitly concurrent fashion because the resulting program is easier to understand that way.

  70. Amdahl's law by hoegh · · Score: 2, Informative

    Some tasks can't be done in parallel and this is the Achilles heel of massive parallel architectures. See for instance http://en.wikipedia.org/wiki/Amdahl's_law. No parallel hardware and no parallel algoritms - no matter how clever - will help you, if you have a task of sequential nature (and even only help you somewhat no matter how massively parallel it is, if your task is partly sequential).

    If one truckdriver can drive a truck 50 miles in one hour, how far can two drivers then drive the truck in the same amount of time?

  71. Digimation by SoVeryTired · · Score: 1

    From TFA: "Digital animation. Massive supercomputing power will let movie makers create characters and scenarios so realistic that the line will be blurred between animated and live-action movies."

    Didn't they already do that with Jar-jar?

    --
    Slashdot: news for Apple. Stuff that Apple.
  72. OS on another thread by Ungrounded+Lightning · · Score: 1

    But software bloat increases faster than single-thread performance, thus making software run slower.

    But if your application can run in its own thread the ongoing software bloat of the underlying OS won't affect its internal performance. (And the OS vendor may bloat it, but count on him to use enough multithreading to keep it out from underfoot - even if it chews up most of the processors in the multicore cluster.)

    As long as you or your software vendor doesn't add inline bloating with the upgrades the application's performance will track that of the individual processors in the cluster - which will continue improving, though more gradually.

    (If your vendor can't keep his engineers' hands off the critical code's performance his product is toast. Start looking for a replacement.)

    --
    Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
    1. Re:OS on another thread by Wesley+Felter · · Score: 1

      I am assuming that the bloat will mostly be in applications (or user-level frameworks, which amounts to the same thing), not in OS kernels. My impression is that OSes are actually getting more efficient over the years.

      OTOH, maybe bloat will not increase as quickly if it actually has a cost.

  73. Seems like supercomputing is one-off, no? by gelfling · · Score: 1

    Article seems to be specifically addressing supercomputer type parallel applications used in narrow industry niches. Not much new there unless you're the guy writing compilers for nuclear weapons simulations. Clearly general purpose business computing is not going to be rendered any more obsolete than the MVS based apps you have running on your Z/OS mainframes today. And clearly, customers are not going to junk big multiCPU PowerPC based AIX systems so quickly. Hell We BARELY have our Databases running right today. You think we're going to tear them down? Nope.

    But in terms of special vertical systems, hell yes they're always looking for cheaper faster ways to run them. Anytime you can remove hardware and make it cheaper, faster, cooler and more reliable is a plus. Is a Quad-core CPU roughly equal to a pair of dual processor single cores running in a cluster? I hope so. and now I can remove a lot of network complexity. Problem is rewring that special application to do that.

  74. multithreading vs. multiprocessing by Lodragandraoidh · · Score: 1

    The new multicore systems are good for everyone - regardless of whether your application can take advantage of multiple cores or not. The new technology is certainly no reason to throw away existing code or skills.

    You can run multiple processes (applications) on different processors - and I know for a fact that this is how Sun multiprocessor systems operate. For example, if you are using a Sun 420 (4 processors) - it can run 4 applications at 100% CPU utilization - which means you can get 4 times the work done that an equivalent single processor machine would normally be able to accomplish (+/- overhead for shared memory management). The operating system handles this, and schedules which processes get the various CPUs. I would imagine this is how Linux support also works (but don't quote me because I don't know for sure - someone in the audience can pipe in here).

    So, there is no downside, as far as I am concerned. For your average end user of a home (laptop) system, having a dual core 64 bit system will allow him to run his favorite game on one processor, and TeamSpeak voice comms on the other - spreading out the work between the two processors for more efficient overall experience on the machine. For business users, having multicore machines is already making their operations more efficient, even without special software to make one application take advantage of multiple processors.

    Eventually someone will build a module to allow developers to more easily generate applications that take advantage of the new capabilities on multiprocessor systems. There are only two arenas where I see this worth the effort: Video Gaming/Rendering (rendering and network bottlenecks abound - hence moves to offload CPU intensive algorithms to the video card to get every ounce of performance), and Super Computing/AI (where aggrigation and analysis of large datasets is costly); everything else I can think of will work fine without the need to split the threads of execution between processors.

    Just because you can do a thing doesn't mean you should rush out and do it.

    --

    Lodragan Draoidh
    The more you explain it, the more I don't understand it. - Mark Twain
  75. Huhu, whoops. by stonecypher · · Score: 1

    Funny how Erlang programmers are chuckling to themselves right now, isn't it?

    Maybe IBM's chief software architect should look into parallelised languages before she declares parallelized architectures to be a roadblock. (And, before you chumps start booing and hissing from the bleachers about she's the chief software architect at one of the world's largest technical firms, well, let's just remember there's about a 1/8 chance globally that your phone call home to ask for money from Mom is running over Erlang.)

    --
    StoneCypher is Full of BS
  76. Parallelism, concurrency, implicit, explicit... by Anonymous+Brave+Guy · · Score: 1

    I'm anchoring on your post because you've hinted at what I think this whole discussion is missing: there are several reasons to run more than one sequence of instructions simultaneously, and some of the problems are much easier than others.

    For one thing, there is a huge difference between dividing a task into independent parts that can run in parallel, possibly combining the results afterwards, and running multiple concurrent, interacting threads. There is also a huge difference between explicit parallelism (a request comes into the server, and it fires off another thread to handle it) and implicit parallelism (I've got this expensive mathematical algorithm represented sequentially, and the compiler is going to spot opportunities to run parts of it in parallel and then combine the results).

    Of these, explicit parallelism is easy, but both implicit parallelism and explicit concurrency are hard. (Implicit concurrency doesn't really make sense with these definitions.)

    You described pure functional languages as "ideally suited for parallel processing". In a sense, yes, because of their underlying model they lend themselves to parallel processing. However, explicit parallelism is easy anyway, and sadly current research suggests that the scope for implicit parallelisation of algorithms is relatively limited in many applications. I'm not sure the big advantages coming from the functional programming world are because of this, though of course if someone does find a way to cost-effectively run algorithms in parallel for relatively short computations that might all change.

    What is really interesting to me in the functional programming world isn't the "pure" concept of having no side effects, but rather the type systems that represent side effects explicitly, of which perhaps the best-known example is the monadic I/O concept in Haskell. See Simon Peyton-Jones's excellent paper Tackling the Awkward Squad for background on this and related areas.

    My personal take is that this is too cumbersome to use in everyday programming as it currently stands. Indeed, the same view was expressed by several senior Microsoft programming language architects in a recent interview. IIRC, they gave the example that if you wanted expr1+expr2 for non-trivial expressions, you shouldn't always have to compute expr1 and expr2 and then combine the results in an explicit order just to satisfy the language's composition rules.

    However, the principle of tracking side-effects and ordering them explicitly when it matters seems very sound. Ultimately, anything your program does matters only to the extent that it influences observable side-effects, and any internal computations can be arbitrarily reordered and parallelised as long as the side effects still come out the same.

    From here, we can make the big jump to concepts like transactional memory, where related side effects that affect shared memory areas are grouped into database-style transactions, and the run-time framework ensures that either all related side-effects take effect together, or none do at all, as observed from any other thread that shares the memory space. I'm not really doing the concept justice with this summary: it is a vastly better approach to shared state than the classical thread-locking mechanisms, in expressive power, in safety, and in composability. The name of Simon Peyton-Jones appears often in the literature here as well, and I thoroughly recommend the work he and his colleagues have been doing to anyone who's interested in how we might deal with today's concurrency problems when our programming tools have grown up.

    Similarly, you can start thinking of concurrent threads as sequences of actions whose side-effects may be arbitrarily ordered by default, and inter-thread communication as a mechanism to impose ordering where it is required.

    The sorts of prototype implementations flying

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  77. No, that's not what the article says by Anonymous Coward · · Score: 0

    "In an InformationWeek article entitled 'Where's the Software to Catch Up to Multicore Computing?' the Chief Architect at IBM gives some fairly compelling reasons why your favorite software will soon be rendered deadly slow because of new hardware architectures."

    If the article says that, then how come Opera can't find the words "slow" or "deadly", much less "deadly slow" on that page?

  78. Translation: by Anonymous Coward · · Score: 0

    "I don't know how to program in a functional language, I don't want to learn to program in a functional language, and I'll do my damndest best to make sure nobody starts using functional languages, even if it would be for the best."

  79. Doctor by Anonymous Coward · · Score: 0

    Only physicians with a doctorate (e.g. a PhD or MD) should be called doctors. This applies to any other profession. No difference.

  80. um ... by Anonymous Coward · · Score: 0

    they are called threads ...

  81. procedural language with nifty multitasking by krischik · · Score: 1

    The real problem is that procedural languages are ugly for working in on this stuff. Not true, there is a procedural language with nifty, elegant multitasking around for over 20 years:

    http://en.wikibooks.org/wiki/Ada_Programming/Taski ng

    Martin
  82. No, Ada does! by krischik · · Score: 1

    In Java threading is a library feature controlled by the Thread class, in Ada threading is a first class language feature:

    http://en.wikibooks.org/wiki/Ada_Programming/Taski ng

    But more importantly: Ada uses rendezvous instead of semaphores which are a lot easier to handle and more elegant to look at.

    Martin

  83. We don't need a new language! by krischik · · Score: 1

    I know I repeat myself:

    http://en.wikibooks.org/wiki/Ada_Programming/Taski ng

    Programming languages with build in multitasking have been around for a long time. They just haven't made it into the "top ten". Mind you: Ada has a firm place in the top twenty ;-).

    Martin

  84. Old DOS programs? by splutty · · Score: 1

    but it's not going to suddenly come to a screeching halt any more than my DOS programs from 15 years ago are.
    Sorry. I can't resist, you'll actually notice that your DOS programs will run at screaming speeds :) Playing some old DOS games is... Interesting... ;)

    Where the HELL did that mountain come from???
    --
    Coz eternity my friend, is a long *ing time.
  85. The physicist, the engineer, & the mathematici by argent · · Score: 1

    An engineer, a chemist and a mathematician are staying in three adjoining cabins at an old motel. First the engineer's coffee maker sets fire. He smells the smoke, wakes up, unplugs the coffe maker, throws it out the window, and goes back to sleep. Later that night, the chemist smells smoke too. He wakes up and sees that a cigarette butt has set the trash can on fire. He says to himself, "Hmm, How does one put out a fire? One can reduce the temperature of the fuel below the flash point, isolate the burning material from oxygen, or both. This could be accomplished by applying water." So he picks up the trash can, puts it in the shower stall, turns on the water, and when the fire is out, goes back to sleep. The mathematician of course has been watching all this out the window. So later, when he finds that his pipe ashes have set the bedsheet on fire, he is not in the least taken aback. He says: "Aha! A solution exists!" and goes back to sleep.

    The existence of a solution doesn't mean the problem doesn't exist, and doesn't mean the problem isn't hard. The reason there are lots of tools to manage concurrency is not because concurrency is easy, it's because concurrency is hard. And so is getting people to use the tools. If it wasn't, we'd all be using Smalltalk or Lisp - derived languages, rather than a dozen languages modelled on 'C'. :)

    Going back to my example of the Amiga, protected memory (as anther poster has pointed out) is a tool that Commodore could have used to manage concurrency better in AmigaDOS. It was a well-known tool, but Commodore was unwilling to accept the additional cost of upgrading from the 68000 to the 68010 (used, for example, in the contemporary AT&T 3b1) and the accompanying performance impact.

    Existing software is another complication that will lead to fine-grained concurrency having a bigger impact than it perhaps should. Again, the Amiga is a great example: Commodore did provide a hook to allow applications to live in protected memory and only use shared memory for access to shared resources (memory allocated without MEMF_PUBLIC set was intended for protected memory in later models), but unfortunately too many programmers left that flag off in allocating structures that had to be shared, or allocated them on the stack, so implementing PRIVATE memory would have broken too much software for them to follow through.

  86. I can't believe no one made this joke yet by Sloppy · · Score: 1

    your favorite software will soon be rendered deadly slow
    No problem. Just render some of the software's pixels on one core, some on another...
    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  87. J2XS SUMMARY OF 300+ COMMENTS (flame away) by j2xs · · Score: 1

    This was a good focus group (oh, you didn't realize?) on the state of software as it relates to multicore architectures. I'm going to try and summarize what has got to be apparent to most people reading all these threads.

    a) Education in software development community must continue. Witness Intel's unprecedented outreach to global universities upon the launch of what I call "the multicore arms race" last year. Whether you are in the "j2xs is stupid" camp or the "j2xs is a crazy alarmist, but has a point" camp -- you can't deny the total disarray of responses. Guess what Mr(s) CIO, these are the people coding the software running your business. Take note here and tell me there is no way icebergs can bring down Titanic (good movie... I cried...). Look here and tell me the dot-net hockey stick growth curve will never end (uh...oops) -- meaning 'the one with the loudest mouth is NOT right... (s)he is just loud, man.'

    b) I was not commenting on the 3% of developers that make up concurrency, grid computing, gaming (hard stuff!), most infrastructure ISV's (can invest in PhD's), etc... I was commenting on the 98% of the rest of us who code business software in Global 2000 organizations. I was commenting on the 200,000,000 lines of COBOL (that I helped write while with Accenture) powering corporations that doesn't have a single hint of parallelism in it. Last 5 years of Perl code? Nope, no parallelism. Last 5 years of Python? Nope, no parallelism. A significant portion of consultants on large projects in the 90's were actually MBA's who learned to program 3 months prior... wonder if that's still the case? Wonder if 98% of consultants have cracked the book on concurrent programming, OpenMP, MPI or Haskell yet?

    Fully agree the J2EE, ESB camps are more or less immune due to bean pooling and threading support; however, each EJB cannot run parallel code (container won't allow) and there are many 20 second bean executions out there that could run in 8 seconds. Ever run Foo.Sort()? Not parallel; should be. Most likely an edge case?

    c) Yes, if each core in each CPU continues to double in clock-speed every year, then this post will go down in the history books as truly "from da-end-of-da-world desk". But it's not me saying that clock speeds likely won't double every year (until breakthrough in physics occurs), it's the chip vendors themselves.

    d) Yes, if your server has 40 running processes after boot up, then your apps will _seem_ to speed up because they have their own little "core kingdom" to use. My point wasn't 2007 ...it was 2010 when you have 64+ cores and the clock speed is still not increasing. 128+ cores and still no clock speed increase. Hmmm... those non-OLTP business apps don't _seem_ to be speeding up anymore do they? Yet you are paying through the nose for new processor technology. Your CFO will be asking about Return on Assets (ROA) soon...

    In closing, I would like to address the small fraction of you that couldn't find "deadly slow" in the IBM article. I had put "(my words)" in my post to slashdot ... for some reason that phrase went MIA when the post hit the air. The title, in retrospect, should have included a question mark on the end (in true passive-aggressive Internet behavior).

    -j2xs

    --
    Java To Excess
  88. Paralelism.. by GWBasic · · Score: 1

    Hardware paralelism can be beneficial without having to rewrite every application. In some cases, the OS can take advantage of multiple CPUs to make single-threaded applications run faster. In my current job, I run single-threaded tasks in a batch environment. Our system allows us to run one task per core, thus taking advantage of a multi-core environment.

  89. Wow...talk about "bug, not a feature" by n00854180t · · Score: 1

    This is retarded. Claiming that software will be "clunky" or "sluggish" because hardware vendors decided to make an inefficient hardware design to cope with the fact that they can't or won't innovate is rather like saying that cars without engines don't run well because of the tires. Multi-core will have crappy software because multi-core is essentially a "hack" to get over the fact that silicon can't supply the density needed for high performance applications. Blaming software developers for the hardware industry's crappy hack is pretty pathetic. Instead of blaming software for their crappy designs, maybe they should work on moving away from silicon into spintronics or any of the other promising possible hardware advances.

  90. processors by Ozgur+Uksal · · Score: 1

    If you read the article, you will see that Mrs. Crawford does not even come close to saying
    that "Software is at Dead End". She says software needs to catch up with the hardware.

    Computers have more and more processors (and different kinds of processors, like GPUs), and
    currently most software isn't designed for that kind of environment. IBM has developed
    some clever ways to program these types of systems in a "general purpose" way.

    That's the worst summary of a headline that I've ever read.

    ozgur uksal
    http://www.informationweek.com/news/showArticle.jh tml?articleID=197001130/