Hi all,
I am using cgminer 4.12.0 and mining against bitcoind @localhost. The hardware used is an ASIC miner GekkoScience Compac F USB miner at an average hash rate of 387 GH/s. In cgminers' source code I have
testwise increased the default timeout of 5sec in the watchpool_thread function and raised it to a value higher than 5 minutes. By this it allows the threads to iterate and cycle through many nonce2 values. I was interested to see how fast cgminer cycles through the nonce2 range which is from 0-18446744073709551615
Started with nonce2=0
[2022-11-06 10:31:03.924] Work nonce2 0 ntime 63677a79
Ended with nonce2=15478
[2022-11-06 10:36:03.922] Work nonce2 15478 ntime 63677a79
The result was: it cycled through 15478 values within 5 minutes. The rate therefore was 3095.6 values/min. I consider this horribly slow.
Summary:
This USBminer is able to cycle through the nonce range (2^32-1) from 0-4294967295 90 (
!) times per second, that is the expected hashrate of
387 GH/s which the miner is capable of.
But it can only cycle through 15,479 values for the nonce2 field which is a hashrate of
3,1 KH/sI understand that when going through the nonce2 range, the Merkle root has to be regenerated each time, but the scale can't be that huge. So what explains this extremely large difference in processing rate ?
I look forward to helpful answers and thank you all in advance
EDIT:
One additional question. How can I display the nonce's that were used and tested so far in cgminers output/log when in debug mode? I tried this:
[...]
//applog(LOG_DEBUG, "Work nonce2 %"PRIu64" ntime %s", work->nonce2, work->ntime);
applog(LOG_DEBUG, "Work nonce=%"PRIu32" nonce2=%"PRIu64" ntime=%s", work->nonce, work->nonce2, work->ntime);
[...]
but I got always displayed nonce=0 in the output