cudaminer-param-checker

An application to check a large set of parameters which can be passed to `cudaminer` in order to figure out the optimal combination with console and application GUI frontend


Keywords
cudaminer, bitcoin, bitcoin-mining
License
GPL-3.0
Install
pip install cudaminer-param-checker==1.0

Documentation

cudaminer_param_checker.py is a simple attempt to allow users to find out about the parameters for a maximal hash/s rate which can be acchieved with cudaminer using cudaminer's benchmark function. The test currently works with a naive brute-force approach which tries the cartesian product of all combinations. A GUI for controlling parameters and visualizing results in a table is provided. Each test takes between 30 and 90 seconds. The script supports saving intermediate results to file and resuming the tests. When you resume a previous run pay attention that the state of the system (I/O and system load) are not too different in order to avoid messing up the results.

Test parameters

I'm testing the script on a Lenovo IdeaPad Z-500 with an NVIDIA GeForce GT740M. I'll publish my programming result before seriously researching what test parameters acutally mean (there're most certainly several combinations which don't make sense and can be skipped). My experience of up to 800 % of the hash rate I acchieved with specific parameter recommendations speak for themselves. Some value intervals in the test which serve for combinations generation are made up without basic understanding of upper and lower bounds, i.e. some (possibly optimal) value combinations might not be covered by the test.

If you're an expert you might want to use the tool to investigate impact of a parameter or combinations in a certain range.

Results

The values in the benchmark are almost never reached during pool mining over stratum+tcp. The script results lie at around 140 % of the values experienced during actual pool mining. The results have not yet been evaluated against solo mining. The same device makes 24 Mhash/s with bitminter which might indicate that either this script or cudaminer (like I set it up on the test system) or one of its dependencies don't work properly.

Running

Invoke

python ./cudaminer_param_checker.py

in the source root. This will run the script with a very large set of test parameters which is currently not configurable. Note that depending on your system setup you might need to add some commands, e.g. on Ubuntu 14.10 amd64 I need to run

env LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/lib:$LD_LIBRARY_PATH python cudaminer_param_checker.py

after installing the nvidia and removing the nouveau driver and installing the NVIDIA CUDA toolkit according to http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html (note the hints in the instructions regarding i386 systems). The invokation of extra programs, like optirun, can be configured as prepended command within the GUI.

Some GUI elements simply don't have any effect at all and are ignored. The console GUI is currently unmaintained and therefore might not work.

Prerequisites

Install the wx python bindings, e.g. on Ubuntu with sudo apt-get install python-wxgtk3.0. python setup.py build && sudo python setup.py install will do the rest.

Internals

The script uses the python itertools and shelve package which allows quite efficient memory usage, therefore an almost arbitrary large set of parameters won't cause a crash of the application or worse your system due to missing memory - but the time it takes to run all the tests can easily go up to weeks and months.

The script does nothing but parsing the output of cudaminer --benchmark --no-autotune with the test arguments which leaves a lot of room for improvement, especially regarding integration with the cudaminer source directly.