...
Looks like cgminer will do actually. There are basically two choices. You can carry on working on every work unit to completion even though you get a longpoll, which is what cgminer does, or you can submit a new work unit to the single and it'll discard any results it found so far for the old work unit and start working on the new one. Either way you lose out, it's just a question of whether you lose by throwing away shares or lose by working on work units that are stale.
Hmmm, that suggests something rather unexpected.
I guess I'll have to verify you're correct next time I see Luke-jr in IRC ... coz that is a waste as you suggest
I
was pretty sure that the BFL can handle nonce ranges but I'm not sure now
If the rest below seems off-topic - it actually isn't coz the code for both BFL and Icarus is very similar.
The Icarus code is a butchered copy of the BFL code but redesigned to handle the way Icarus works
(and that will be enhanced more once I get my 2 Icarus in the next 4 or 5 days)
With the current firmware in the Icarus, it has the problem of only ever returning 1 nonce.
Now that would seem bad ... but looking at what you said above, it actually isn't all that bad after all ...
For an LP, when you overwrite the current work, you know you only have a very small chance of throwing anything away
(no share nonces exist before the current point in the full nonce range otherwise it would have returned one already)
It could be working on a share nonce at the time you overwrote it - but that's quite unlikely - and the chance of that would be 1 in (2^32 divided by however many nonces could be checked in the amount of time it would take to overwrite the current work)
The other case (that would seem bad but isn't really either) is when you get a nonce reply from Icarus, it has stopped work and you start another work and thus have only a very small (but different) chance of throwing anything away if both FPGA's happen the find an answer at the same time
The result of this is of course you on average halve your efficiency - but that doesn't really mean anything worthy of concern
Nonce ranges would reduce the impact on BFL (if they exist)
That just adds the extra overhead of starting each nonce range and a smaller nonce range is the maximum wasted processing time (if the pool doesn't accept stale shares)
... oh and lastly, in cgminer you can also manually enable stale share submission with the --submit-stale option if the pool doesn't pass that to info to cgminer