[Beowulf] Stroustrup regarding multicore
Lux, James P
james.p.lux at jpl.nasa.gov
Thu Aug 28 10:57:07 PDT 2008
Again, if you're building software for a real estate office it is
straightforward for the programmer to just learn what your business is
and in any case high performance isn't needed. If you are trying to
simulate supernova explosions and you can barely cram the
magnetohydrodynamics in a piss poor 2D version of the problem onto the
biggest machines in existence and would really, really like to do the
problem in 3D, I don't think you can operate on this model.
---- I think you egregiously underestimate the amount of work and judgement that goes into building software for a real estate office, or to sufficiently understand "what the business is". (speaking from personal experience here...<grin>)
---- There are many, many large software development projects for which it would be impossible (or at least impractical) for the software development team to understand the business. Would you expect the software team generating an application to process the payoff of a home mortgage to understand all the complexities and regulatory requirements imposed by 3000+ counties for doing the transaction? Of course not. That's why there are processes for requirements validation, test case generation, user acceptance test, etc. It is precisely the complexity and scale of the problem that drives the need to decompose the effort and set up interfaces (albeit, at greater overall cost). Teams of 50 or 100 skilled software developers are not particularly unusual in business, and they're hardly "toy" applications, nor are they insensitive to performance considerations.
---- I wouldn't think it unreasonable (but not fair) for the "real software developers" in business to actually look down on the typical scientific development as an amusing little toy exercise with little or no financial consequence. The regulatory implications and business costs of poor software development in a large business can literally be measured in billions of dollars and the aggravation of tens of thousands of people.
--- Bcause of this large impact, they get large budgets, which is really the *ONLY* way to build large scale systems. Brooks identified it decades ago, and it's been repeated over the years, big complex systems take lots of resources, and, I'd extend that to include that the management/design/implementation of such a system has to allow for the fact that many of your resources will be average. Everyone has an example of two skilled guys go into the garage and come out a week later with a world-beater. That model breaks down severely when the project is big enough to require 50 people.
> For example, a scientist saying "you must use the PGI compiler" is
> like the bridge building engineer saying "you must use Pennsylvania
> coal in the blast furnace".
What if a particular compiler is known to generate floating point code
for certain kinds of inner loops that runs a factor of three faster
than another? Would it be silly then? The coal you use has no effect
on the resulting steel, but the compiler you use *does* alter the
resulting machine code by a lot!
---- Actually, the coal DOES have a lot of effect on the resulting steel (particularly the sulfur content). And in the specific example, there's nothing prohibiting the customer from passing on information, but they shouldn't necessarily be involved in the design of the system. At some point, their expertise is the science, not the computing, and a more efficient allocation of resources recognizes that distinction.
--- Mind you, non-ideal situations always arise, and the fact that one can often subsidize one's research by contributing free labor has a huge effect on the project management. But it's not sustainable in the long run, either from a institutional standpoint, or societal. Yes, there may appear be an inexhaustible supply of willing grad students, but at some point, a specter starts to stalk the halls of academe, and the cry goes up to "unite!", "to the barricades", "Si se puede!", etc.. It's a particular issue at glamorous research institutions where a significant part of the job satisfaction and/or compensation is "working on cool stuff" (getting paid in "space dollars" is what it's called in the NASA world). People are willing to work long hours for relatively little tangible compensation, literally to the point of illness or family breakdown, but they won't do it forever, and eventually they kick back.
By the way, I even argue that often it is important for the bridge
builder to know a bit about how the steel is made. Why? Because he
might falsely assume that certain kinds of characteristics are
impossible to achieve in the materials and thus not ask for them, and
the steelmaker might have no way of knowing that certain
characteristics would be desired by the market and thus won't offer to
sell the perfect material for the job.
--- Knowing "a bit" is actually the example I gave. It's knowing how to run a factory and understanding worker's comp and all the other myriad administrative details that the engineer doesn't necessarily need to know.
More information about the Beowulf