Browse Source

show correct hashrate

master
orignal 7 years ago
parent
commit
f4a6baed4e
  1. 23
      miner.c

23
miner.c

@ -209,13 +209,13 @@ double time2secs(struct timeval *tv_start) {
static void hashmeter(int thr_id, struct timeval *tv_start, static void hashmeter(int thr_id, struct timeval *tv_start,
unsigned long hashes_done) unsigned long hashes_done)
{ {
double khashes, secs; double mhashes, secs;
secs = time2secs(tv_start); secs = time2secs(tv_start);
khashes = hashes_done / 1000.0; mhashes = hashes_done / 1000.0 / 1000.0;
hashrates[thr_id] = khashes / secs; hashrates[thr_id] = mhashes / secs;
} }
static void print_hashmeter(double hashrate, char *rates) { static void print_hashmeter(double hashrate, char *rates) {
@ -289,11 +289,6 @@ static void *miner_thread(void *thr_id_int)
unsigned long hashes_done; unsigned long hashes_done;
hashes_done = 0; hashes_done = 0;
unsigned int h0count = 0;
struct timeval tv_start0;
gettimeofday(&tv_start0, NULL);
while (1) { while (1) {
struct timeval tv_start; struct timeval tv_start;
bool rc; bool rc;
@ -355,8 +350,6 @@ static void *miner_thread(void *thr_id_int)
clFlush(clState->commandQueue); clFlush(clState->commandQueue);
hashes_done = 1024 * threads;
if (work[res_frame].ready) if (work[res_frame].ready)
{ {
int j; int j;
@ -378,7 +371,6 @@ static void *miner_thread(void *thr_id_int)
printf("Found solution for %08x %08x: %08x\n", *target1, *target2, res[j]); printf("Found solution for %08x %08x: %08x\n", *target1, *target2, res[j]);
submit_nonce(&work[res_frame], swap32 (res[j])); submit_nonce(&work[res_frame], swap32 (res[j]));
block++; block++;
h0count++;
need_work = true; need_work = true;
break; break;
} }
@ -390,17 +382,14 @@ static void *miner_thread(void *thr_id_int)
work[res_frame].ready = false; work[res_frame].ready = false;
} }
if (h0count != 0)
{
double secs;
secs = time2secs(&tv_start0);
hashrates[thr_id] = h0count * pow (2, 256) / (secs * 1e6 * (pow (2, 224) - 1.0));
}
status = clEnqueueReadBuffer(clState->commandQueue, clState->outputBuffer, CL_TRUE, 0, status = clEnqueueReadBuffer(clState->commandQueue, clState->outputBuffer, CL_TRUE, 0,
sizeof(uint32_t) * threads, res, 0, NULL, NULL); sizeof(uint32_t) * threads, res, 0, NULL, NULL);
if(status != CL_SUCCESS) { printf("Error: clEnqueueReadBuffer failed. (clEnqueueReadBuffer)\n"); return 0; } if(status != CL_SUCCESS) { printf("Error: clEnqueueReadBuffer failed. (clEnqueueReadBuffer)\n"); return 0; }
hashes_done = threads;
hashmeter(thr_id, &tv_start, hashes_done);
res_frame = frame; res_frame = frame;
work[res_frame].ready = threads; work[res_frame].ready = threads;
work[res_frame].res_nonce = work[res_frame].blk.data[19]; work[res_frame].res_nonce = work[res_frame].blk.data[19];

Loading…
Cancel
Save