Post
Topic
Board Mining (Altcoins)
Re: WildRig: new miner for Wild Keccak algo
by
locbet
on 16/07/2018, 10:11:09 UTC
WildRig 0.9.18 beta

Download for Windows
(dependencies: Visual C++ Redistributable 2015 x64)

Download for Linux
(dependencies: libcurl4, libuv1, libmicrohttpd10)

Custom package for HiveOS
(dependencies: libcurl4, libuv1, libmicrohttpd10)

all version can be found here

difference from minerd and ccminer:
- better hashrate on poolside for NVIDIA cards(because of more accepted shares). AMD can get some improvement too, but less significant, still gathering some statistics
- no 100% load of CPU core per NVIDIA card like in minerd
- fast scratchpad update(less hashrate drop when new addendum blocks received)
- no limit for amount of GPU's as in minerd
- watchdog(see description for --no-watchdog parameter)
- new interface
- API to check miner stats via web

hashrate clarification: as described above, for NVIDIA's there can be good improvement on poolside. But only if you use a rig. One card will be fine with minerd and ccminer(in some cases can be fine even with 2-3). In miner itself most of the time hashrate will be +/- with that you can get with other miners.

known issues:
- all shares are Low difficulty on some old hardware with OpenCL 1.x support(like Radeon HD7xxx, but GeForce 750Ti doing great). Try to use new option --opencl-force1x

Testing and reporting issues are welcome! Smiley

coins:
- Boolberry
- Purk

dev-fee:
currently 2% only, fully compensates on NVIDIA's because of improvements. For AMD cards still gathering some statistics to decide lowering dev-fee for those cards.

TODO:
- miner uptime value in API(in addition to connection uptime)(done, will be in next build)
- improvements for scratchpad management(work in progress)
- HiveOS integration(work in progress, have some troubles with stats...)
- ADL/NVML for monitoring videocards health
- open source some day once all things will be done good Smiley

Example of config.json for two videocards:
Code: (json)
{
    "background": false,
    "colors": true,
    "donate-level": 0,     // default donation level is 2%, you can increase it if you want :D
    "log-file": null,      // set it to "log.txt" if needed
    "print-time": 60,      // print time for hashrate statistics
    "print-full": false,   // print hashrate for each videocard
    "print-level": 1,      // level of info to be printed. 1 - default, 2 - some additional info like scratchpad updates, 3 - packets "send to"/"recieved from" pool

    "retries": 1000,
    "retry-pause": 10,     // time before reconnect
    "max-rejects": 16,     // number of one by one rejects after which miner will reconnect to the pool
    "job-timeout": 60,     // timeout for absence of new job from pool in sec. before reconnect(can be useful on "beast" rigs)
    "no-watchdog": false,  // disable checking how long videocards are running OpenCL kernel(more than 5 sec. terminates the miner)

    "opencl-platform": 1,  // if you have no integrated GPU - change it to 0, or try 2 in some cases with AMD/NVIDIA in one PC

    "scratchpad-url": "http://eu-bbr.luckypool.io/scratchpad.bin",  // where miner can download scratchpad
    "scratchpad-file": "scratchpad.bin", // where to save it(including file name), use double \\ if you want to set full path(Win only)

    "strategy": 0,         // 0 - devide work for equal parts for each card
                           // 1 - all cards working as one, can be better for static diff

    "threads":
    [
        // if you have more videocards, just copy section below more times and increase index for every new videocard
        {
            "index": 0,
            "intensity": 256,       // good point to start is 256, decent cards can use 1024, try different values. But don't set it high if hashrate is not increasing
            "worksize": 0,          // don't touch it if you don't know what is it :)
            "affine_to_cpu": false,
        },
        {
            "index": 1,
            "intensity": 256,
            "worksize": 0,
            "affine_to_cpu": false,
        },
    ],

    "pools":
    [
        // Currently no support for failover strategy using more than one pool
        {
            "url": "bbr.luckypool.io:5577",  // URL of mining server
            "user": "WALLET", // wallet address
            "pass": "", // password if it needed
        },
    ],

    // same as in XMRig
    "api":
    {
        "port": 0,            // port for the miner API https://github.com/xmrig/xmrig/wiki/API
        "access-token": null, // access token for API
        "worker-id": null     // custom worker-id for API
    }
}

Example of command-line start for two videocards(with loop if miner crash, or executing custom command if it exited because of videocard hangs for more than 5 sec.):
Code: (bat)
@echo off

