Icarus: make --icarus-timing hidden and document it in FPGA-README
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
diff --git a/FPGA-README b/FPGA-README
new file mode 100644
index 0000000..9044dc8
--- /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 <arg> 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 5a5609b..9c445e8 100644
--- a/README
+++ b/README
@@ -209,52 +209,7 @@ FPGA mining boards(BitForce, Icarus, Ztex) only options:
On windows <arg> is usually of the format \\.\COMn
(where n = the correct device number for the FPGA device)
---icarus-timing <arg> 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 c5caaca..b6b0bae 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,