kawpow miner with OpenCL, CUDA and stratum support
kawpowminer is an ProgPoW GPU mining worker: with kawpowminer you can mine Ravencoin, which relies on an ProgPoW-based Proof of Work thus including Ethereum ProgPoW and others. This is the actively maintained version of kawpowminer. It originates from the ethminer project. Check the original ProgPoW implementation and EIP-1057 for specification.
Standalone executables for Linux, macOS and Windows are provided in the Releases section. Download an archive for your operating system and unpack the content to a place accessible from command line. The kawpowminer is ready to go.
Builds | Release |
---|---|
Last | GitHub release |
If you have trouble with missing .dll or CUDA errors, please install the latest version of CUDA drivers or report to project maintainers.
The kawpowminer is a command line program. This means you launch it either from a Windows command prompt or Linux console, or create shortcuts to predefined command lines using a Linux Bash script or Windows batch/cmd file. For a full list of available command, please run:
kawpowminer --help
Connecting to MinerMore Testnet:
./kawpowminer -P stratum+tcp://<wallet>.worker@rvnt.minermore.com:4505
or
kawpowminer.exe -P stratum+tcp://<wallet>.worker@rvnt.minermore.com:4505
After cloning this repository into kawpowminer
, it can be built with commands like:
cd kawpowminer
git submodule update --init --recursive
mkdir build
cd build
cmake .. -DETHASHCUDA=ON -DETHASHCL=ON -DAPICORE=ON
make -sj $(nproc)
Open "Developer Command Prompt for VS 2019"
cd C:\Users\USER_NAME\PATH_TO_KAWPOW\kawpowminer
git submodule update --init --recursive
mkdir build
cd build
cmake -G "Visual Studio 16 2019" -A X64 -H. -Bbuild -DETHASHCL=ON -DETHASHCUDA=ON -DAPICORE=ON ..
cd build
cmake --build . --config Release
(Yes, two nested build/build directories.)
ProgPoW can be tuned using the following parameters. The proposed settings have been tuned for a range of existing, commodity GPUs:
PROGPOW_PERIOD
: Number of blocks before changing the random programPROGPOW_LANES
: The number of parallel lanes that coordinate to calculate a single hash instancePROGPOW_REGS
: The register file usage sizePROGPOW_DAG_LOADS
: Number of uint32 loads from the DAG per lanePROGPOW_CACHE_BYTES
: The size of the cachePROGPOW_CNT_DAG
: The number of DAG accesses, defined as the outer loop of the algorithm (64 is the same as Ethash)PROGPOW_CNT_CACHE
: The number of cache accesses per loopPROGPOW_CNT_MATH
: The number of math operations per loopThe value of these parameters has been tweaked between version 0.9.2 (live on the Gangnam testnet) and 0.9.3 (proposed for Ethereum adoption). See this medium post for details.
Parameter | 0.9.2 | 0.9.3 | KAWPOW |
---|---|---|---|
PROGPOW_PERIOD |
50 |
10 |
3 |
PROGPOW_LANES |
16 |
16 |
16 |
PROGPOW_REGS |
32 |
32 |
32 |
PROGPOW_DAG_LOADS |
4 |
4 |
4 |
PROGPOW_CACHE_BYTES |
16x1024 |
16x1024 |
16x1024 |
PROGPOW_CNT_DAG |
64 |
64 |
64 |
PROGPOW_CNT_CACHE |
12 |
11 |
11 |
PROGPOW_CNT_MATH |
20 |
18 |
18 |
KAWPOW_EPOCH_LENGTH = 7500
The list of current and past maintainers, authors and contributors to the kawpowminer project. Ordered alphabetically. Contributors statistics since 2015-08-20.
Name | Contact | |
---|---|---|
Jeremy Anderson | @Blondfrogs | --- |
Traysi | @traysi | -- |
Andrea Lanfranchi | @AndreaLanfranchi | ETH: 0xa7e593bde6b5900262cf94e4d75fb040f7ff4727 |
EoD | @EoD | |
Genoil | @Genoil | |
goobur | @goobur | |
Marius van der Wijden | @MariusVanDerWijden | ETH: 0x57d22b967c9dc64e5577f37edf1514c2d8985099 |
Paweł Bylica | @chfast | ETH: 0x8FB24C5b5a75887b429d886DBb57fd053D4CF3a2 |
Philipp Andreas | @smurfy | |
Stefan Oberhumer | @StefanOberhumer | |
ifdefelse | @ifdefelse | |
Won-Kyu Park | @hackmod | ETH: 0x89307cb2fa6b9c571ab0d7408ab191a2fbefae0a |
Ikmyeong Na | @naikmyeong |
All bug reports, pull requests and code reviews are very much welcome.
Licensed under the GNU General Public License, Version 3.
The new WDDM 2.x driver on Windows 10 uses a different way of addressing the GPU. This is good for a lot of things, but not for ETH mining.
Because of the GDDR5X memory, which can't be fully utilized for ETH mining (yet).
Only GCN 1.0 GPUs (78x0, 79x0, 270, 280), but in a different way. You'll see that on each new epoch (30K blocks), the hashrate will go down a little bit.
Not really, your VRAM must be above the DAG size (Currently about 2.15 GB.) to get best performance. Without it severe hash loss will occur.
The default parameters are fine in most scenario's (CUDA). For OpenCL it varies a bit more. Just play around with the numbers and use powers of 2. GPU's like powers of 2.
--cuda-parallel-hash
flag do?@davilizh made improvements to the CUDA kernel hashing process and added this flag to allow changing the number of tasks it runs in parallel. These improvements were optimised for GTX 1060 GPUs which saw a large increase in hashrate, GTX 1070 and GTX 1080/Ti GPUs saw some, but less, improvement. The default value is 4 (which does not need to be set with the flag) and in most cases this will provide the best performance.
Genoil's fork was the original source of this version, but as Genoil is no longer consistently maintaining that fork it became almost impossible for developers to get new code merged there. In the interests of progressing development without waiting for reviews this fork should be considered the active one and Genoil's as legacy code.
No, use geth, the go program made for ethereum by ethereum.
There is an environment var CUDA_DEVICE_ORDER
which tells the Nvidia CUDA driver how to enumerates the graphic cards.
The following values are valid:
FASTEST_FIRST
(Default) - causes CUDA to guess which device is fastest using a simple heuristic.PCI_BUS_ID
- orders devices by PCI bus ID in ascending order.To prevent some unwanted changes in the order of your CUDA devices you might set the environment variable to PCI_BUS_ID
.
This can be done with one of the 2 ways:
Linux:
/etc/environment
file and add a line CUDA_DEVICE_ORDER=PCI_BUS_ID
export CUDA_DEVICE_ORDER=PCI_BUS_ID
Windows:
setting environment windows control panel
using your favorite search engine)set CUDA_DEVICE_ORDER=PCI_BUS_ID
or setx CUDA_DEVICE_ORDER PCI_BUS_ID
. For more info about set
see here, for more info about setx
see hereError: The code execution cannot be processed because nvrtc64_102_0.dll was not found.
or
error while loading shared libraries: libnvrtc.so.10.2: cannot open shared object file: No such file or directory
You have to upgrade your Nvidia drivers. Install cuda 10.2.