For clarification to anyone who is thinking their miner is overclocked or underclocked by looking only at the hash rate sgminer reports:
As defined by the
baikal_hash_done() function in
sgminer:
driver-baikalu.c:
[Displayed Hash Rate (in GHz)] = [clock (in MHz)] * [ASIC count] * [ALGO modifier] / 1000000
Note:
clock is hardcoded in sgminer (see
#define BAIKAL_CLK_DEF in
sgminer:
driver-baikal.h)
[ALGO modifier] (defined by Baikal in sgminer) =
X11/QUARK/QUBIT/NIST/MYRIAD_GROESTL/GROESTL: 120
SKEIN2: 62
X11GOST: 16
example (single hashboard):
clock = 300MHz
ASICs = 64
ALGO = Groestl, so modifier = 120
therefore 300 * 64 * 120 / 1000000 = 2.304 (GHz)
Note that the hash rate value you see reported by sgminer is not based on what the hash rate actually
is, but rather what it
should be (given all your ASICs are working and everything is stock). Imagine you did a 200% hardware overclock without any software changes - sgminer would still report the original hash rate because it would still be using the same hardcoded BAIKAL_CLK_DEF, see the same number of ASICs, and be on the same algorithm (i.e. the only inputs to the hash rate calculation as explained above). If you want, it's trivial to modify the web interface code or sgminer to display an arbitrary hash rate but
it does not mean you're actually getting that hash rate. sgminer does not get any direct feedback from the STM controller regarding the actual hash rate. If you really want to know your true hash rate, check the pool you're mining at. They'll use the number of accepted shares vs. time & difficulty to calculate your actual hash rate.
BAIKAL_CLK_DEF is sent to the STM, but it does not actually set the hashing speed.