From 17b6f111a66b8ccfcaf158c65cb0adaa1140b42a Mon Sep 17 00:00:00 2001 From: Kano Date: Wed, 16 May 2012 23:53:13 +1000 Subject: [PATCH] Icarus: make --icarus-timing hidden and document it in FPGA-README --- FPGA-README | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README | 47 +--------------------------------------------- cgminer.c | 2 +- 3 files changed, 56 insertions(+), 47 deletions(-) create mode 100644 FPGA-README diff --git a/FPGA-README b/FPGA-README new file mode 100644 index 00000000..9044dc84 --- /dev/null +++ b/FPGA-README @@ -0,0 +1,54 @@ + +This README contains extended details about FPGA mining with cgminer + + +Icarus + +There is a hidden option in cgminer when Icarus support is compiled in: + +--icarus-timing Set how the Icarus timing is calculated - one setting/value for all or comma separated + default Use the default Icarus hash time (2.6316ns) + short Calculate the hash time and stop adjusting it at ~315 difficulty 1 shares (~1hr) + long Re-calculate the hash time continuously + value Specify the hash time in nanoseconds (e.g. 2.6316) + + Icarus timing is required for devices that do not exactly match a default Icarus Rev3 in + processing speed + If you have an Icarus Rev3 you should not norally need to use --icarus-timing since the + default values will maximise the MH/s and display it correctly + + Icarus timing is used to determine the number of hashes that have been checked when it aborts + a nonce range (including on a LongPoll) + It is also used to determine the elapsed time when it should abort a nonce range to avoid + letting the Icarus go idle, but also to safely maximise that time + + 'short' or 'long' mode should only be used on a computer that has enough CPU available to run + cgminer without any CPU delays (an active desktop or swapping computer would not be stable enough) + Any CPU delays while calculating the hash time will affect the result + 'short' mode only requires the computer to be stable until it has completed ~315 difficulty 1 shares + 'long' mode requires it to always be stable to ensure accuracy, however, over time it continually + corrects itself + + When in 'short' or 'long' mode, it will report the hash time value each time it is re-calculated + In 'short' or 'long' mode, the scan abort time starts at 5 seconds and uses the default 2.6316ns + scan hash time, for the first 5 nonce's or one minute (whichever is longer) + + In 'default' or 'value' mode the 'constants' are calculated once at the start, based on the default + value or the value specified + + To determine the hash time value for a non Icarus Rev3 device or an Icarus Rev3 with a different + bitstream to the default one, use 'long' mode and give it at least a few hundred shares, or use + 'short' mode and take note of the final hash time value (Hs) calculated + You can also use the RPC API 'stats' command to see the current hash time (Hs) at any time + + The Icarus code currently only works with a dual FPGA device that supports the same commands as + Icarus Rev3 requires and also is less than ~840MH/s and greater than 2MH/s + If a dual FPGA device does hash faster than ~840MH/s it should work correctly if you supply the + correct hash time nanoseconds value + + The timing code itself will affect the Icarus performance since it increases the delay after + work is completed or aborted until it starts again + The increase is, however, extremely small and the actual increase is reported with the + RPC API 'stats' command (a very slow CPU will make it more noticeable) + Using the 'short' mode will remove this delay after 'short' mode completes + The delay doesn't affect the calculation of the correct hash time diff --git a/README b/README index 5a5609b8..9c445e84 100644 --- a/README +++ b/README @@ -209,52 +209,7 @@ FPGA mining boards(BitForce, Icarus, Ztex) only options: On windows is usually of the format \\.\COMn (where n = the correct device number for the FPGA device) ---icarus-timing Set how the Icarus timing is calculated - one setting/value for all or comma separated - default Use the default Icarus hash time (2.6316ns) - short Calculate the hash time and stop adjusting it at ~315 difficulty 1 shares (~1hr) - long Re-calculate the hash time continuously - value Specify the hash time in nanoseconds (e.g. 2.6316) - - Icarus timing is required for devices that do not exactly match a default Icarus Rev3 in - processing speed - If you have an Icarus Rev3 you should not norally need to use --icarus-timing since the - default values will maximise the MH/s and display it correctly - - Icarus timing is used to determine the number of hashes that have been checked when it aborts - a nonce range (including on a LongPoll) - It is also used to determine the elapsed time when it should abort a nonce range to avoid - letting the Icarus to go idle, but also to safely maximise that time - - 'short' or 'long' mode should only be used on a computer that has enough CPU available to run - cgminer without any CPU delays (an active desktop or swapping computer would not be stable enough) - Any CPU delays while calculating the hash time will affect the result - 'short' mode only requires the computer to be stable until it has completed ~315 difficulty 1 shares - 'long' mode requires it to always be stable to ensure accuracy, however, over time it continually - corrects itself - - When in 'short' or 'long' mode, it will report the hash time value each time it is re-calculated - In 'short' or 'long' mode, the scan abort time starts at 5 seconds and uses the default 2.6316ns - scan hash time, for the first 5 nonce's or one minute (whichever is longer) - - In 'default' or 'value' mode the 'constants' are calculated once at the start, based on the default - value or the value specified - - To determine the hash time value for a non Icarus Rev3 device or an Icarus Rev3 with a different - bitstream to the default one, use 'long' mode and give it at least a few hundred shares, or use - 'short' mode and take note of the final hash time value (Hs) calculated - You can also use the RPC API 'stats' command to see the current hash time (Hs) at any time - - The Icarus code currently only works with a dual FPGA device that supports the same commands as - Icarus Rev3 requires and also is less than ~840MH/s and greater than 2MH/s - If a dual FPGA device does hash faster than ~840MH/s it should work correctly if you supply the - correct hash time nanoseconds value - - The timing code itself will affect the Icarus performance since it increases the delay after - work is completed or aborted until it starts again - The increase is, however, extremely small and the actual increase is reported with the - RPC API 'stats' command (a very slow CPU will make it more noticeable) - Using the 'short' mode will remove this delay after 'short' mode completes - The delay doesn't affect the calculation of the correct hash time +For other FPGA details see the FPGA-README CPU only options (deprecated, not included in binaries!): diff --git a/cgminer.c b/cgminer.c index c5caaca6..b6b0bae2 100644 --- a/cgminer.c +++ b/cgminer.c @@ -825,7 +825,7 @@ static struct opt_table opt_config_table[] = { #ifdef USE_ICARUS OPT_WITH_ARG("--icarus-timing", set_icarus_timing, NULL, NULL, - "Set how the Icarus timing is calculated - one setting/value for all or comma separated ('default'/'short'/'long'/value)"), + opt_hidden), #endif OPT_WITHOUT_ARG("--load-balance", set_loadbalance, &pool_strategy,