:loop
wildrig.exe --opencl-platform=1 --opencl-devices=0,1 --opencl-launch=256x0 --url=bbr.luckypool.io:5577 --user=WALLET --pass=IFNEEDED --scratchpad-file=scratchpad.bin --scratchpad-url=http://eu-bbr.luckypool.io/scratchpad.bin
if ERRORLEVEL 1000 goto custom
timeout /t 5
goto loop

:custom
echo Custom command here
timeout /t 5
goto loop

If it fails, try different --opencl-platform parameter with values 0 or 2 instead of 1 used above. You can check available platforms - just run wildrig with parameter --print-platforms. Simplified example for Linux:
Code: (bash)
#!/bin/bash
while true
do
./wildrig --opencl-platform=1 --opencl-devices=0,1 --opencl-launch=256x0 --url=bbr.luckypool.io:5577 --user=WALLET --pass=IFNEEDED --scratchpad-file=scratchpad.bin --scratchpad-url=http://eu-bbr.luckypool.io/scratchpad.bin
sleep 5
done

what is luck(experimental value):
every videocard do some amount of hashes per iteration, and there should be done around diff(set by pool) hashes before miner will find a share. This will be 100% luck. If videocards do less hashes and find a share - luck will be above 100%, more - it will be lower than 100%. But because of random nature, luck is always differ. A lot of things have influence on luck, but if you get low numbers(after at least ~30 minutes statistic from start or dev-fee mining finished) take a look on:
- how good variable diff on pool. Giving you high difficulty jobs, which are not suitable for your hashpower can lead to less luck
- high intensity, more than needed for best hashrate, can lead to less luck in cases when miner got a new job, but videocard is still hashing and don't know about it. That last hashes will be wasted, also you can get stale share

optimal intensity:
try to set intesity as low as possible, but not lower than point where hashrate goes down a lot

optimal strategy:
if you use static diff, probably strategy set to 1 will be better in this case. At least it's true for my rigs with static diff set to hashrate_of_rig * 10(e.g. 4820kH/s rig uses diff 48000000).

Changelog:
Code:
0.9.18
- fixed --no-watchdog parameter, now it should work
- set timeout for watchdog to 30 seconds now
- now if downloading speed of scratchpad is 512 bytes for more than 30 seconds, miner will restart downloading it

0.9.17
- moved scratchpad update into a better place, this should decrease amount of "Low difficulty" shares before "new job"
- added general uptime value to API

0.9.16
- code much more safe now
- fixed problem with watchdog not working(there was a bug with reading parameter no-watchdog)

0.9.15
- improved watchdog, now it works separately and won't decrease hashrate for AMD's when use low intensity values
- improved scratchpad fail handling, now miner will try to reset it to state saved on disk and login again, only then redownload it if fail again
- added experimental parameter --opencl-force1x to support old hardware like Readon HD 7xxx

0.9.14
- fixed small memory leak
- implemented watchdog, now miner will exit with code 1000 if gpu hangs in OpenCL kernel for more than 5 sec.(can be disabled with parameter --no-watchdog)

0.9.13
- reworked strategy a bit, now nvidias should support 0 and 1 too. Changed default strategy to that used in other miners, should be better with vardiff
- fixed processing error "invalid miner height, re-download scratchpad", now miner definitely will redownload it

0.9.12
- fixed "Duplicate share" error after donation mining finished, same was possible to reproduce with pause/resume commands

0.9.11
- new parameter --print-level
- more accurate luck calculation
- dynamic size for scratchpad buffer(no need in recompilation in future, less RAM used for PURK coin to mine :))

0.9.10
- now videocards sorted by BusID
- added luck calculation(need testing)
- fixed crash when logging and --print-full is used
- few more checks for scratchpad fails(also in some cases miner will reconnect if it failed and only then redownload it if this not solve the problem, need testing)

0.9.9:
- fixed JSON decode failed
- more checks for scratchpad failure

0.9.8:
- added validation scratchpad at start and redownloading it if needed
- now should work on old cards too
- added --job-timeout parameter, now miner will disconnect if there is no new job for some time and videocards found all shares(could help for "beast" rigs on Vega)
- a bit more safe code

0.9.7:
- fixed an issue when miner can't redownload scratchpad because of some accident on pool side and going into infinite loop

0.9.6:
- improved logic, now videocard will continue hash even if it waits for new job, just to avoid situation with lowering clocks. Will make something like powersave option later
- added parameter --max-rejects

"donate-level": 0,     // default donation level is 2%, you can increase it if you want Cheesy not change always 2%. I'm try 2.5% --> tool always show 2%
Please add more function on Tool and API WEB:
1. Fan speed
2. GPU Temperature


Thanks