New Weather Service supercomputer faces chaos
washingtonpost.com
washingtonpost.com
[1] Bug-for-bug means bug-for-bug. There was a clear attempt to sort an array in the research code, which was implemented as a single pass through the data just deleting elements that were smaller than their direct predecessor. Research code is weird. It's one of the few places in software where "hack it till it works" actually produces valuable results.
A news station can't get away with saying 50% though. The public assumes that's a cop-out answer. As such they will say 60% even if the real number is 50%. They will never say 40%. Better to seem over-prepared then rain on you when it wasn't supposed to.
Even if we had the perfect computer, at the end of the day it's got to get to your average person through a local news weather reporter.
An average person maybe, but not us if you use Dark Sky for iOS or its web equivalent http://forecast.io/
I'm simplifying but it essentially plugs your GPS coordinates into a weather model and gives you the output.
More counter-intuitiveness follows. The more complicated you make the model, oddly enough, the less likely it is to be stable. (I'm looking at you, weather model)
I suspect that differences are random so that on average they are performing statistically about the same.
Oddly enough, nope! Nice try, though. The rate of divergence is unpredictable and not guaranteed to average out to anything. In fact, that's the definition of chaotic. Unless you've discovered an attractor, you just have unpredictable noise. Add that with CA and you have systems that diverge in various ways at various rates. Sure if you're sample size was huge, it'd probably all work out. But 2-3 or even a few dozen? Not so much.
It's newsworthy and interesting because they're running the same exact model on two different computers and it's yielding wildly divergent results. It'd be as if you took the same CA rules with the same initial state and it ran differently on two different computers.
It's tricky because these discrepancies are probably due to subtle differences like the way the new CPUs are handling the floating point calculations.
Either the old computer (and systems that came before it) were producing the wrong results, and the new one is more accurate.
Or the old system (and systems that came before it) produced the right results, and the new system has a bug.
These things do happen, but it's very expensive to fix hardware.
With C is quite easy to happen, don't know about fortran though.
Touched upon compiler (internals and flags) in a separate post.
We are talking totality of systems here, the compiler that produces the programs is part of the system that uses the program.
"So assuming the two programs running are in fact the exact same,"
The source code for the programs might as well be the same, but the actual (binary) program is not necessarily the same.
Or to put it in other words, both systems might be perfectly correct, but there is a class of software bugs that get revealed only when incarnated after being compiled in one of the several perfectly legit ways. The dimension of this set of possible alternative optimisations can be quite high if your language offers many areas for undefined behaviour.
Does anybody know if fortran is plagued by it as much as C ?
Neither are completely wrong (as their results are similar) they just aren't exactly the same, especially when dealing with 7 day forecasts, this isn't to be entirely unexpected. We are trying to approximate massive systems we don't fully understand. A physics simulator is decent at getting a broad sense of things, but is not precise enough to get it exactly right, even though we use them to fly airplanes, same thing here.
That brings back memories of debugging a Fast Fourier Transform code that had a slightly miscoded version of pi. Someone typed it in from memory, to a dozen or so places (single precision), and got it slightly wrong.
Talk about weird and hard to track down. Like being transported to the parallel universe where the cars ride on hexagons.