The Parallelism Rich or the Parallelism Poor ... Choose Wisely!
Not everybody has the "Watson Fever" (how unfortunate). IBM's demonstration of Watson on Jeopardy has reminded many that the race for Artificial Intelligence is still on. It's not as glamorous now as it once was, but the hunt persists, the prize is glorious and we are making significant strides (IBM's Watson).
But what's new was once old and what's old is now new. Tracey and I are still beating the Fifth Generation drum and we are convinced that some stones in that original project were left unturned (therefore wild goose chase continues). One of the major pillars in the Fifth Generation project was parallelism at all levels from the hardware through the operating system, right up to the application. The Fifth Generation progenitors were convinced that one of the keys to the secret of achieving true Artificial Intelligence could be found in the identifying the proper paradigm of parallelism. But go figure, after several decades not only have we not nailed down the proper paradigm for parallelism or massive parallelism in software development, many software developers are simply uninitiated as far as parallel programming or parallel software design is concerned. In the now dozens of conversations that we have had about the significance of Watson's performance, it was stunning to see how many of our fellow developers have never developed a cluster-based program or a parallel processing program on a parallel processor or even a multi-threaded program on a single processor machine for that matter. In reflecting over the conversations, a pattern definitely began to take shape. The folks that knew about parallelism and the issues tended to really know what the issues were and had something to contribute to the conversations about Watson. The folks that didn't know, really didn't know. I mean, they didn't degrade gracefully, they simply had no clue whatsoever what would be involved in designing or implementing massively parallel software on super computers or clusters. It is clear when it comes to this kind of programming and software development that we are developing the parallelism haves and the parallelism have-nots, the parallelism rich and the parallelism poor. The game is afoot, you either have to play hard or go home. Watson's latest demonstration was a turning of the page of sorts. The bar has been raised and challenge given, now what are you prepared to do?
Links to Books on parallelism:
- Parallel and Distributed Programming Using C++
- Professional Multicore Programming: Design and Implementation for C++ Developers
- HPC for Dummies