main.c


Log

Author Commit Date CI Message
Con Kolivas 4e48561a 2011-08-15T22:21:17 Rework the last-initialised time displayed.
Con Kolivas cfe8534c 2011-08-15T22:07:28 Partial restart of threads has proven to be unsuccessful so reinstate device re-initialisation to restart GPUs. Do this by having a reinit thread that is told via a queue which device to restart. If this thread fails to return from opencl code, it should not interrupt the workings of other devices.
Con Kolivas 42d49ffd 2011-08-15T20:28:25 Revert "Restart threads by abstracting out the clcontext initialisation and using that instead of probing all cards." This reverts commit 8f186e61e250e71bd606cabb52795eaa0c9ad423.
Con Kolivas cf543507 2011-08-15T20:27:02 Revert "Preinitialise the devices only once on startup." This reverts commit 071a0ad2f156ab492ebea6c5a60a1e49a62466de.
Con Kolivas b1289a01 2011-08-15T20:26:46 Revert "Move the non cl_ variables into the cgpu info struct to allow creating a new cl state on reinit, preserving known GPU variables." This reverts commit 28880d0dc7c601ee4479921502b66e913e38e36d.
Con Kolivas 7c50bb02 2011-08-15T20:26:27 Revert "Display last initialised time in gpu management info." This reverts commit 177e07aed32e6b38f615f52d3243620625ff93e0.
Con Kolivas cac54f30 2011-08-15T20:25:18 Revert "When pinging a sick cpu, flush finish and then ping it in a separate thread in the hope it recovers, but without blocking code elsewhere." This reverts commit a466942fd880d157cc0b5968805b2159f556fc20.
Con Kolivas 50504ef9 2011-08-14T13:57:58 If a work item has had any mining done on it, don't consider it discarded work.
Con Kolivas 656067a4 2011-08-14T12:30:50 Stale work test should respect age of rolled work as well.
Con Kolivas 23240805 2011-08-14T11:35:53 Stick to rolling only work from the current pool unless we're in load balance mode or lagging to avoid aggressive rolling imitating load balancing.
Con Kolivas 01aadda2 2011-08-14T11:24:38 Simply set the time of day when the work is decoded.
Con Kolivas 639d38fb 2011-08-14T07:54:45 Revert "Make sure to give work items a starting time only once when they're staged." This reverts commit 626ae10d7c90c8a21897343758e5dd0b00016950. Failed to address all work items.
Con Kolivas 626ae10d 2011-08-14T02:33:55 Make sure to give work items a starting time only once when they're staged.
Con Kolivas d6dd5d70 2011-08-14T01:54:47 Test each work item to see if it can be rolled instead of per-pool and roll whenever possible, adhering to the 60 second timeout.
Con Kolivas e9b8344a 2011-08-13T09:10:13 Free all work in one place allowing us to perform actions on it in the future.
Con Kolivas 6da13fb8 2011-08-12T23:58:00 Only put the message that a pool is down if not pinging it every minute.
Con Kolivas 510be5c9 2011-08-12T22:08:27 Summary on exit is sometimes getting lost without a flush of stdout.
Con Kolivas 42c22025 2011-08-12T21:43:33 The can_roll function fails inappropriately in stale_work.
Con Kolivas d39e5abf 2011-08-12T21:22:47 We can't hit this path since the earlier check for stale work will prevent us ever finding work it can roll here.
Con Kolivas 17e5e17e 2011-08-12T20:34:51 Only consider a pool lagging if we actually need the work and we have none staged despite queue requests stacking up.
Con Kolivas a466942f 2011-08-12T20:20:42 When pinging a sick cpu, flush finish and then ping it in a separate thread in the hope it recovers, but without blocking code elsewhere.
Con Kolivas 177e07ae 2011-08-12T14:25:44 Display last initialised time in gpu management info.
Con Kolivas 28880d0d 2011-08-13T20:54:20 Move the non cl_ variables into the cgpu info struct to allow creating a new cl state on reinit, preserving known GPU variables. Create a new context from scratch in initCQ in case something was corrupted to maximise our chance of succesfully creating a new worker thread.
Con Kolivas 071a0ad2 2011-08-12T13:00:25 Preinitialise the devices only once on startup.
Znort 987 2e31e168 2011-08-11T14:34:43 Add missing fflush(stdout) for --ndevs
Znort 987 353789da 2011-08-11T13:36:28 Use tab to indent code instead of spaces
Znort 987 83fa2158 2011-08-11T13:29:29 Lots more verbiage in error messages
Znort 987 1cbfcba2 2011-08-11T13:24:20 Disable --monitor-stderr on WIN32
Con Kolivas 467c52bb 2011-08-11T12:38:42 Allocate work from one function to be able to initialise variables added later.
Znort 987 79c989dd 2011-08-08T18:25:54 Add new option: --monitor <cmd> Option lets user specify a command <cmd> that will get forked by cgminer on startup. cgminer's stderr output subsequently gets piped directly to this command. This permits smart batch monitoring of the miner by a baby-sitter log parser while retaining the full benefit of the curses interface, e.g. when running cgminer under screen. Doing the same thing is possible using advanced bash redirection paraphernalia, but it is somewhat of a pain, especially when running screen'd. This option makes things more straightforward.
Con Kolivas 1725a1c0 2011-07-30T23:19:53 Fix non-opencl build.
Con Kolivas bc2976f5 2011-07-30T21:56:51 Be more willing to get work from the backup pools if the work is simply being queued faster than it is being retrieved.
Con Kolivas 8f186e61 2011-07-30T16:59:54 Restart threads by abstracting out the clcontext initialisation and using that instead of probing all cards.
Con Kolivas 411570d3 2011-07-30T16:36:19 Revert "Don't use asynchronous work with flushes as it decreases reliability and two threads per GPU achieves the same throughput." This reverts commit 7223508f7e5e77ca9b5ab7ffbc96817b3bbf2461. Bad idea. Need to work around sync lineup.
Con Kolivas decafea0 2011-07-30T16:36:02 Revert "Read buffers only after reading data back now that we're sync." This reverts commit 5f2c3151b474ac49635701ff3f56966c23abfd57. Bad idea. Need to rework around sync lineup.
Con Kolivas 5f2c3151 2011-07-30T16:33:43 Read buffers only after reading data back now that we're sync.
Con Kolivas 7223508f 2011-07-30T16:11:03 Don't use asynchronous work with flushes as it decreases reliability and two threads per GPU achieves the same throughput.
Con Kolivas f763b0db 2011-07-30T14:27:17 Don't free up any ram from the dying thread to avoid dereferences.
Con Kolivas 43faa113 2011-07-30T13:37:34 Use correct name in syslog.
Con Kolivas 37115c0e 2011-07-30T13:33:52 RPC call debugging is a mess with \r in it so remove it.
Con Kolivas 59b64087 2011-07-30T13:28:25 So we can pthread cancel a stuck thread, but can't pthread join it. And we can't tq freeze the old queue or we could hang here. And we need to re-initialise all the opencl contexts so send a test command and if it succeeds reinit the card.
Con Kolivas 74a07eb4 2011-07-30T13:14:59 Revert "Send threads message to stop and then send cancel message but don't pthread_join them if they're stuck nor reinit the opencl code to not hang everything." This reverts commit 62521f3e53f06920cd101c47c8645f026d9b90b1. Not enough to restart a GPU.
Con Kolivas e100fcc6 2011-07-30T13:14:47 Revert "Send ping to wake up new threads." This reverts commit bf4c3626bce572c0e313a1edcca8a04608723cff. Prepare to rollback.
Con Kolivas bf4c3626 2011-07-30T12:00:12 Send ping to wake up new threads.
Con Kolivas 62521f3e 2011-07-30T10:16:03 Send threads message to stop and then send cancel message but don't pthread_join them if they're stuck nor reinit the opencl code to not hang everything.
Con Kolivas b2cbaa1a 2011-07-30T08:21:17 Send a hung device a command. If it returns, try to reinitialise it.
Con Kolivas a702f599 2011-07-30T02:31:29 Disable the reinit_thread option till we know it actually works.
Con Kolivas bb575a55 2011-07-30T02:16:29 Reference correct GPU and only try to restart if it reaches DEAD.
Con Kolivas 947a74bf 2011-07-30T01:23:17 Differentiate thread failure from GPU failure by declaring a GPU sick first and trying to restart the thread without re-initialising the card. If that fails, then try once more at ten minutes and declare it dead. This should prevent an attempted re-initialising of the GPU from taking out other GPUs.
Con Kolivas 20ce1ebf 2011-07-29T20:40:57 Typo.
Con Kolivas 38037606 2011-07-29T11:11:42 Reimplement the per-thread getwork count with proper accounting at get_work().
Con Kolivas 0fe22d8d 2011-07-29T11:02:47 Revert "Only update the thread getwork queue count if it actually results in a getwork request from the server." This reverts commit 2e607d44f2baa8e8f1156e7bd074128e1e0e8eeb. The count looks far too difficult to add up with this change since many are queued generically.
Con Kolivas 2e607d44 2011-07-29T10:39:58 Only update the thread getwork queue count if it actually results in a getwork request from the server.
Con Kolivas 5b9bfedd 2011-07-29T00:40:47 Display the correct current hash as per blockexplorer, truncated to 16 characters, with just the time.
Con Kolivas c94737ce 2011-07-28T12:44:50 Add http:// if it's not explicitly set for URL entries.
Con Kolivas f0fe82ea 2011-07-28T10:49:36 Some Intel HD graphics support the opencl commands but return errors since they don't support opencl. Don't fail with them, just provide a warning and disable GPU mining.
Con Kolivas 10fa821e 2011-07-28T10:46:28 Update utility and efficiency figures when displaying them.
Con Kolivas 0006eb2d 2011-07-28T10:36:48 Make the "quiet" mode still update the status and display errors, and add a new --real-quiet option which disables all output and can be set once while running.
Con Kolivas da06a348 2011-07-28T10:03:31 The work length in the miner thread gets smaller but doesn't get bigger if it's under 1 second. This could end up leading to CPU under-utilisation and lower and lower hash rates. Fix it by increasing work length if it drops under 1 second.
Con Kolivas a0924933 2011-07-28T09:59:18 Restarting a hung GPU can hang the rest of the GPUs so just declare it dead and provide the information in the status.
Con Kolivas 45faff2e 2011-07-27T22:28:41 Add debugging output to all tq_pop calls.
Con Kolivas 2e2b2ba1 2011-07-27T22:20:57 Add debugging output to tq_push calls.
Con Kolivas 70fa8f31 2011-07-27T21:58:08 Make the display options clearer.
Con Kolivas c7978f11 2011-07-27T20:40:06 Dividing work is like the work is never removed at all so treat it as such. However the queued bool needs to be reset to ensure we *can* request more work even if we didn't initially.
Con Kolivas e82e3902 2011-07-27T16:40:52 If work has been cloned it is already at the head of the list and when being reinserted into the queue it should be placed back at the head of the list.
Con Kolivas 9c12d496 2011-07-27T16:29:37 Attribute split work as local work generation.
Con Kolivas 720032da 2011-07-27T15:11:57 Make sure to decrease queued count if we discard the work.
Con Kolivas 967acd39 2011-07-27T15:06:04 Don't put an extra work item in the queue as each new device thread will do so itself.
Con Kolivas 82698fbf 2011-07-27T15:01:08 Do away with queueing work separately at the start and let each thread grab its own work as soon as it's ready.
Con Kolivas 6cc8d22b 2011-07-27T14:53:43 Properly detect stale work based on time from staging and discard instead of handing on, but be more lax about how long work can be divided for up to the scantime.
Con Kolivas 45d54357 2011-07-27T14:29:51 Make cpu mining work submission asynchronous as well.
Con Kolivas 380d145c 2011-07-27T14:03:01 Make threads report out when they're queueing a request and report if they've failed.
Con Kolivas 324dd93b 2011-07-27T10:36:16 Don't take more than one lock at a time.
Con Kolivas 98f609b5 2011-07-27T10:31:44 Sanity check to prove locking.
Con Kolivas c7284028 2011-07-27T10:00:58 Abstract out the decay time function and use it to make hash_div a rolling average so it doesn't change too abruptly and divide work in chunks large enough to guarantee they won't overlap.
Con Kolivas a4889582 2011-07-27T09:41:52 Update both windows separately, but not at the same time to prevent the double refresh crash that old libncurses has. Do the window resize check only when about to redraw the log window to minimise ncurses cpu usage.
Con Kolivas 6f905932 2011-07-27T08:32:25 Only free the thread structures if the thread still exists.
Con Kolivas 40bc82d4 2011-07-27T02:03:59 Don't adjust hash_div only up for GPUs. Disable hash_div adjustment for GPUs.
Con Kolivas 1aadfc58 2011-07-27T01:41:16 Two redraws in a row cause a crash in old libncurses so just do one redraw using the main window.
Con Kolivas 93b284db 2011-07-26T23:17:25 Best to serialise the restarting of threads to avoid device initialisation issues.
Con Kolivas d5d56920 2011-07-26T22:41:42 Off by one limit in device selection.
Con Kolivas f9bc3771 2011-07-26T21:40:11 The first work item is tricky so don't try and divide it up to begin with.
Con Kolivas 1536e085 2011-07-26T20:48:05 Increase efficiency of slow mining threads such as CPU miners dramatically. Do this by detecting which threads cannot complete searching a work item within the scantime and then divide up a work item into multiple smaller work items. Detect the age of the work items and if they've been cloned before to prevent doing the same work over. If the work is too old to be divided, then see if it can be time rolled and do that to generate work. This dramatically decreases the number of queued work items from a pool leading to higher overall efficiency (but the same hashrate and share submission rate).
Con Kolivas 7e7a5f77 2011-07-26T15:16:39 Don't request work too early for CPUs as CPUs will scan for the full opt_scantime anyway.
Con Kolivas 6045c4d1 2011-07-26T13:47:18 Simplify gpu management enable/disable/restart code.
Con Kolivas fa17f034 2011-07-26T11:58:45 Implement much more accurate rolling statistics per thread and per gpu and improve accuracy of rolling displayed values.
Con Kolivas ce6af968 2011-07-26T10:45:52 Make the rolling log-second average more accurate.
Con Kolivas 7707ed4d 2011-07-26T10:26:03 Add a menu to manage GPUs on the fly allowing you to enable/disable GPUs or try restarting them. Keep track of which GPUs are alive versus enabled. Start threads for devices that are even disabled, but don't allow them to start working.
Con Kolivas 7143c25b 2011-07-25T16:44:24 The last pool is when we are low in total_pools, not active_pools.
Con Kolivas a53716dc 2011-07-25T13:59:34 Fix compiler warnings.
Con Kolivas b3d20b57 2011-07-25T13:55:01 Make the thread restart do a pthread_join after disabling the device, only re-enabling it if we succeed in restarting the thread. Do this from a separate thread so as to not block any other code. This will allow cgminer to continue even if one GPU hangs.
Con Kolivas a187fe1e 2011-07-25T13:00:44 Try to do every curses manipulation under the curses lock.
Con Kolivas 508c5c4b 2011-07-24T12:07:44 Detect when the primary pool is lagging and start queueing requests on backup pools if possible before needing to roll work.
Con Kolivas afcff070 2011-07-24T11:25:23 Load balancing puts more into the current pool if there are disabled pools. Fix.
Con Kolivas 27c7d2a4 2011-07-24T10:59:19 Disable a GPU device should the thread fail to init.
Con Kolivas 9a928e34 2011-07-24T08:55:16 Fix possible dereference on blank inputs during input_pool.
Con Kolivas 1a789a40 2011-07-24T08:51:07 Defines missing would segfault on --help when no sse mining is built in.
Con Kolivas fd473afe 2011-07-24T08:44:14 Revert "Free up resources/stale compilers." This reverts commit b4960ec36bca6663ecb0853752d0d777d81f9df1. Didn't help and might have caused other issues.
Con Kolivas f3c5f554 2011-07-24T08:42:07 Only try to print the status of active devices.
Con Kolivas 020cf7d6 2011-07-23T16:19:51 Build support in for all SSE if possible and only set the default according to machine capabilities.