Re: [fonc] Deoptimization as fallback

2013-07-31 Thread David Barbour
When we speak of separating meaning from optimization, I get the impression
we want to automate the optimization. In that case, we should validate the
optimizer(s). But you seem to be assuming hand-optimized code with a
(simplified) reference implementation. That's a pretty good pattern for
validation and debugging, and I've seen it used several times (most
recently in a library called 'reactive banana', and most systematically in
Goguen's BOBJ). But I've never seen it used as a fallback. (I have heard of
cases of systematically running multiple implementations and comparing them
for agreement, e.g. with airbus.)




On Tue, Jul 30, 2013 at 6:08 PM, Casey Ransberger
casey.obrie...@gmail.comwrote:

 Hi David, comments below.

 On Jul 30, 2013, at 5:46 PM, David Barbour dmbarb...@gmail.com wrote:

  I'm confused about what you're asking. If you apply an optimizer to an
 algorithm, it absolutely shouldn't affect the output. When we debug or
 report errors, it should always be in reference to the original source code.
 
  Or do you mean some other form of 'optimized'? I might rephrase your
 question in terms of 'levels of service' and graceful degradation (e.g.
 switching from video conferencing to teleconferencing gracefully if it
 turns out the video uses too much bandwidth), then there's a lot of
 research there. One course I took - survivable networks and systems -
 heavily explored that subject, along with resilience. Resilience involves
 quickly recovering to a better level of service once the cause for the
 fault is removed (e.g. restoring the video once the bandwidth is available).
 
  Achieving ability to fall back gracefully can be a challenge. Things
 can go wrong many more ways than they can go right. Things can break in
 many more ways than they can be whole. A major issue is 'partial failure' -
 because partial failure means partial success. Often some state has been
 changed before the failure occurs. It can be difficult to undo those
 changes.

 So I'm talking about the steps goal around separating meaning from
 optimization. The reason we don't have to count optimizations as a part of
 our complexity count is: the system can work flawlessly without them, it
 might just need a lot of RAM and a crazy fast CPU(s) to do it.

 The thought I had was just this: complex algs tend to have bugs more often
 than simple algs. So why not fail over if you have an architecture that
 always contains the simplest solution to the problem right *beside* the
 optimal solution that makes it feasible on current hardware?

 Of course you're right, I can imagine there being lots of practical
 problems with doing things this way, especially if you've got an e.g.
 Google sized fleet of machines all switching to a bubble sort at the same
 time! But it's still an interesting question to my mind, because one of the
 most fundamental questions I can ask is how do I make these systems less
 brittle?

 Does this clarify what I was asking about?

 Case
 ___
 fonc mailing list
 fonc@vpri.org
 http://vpri.org/mailman/listinfo/fonc

___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] Deoptimization as fallback

2013-07-31 Thread Fernando Cacciola
On Wed, Jul 31, 2013 at 4:26 PM, David Barbour dmbarb...@gmail.com wrote:

 When we speak of separating meaning from optimization, I get the
 impression we want to automate the optimization. In that case, we should
 validate the optimizer(s). But you seem to be assuming hand-optimized code
 with a (simplified) reference implementation. That's a pretty good pattern
 for validation and debugging, and I've seen it used several times (most
 recently in a library called 'reactive banana', and most systematically in
 Goguen's BOBJ).


True, though IME, the reference implemention is given in a different
language (in fact I've never seen it in the same language but I'll check
out your examples). I always hated that (it's so simple to do certain
things in, say, R or Octave, for example, yet so difficult to port to
production code), and I think is the reason the idea has not been used as a
fallback but only for validation and debugging.



-- 
Fernando Cacciola
SciSoft Consulting, Founder
http://www.scisoft-consulting.com
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc