New version: 2.2.3Links for both binary and source in top post.
Note this version has extra goodness for mining on p2pool, though other pools will of course benefit too.
Human readable summary of possibly user visible changes:
- New opencl kernels to work half decently on GCN hardware 79xx and to make phatk2 work on them, NVIDIA devices and much older ATI GPUs.
- OpenCL Platform information is now available when cgminer is called with --ndevs, including what devices are available on each platform. cgminer also now supports the --gpu-platform command line option which allows you to choose what platform to use, should you have multiple installed (eg both NVIDIA and ATI, or mutliple SDKs from ATI). Note you MUST delete any *.bin files generated before starting for new binaries to be generated using the chosen platform.
- Some pools support an extension called "submitold" which recommends you actually submit stales. Instead of universally throwing them out (default cgminer behaviour) or submitting all of them (when you enable --submit-stale), this allows the pool to tell cgminer what it wants you to do. On pools that your stale count doesn't matter (like p2pool) there is a theoretically miniscule chance this share is worth submitting, and on merged mining pools, it might be okay to submit shares from a valid BTC block but not a valid NMC block. You can actually see this in action in this latest version with output that looks like this:
[2012-02-06 22:15:25] Stale share detected, submitting as pool requested
[2012-02-06 22:15:25] Rejected 00000000.302ced5f.c73e1884 GPU 2 thread 2 pool 0
As you can see, it was still rejected by p2pool here, but that is harmless.
- More work is "rolled" on longpoll. This should minimise the dip in hashrate across longpolls, and decrease the "pool is not providing work fast enough" warnings on pools that support n-rolltime. It will also increase the dreaded "efficiency" rating.
- GPU threads on the same GPU now start work staggered, with the first thread on each GPU having no delay. This means all GPUs should be busy ahead of extra threads on a GPU that is already busy. This should further decrease the dips across block changes/longpolls/network delays.
- Hopefully the "linked GPU" (eg 5970) scenario where a GPU would be apparently randomly turned off is fixed.
- When a GPU hangs now, the fan control should still keep trying to keep it at target temperature if it's hung running flat out. This should decrease crashes.
- The --donation feature is GONE.
- The wrong "thread" will not be reported if a GPU is disabled.
- Some networks can take extraordinarily long for the pool detection to work so the 15 second timeout has been increased to 60 seconds. This will help those who have had apparently everything set up fine but ended up with pool communication failure at startup.
- Enabling the -T text only option will guarantee that the formatted "curses" output will never occur. This makes debugging easier.
- Bitforce devices should actually work now.
- More information available (last share) in the changed RPC API.
---
Changelog:
2.2.3:
- Revert "Rewrite the convoluted get_work() function to be much simpler and roll
work as much as possible with each new work item." This seems to cause a race on
work in free_work(). Presumably other threads are still accessing the structure.
2.2.2:
- Provide support for the submitold extension on a per-pool basis based on the
value being detected in a longpoll.
- Don't send a ping to a dynamic device if it's not enabled as that will just
enable it for one pass and then disable it again.
- Rewrite the convoluted get_work() function to be much simpler and roll work as
much as possible with each new work item.
- Roll as much work as possible from the work returned from a longpoll.
- Rolling work on each loop through the mining thread serves no purpose.
- Allow to stage more than necessary work items if we're just rolling work.
- Replace divide_work with reuse_work function used twice.
- Give rolled work a new ID to make sure there is no confusion in the hashtable
lookups.
- Remove now-defunct hash_div variables.
- Remove unused get_dondata function.
- Silence ADL warnings.
- Silence unused parameter warnings.
- Stagger the restart of every next thread per device to keep devices busy ahead
of accessory threads per device.
- Deprecate the --donation feature. Needlessly complex, questionable usefulness,
depends on author's server and a central pool of some kind, and was not heavily
adopted.
- It's devices that report back now, not threads, update message.
- Continue auto-management of fan and engine speeds even if a device is disabled
for safety reasons.
- No need to check we're highest performance level when throttling GPU engine
speed.
- Abstract out tests for whether work has come from a block that has been seen
before and whether a string is from a previously seen block.
- Probe but don't set the timeout to 15 seconds as some networks take a long
time to timeout.
- Remove most compiler warnings from api.c
- Add last share's pool info in cgpu_info
- Allow the OpenCL platform ID to be chosen with --gpu-platform.
- Iterate over all platforms displaying their information and number of devices
when --ndevs is called.
- Deprecate main.c
- Some networks can take a long time to resolve so go back to 60 second timeouts
instead of 15.
- Only enable curses on failure if curses is desired.
- Fix warnings in bitforce.c
- Bugfix: Need to open BitForce tty for read-write
- Fix various build issues.
- Modularize code: main.c -> device-cpu + device-gpu
- Fix phatk kernel not working on non-bitalign capable devices (Nvidia, older
ATI).
- Update poclbm kernel for better performance on GCN and new SDKs with bitalign
support when not BFI INT patching. Update phatk kernel to work properly for non
BFI INT patched kernels, providing support for phatk to run on GCN and non-ATI
cards.
- Return last accepted share pool/time for devices
- Display accepted share pool/time for CPUs
- Bug intensity always shows GPU 0
- Update example web miner.php to use new API commands