1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-01-11 07:17:58 +00:00

Further smooth out avalon hashrate by limiting the maximum number of nonces counted each cycle to 1 per miner, saving them for later cycles.

This commit is contained in:
Con Kolivas 2013-10-08 22:17:00 +11:00
parent dc9c3783ec
commit 7be59992c1

View File

@ -1433,9 +1433,9 @@ static int64_t avalon_scanhash(struct thr_info *thr)
{ {
struct cgpu_info *avalon = thr->cgpu; struct cgpu_info *avalon = thr->cgpu;
struct avalon_info *info = avalon->device_data; struct avalon_info *info = avalon->device_data;
int64_t hash_count, us_timeout, nonce_count;
const int miner_count = info->miner_count; const int miner_count = info->miner_count;
struct timeval now, then, tdiff; struct timeval now, then, tdiff;
int64_t hash_count, us_timeout;
struct timespec abstime; struct timespec abstime;
/* Half nonce range */ /* Half nonce range */
@ -1452,13 +1452,20 @@ static int64_t avalon_scanhash(struct thr_info *thr)
mutex_unlock(&info->qlock); mutex_unlock(&info->qlock);
mutex_lock(&info->lock); mutex_lock(&info->lock);
hash_count = 0xffffffffull * (uint64_t)info->nonces; /* Smooths out hashrate shown by limiting number of nonces counted in
* one lucky cycle, saving some for later less lucky cycles. */
if (info->nonces > miner_count)
nonce_count = miner_count;
else
nonce_count = info->nonces;
hash_count = 0xffffffffll * nonce_count;
avalon->results += info->nonces + info->idle; avalon->results += info->nonces + info->idle;
if (avalon->results > miner_count) if (avalon->results > miner_count)
avalon->results = miner_count; avalon->results = miner_count;
if (!info->reset) if (!info->reset)
avalon->results--; avalon->results--;
info->nonces = info->idle = 0; info->nonces -= nonce_count;
info->idle = 0;
mutex_unlock(&info->lock); mutex_unlock(&info->lock);
/* Check for nothing but consecutive bad results or consistently less /* Check for nothing but consecutive bad results or consistently less