From today’s HPCWire.
The evolution of 4th generation surgery tools will help spread brain surgery to the masses, altogether dispensing with neurosurgeons in small hospitals that cannot afford their high pay.
Do you feel that I am pulling your leg? I am. But so is the HPCwire editor when he claims that 4th generation programming languages will make HPC programming available to the masses. Programming — at least, programming of a large, complex code — is a specialized task that requires a specialist — a software engineer — to the same extent that brain surgery requires a specialist. You might claim that many non-specialists do write code. It is also true that most of us take care of our routine health problems. But only a fool would try brain surgery because he was successful in removing a corn from his foot. To believe that better languages will soon make software engineers redundant is to believe that Artificial General Intelligence will progress much faster than most of us expect, or to belittle the specialized skills of software engineers.
What Professor Snir said for programming HPC also holds true for designing HPC systems and clusters.
Anyone can take group of machines and “turn them into a cluster”. Heck, you can even ask your local, neighborhood MCSE to do it for you.
And it may work well for some set of problems.
But what happens when performance goes into the dirt on a critical code, and you don’t understand why? This is not a theoretical problem. We get questions like this all the time from people with such ad-hoc clusters. We have one we are working on resolving now.
Professor Snir continues
… Writing a simple program with little concern with performance and not too much worry about correctness is tantamount to removing a corn. Even writing a simple program — for example, an FFT routine that achieves close to optimal performance, is tantamount to brain surgery, even if the target system is the processor that operates my laptop. Writing a moderately complex program that is bug free with high confidence and can be used to control a critical system is also tantamount to brain surgery. Finally, writing a large, complex program that more or less satisfies specifications seems to be harder than brain surgery (large software projects seem to have a higher mortality rate than brain surgery patients).
Similarly for designing and building a scalable computing resource.
Most people can program. Few people can milk every last bit of performance out of a program. Which one of these groups do you want to design and build your algorithms? Remember, both will use the same hardware. One will get far better performance than the other.
Same thing for cluster design. Anyone can string Cat-6 between machines and a switch. Who can architect the system to be able to scale under tremendous demand for resources? It might help to start with a group that knows what “to scale” actually means.
You shouldn’t get your brain surgery from a nurses aide. You shouldn’t get your HPC systems from a PC technician. In both cases, the upside is that you might save a little money by doing what you shouldn’t do. The downside can be really bad. Better than even odds that things go pear shaped awful fast.