diff options
author | Josh Blum | 2012-10-13 16:17:34 -0700 |
---|---|---|
committer | Josh Blum | 2012-10-13 16:17:34 -0700 |
commit | ac9abbbcfdbc5efc715ea49bb0319b2408cca359 (patch) | |
tree | 6aef972d9265226c428cc962674fbb0dd6b5b727 | |
parent | b0e1ca63f8db775557d155b6b7d703f3bf251386 (diff) | |
download | sandhi-ac9abbbcfdbc5efc715ea49bb0319b2408cca359.tar.gz sandhi-ac9abbbcfdbc5efc715ea49bb0319b2408cca359.tar.bz2 sandhi-ac9abbbcfdbc5efc715ea49bb0319b2408cca359.zip |
tweaks to forecast exit logic
-rw-r--r-- | lib/block_task.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/block_task.cpp b/lib/block_task.cpp index fac70c0..96283d7 100644 --- a/lib/block_task.cpp +++ b/lib/block_task.cpp @@ -198,17 +198,19 @@ void BlockActor::handle_task(void) { if (fcast_ninput_items[i] <= work_ninput_items[i]) continue; - const size_t work_noutput_items_last = work_noutput_items; + if (work_noutput_items <= this->output_multiple_items) + { + //handle the case of forecast failing + //TODO accumulate input here, only done if inputs done and already accumulated + if (this->inputs_done[i]) this->mark_done(); + return; + } + work_noutput_items = work_noutput_items/2; //backoff regime work_noutput_items += this->output_multiple_items-1; work_noutput_items /= this->output_multiple_items; work_noutput_items *= this->output_multiple_items; - if (work_noutput_items and work_noutput_items_last != work_noutput_items) goto forecast_again_you_jerk; - - //handle the case of forecast failing - //TODO accumulate input here, only done if inputs done and already accumulated - if (this->inputs_done[i]) this->mark_done(); - return; + goto forecast_again_you_jerk; } } |