I don’t know if I can agree that “there is no upcoming multicore revolution in computer programming”. I consider making parallel programming easier at the small scale a revolution in computer programming, just like the introduction of garbage collection into mainstream (by Java).
By small, I mean code that runs on a local machine and is not about intensive data processing. I guess “client” is a good characterization. For instance, many interactive applications can benefit from multicore but not yet, usually because the ability to multithread is not exposed at a suitably high level and so it doesn’t get used until late in the game. However, I think all of us would enjoy some speedup here and there in our daily work on our laptops, no?
Intel, in particular, has made a good step in releasing the Thread Building Blocks that efficiently supports nested and irregular parallelism. TBB is what I would think of when I hear “intel” and “multicore”, and it most certainly is not about replacing OpenMP and MPI which are geared for high performance computing. (And now one can start talking about MapReduce and friends… but we are getting “large”, and at the large scale, I am with you.)
I should add that there is a common thread (pardon the pun!) among the parallel programming ideas large and small: expose the parallelism and let the scheduler worry about the actual scheduling. Now perhaps we can both agree that the only thing that have ever happened in computer programming is higher and yet higher level of programming. 😛
I don’t know if I can agree that “there is no upcoming multicore revolution in computer programming”. I consider making parallel programming easier at the small scale a revolution in computer programming, just like the introduction of garbage collection into mainstream (by Java).
By the Spolsky’s principle of leaking abstractions, I don’t think we can ever expect “small scale parallel programming” to be ever as easy as Java’s garbage collection.
However, I think all of us would enjoy some speedup here and there in our daily work on our laptops, no?
There is no question that some client software is CPU-bound. Video games and image processing software are examples. We might see a revolution in video editing tools, for example. I can imagine live 3D rendering with a photo-quality. The Playstation 3 has what? 7 cores? I would not think of designing a gaming engine without thinking about multicore CPUs.
Jansays:
> By the Spolsky’s principle of leaking abstractions, I don’t think we can ever expect “small scale parallel programming†to be ever as easy as Java’s garbage collection.
Ever tried Erlang?
Michael Bsays:
Well I agree with you that revolution is nonsense, even if it where only for the fact that it’s evolution.
No multi-core revolution in enterprise, but there’s definitely one in multimedia processing. Just look at the speed-ups the Cell processor in the Playstation 3 can get in signal and graphics processing when used correctly.
I don’t know if I can agree that “there is no upcoming multicore revolution in computer programming”. I consider making parallel programming easier at the small scale a revolution in computer programming, just like the introduction of garbage collection into mainstream (by Java).
By small, I mean code that runs on a local machine and is not about intensive data processing. I guess “client” is a good characterization. For instance, many interactive applications can benefit from multicore but not yet, usually because the ability to multithread is not exposed at a suitably high level and so it doesn’t get used until late in the game. However, I think all of us would enjoy some speedup here and there in our daily work on our laptops, no?
Intel, in particular, has made a good step in releasing the Thread Building Blocks that efficiently supports nested and irregular parallelism. TBB is what I would think of when I hear “intel” and “multicore”, and it most certainly is not about replacing OpenMP and MPI which are geared for high performance computing. (And now one can start talking about MapReduce and friends… but we are getting “large”, and at the large scale, I am with you.)
I should add that there is a common thread (pardon the pun!) among the parallel programming ideas large and small: expose the parallelism and let the scheduler worry about the actual scheduling. Now perhaps we can both agree that the only thing that have ever happened in computer programming is higher and yet higher level of programming. 😛
I don’t know if I can agree that “there is no upcoming multicore revolution in computer programming”. I consider making parallel programming easier at the small scale a revolution in computer programming, just like the introduction of garbage collection into mainstream (by Java).
By the Spolsky’s principle of leaking abstractions, I don’t think we can ever expect “small scale parallel programming” to be ever as easy as Java’s garbage collection.
However, I think all of us would enjoy some speedup here and there in our daily work on our laptops, no?
There is no question that some client software is CPU-bound. Video games and image processing software are examples. We might see a revolution in video editing tools, for example. I can imagine live 3D rendering with a photo-quality. The Playstation 3 has what? 7 cores? I would not think of designing a gaming engine without thinking about multicore CPUs.
> By the Spolsky’s principle of leaking abstractions, I don’t think we can ever expect “small scale parallel programming†to be ever as easy as Java’s garbage collection.
Ever tried Erlang?
Well I agree with you that revolution is nonsense, even if it where only for the fact that it’s evolution.
No multi-core revolution in enterprise, but there’s definitely one in multimedia processing. Just look at the speed-ups the Cell processor in the Playstation 3 can get in signal and graphics processing when used correctly.