To wrap up this GRC mining miniseries we are going to have a look at CPU mining, with emphasis on how to optimise the BOINC performance of your CPU in order to maximise your daily GRC earnings. As with GPUs, for most other cryptocurrencies this takes the form of downloading the most recent miner (usually as suggested by the coin's wiki) and running the program. For Gridcoin, optimising yield is a little more complicated.
As a reminder, we will only be addressing optimal GRC earning rate, not the philanthropic value of the projects being considered. As advancing science is a fundamental goal of the Gridcoin network, I urge you to not blindly chase profits, and dedicate some compute to projects that speak to you the most on a personal level. Further, if you have already read my post on GPU project selection you may have already covered some of the content we are about to go over.
Understanding Your CPU
There are two significant hardware specifications regarding your CPU that will govern the performance of the chip. These are the number of cores (and by extension threads), and the clock speed. To find out the specs of your machine's CPU, we can request Windows to run the DirectX Diagnostics Tool. The easiest way to do this is hitting start, typing 'run', and entering 'dxdiag', just like we did in the previous article on GPU projects.
If you are asked whether or not you would like to check if your drivers are digitally signed, choose 'no'. You will now be presented with a screen like this:
The fields highlighted in yellow tell us that in my machine I have a total of 4 CPUs available, running at a clock speed of 3.20GHz. Note that the DirectX Diagnostics Tool makes no distinction between cores and threads, labeling them all as cores. For example, if you had an i7 6700 in your machine, the DirectX Diagnostics Tool will label that CPU as possessing 8 cores. In reality, you are fielding 4 cores which are able to function as 8 virtual processors through hyper-threading.
Picking The Project
While the clock speed we looked up in the previous step will determine our BOINC compute rate, and thus our GRC mining rate, there is nothing we can do in terms of optimisation at this stage unless you are looking to buy new hardware. We are going to focus on getting the most use out of the threads you have available to your machine. Your first step will be to go to the Gridcoin Whitelist and look what CPU projects are available. Then, go to the Gridcoinstats Website and sort all the whitelisted projects by number of hosts:
All Gridcoins mined each day are split evenly between the projects, and then split between each project's contributors based on their contribution relative to the other contributors. As such, we want to contribute the largest fraction of the overall compute to a project. Pick one of the projects with the fewest hosts, and assign your CPU to that. Make sure this is a CPU project! If you assign your CPU to a GPU-focused project with CPU jobs, the GPUs will outperform your CPU by such a wide margin you will earn practically nothing.
At the time of writing, Tn-grid is a solid choice.
Depending on what project you picked, you may be finished at this stage. However, some projects have a lot of different applications (the jobs you crunch) that run on varying numbers of threads. These are listed on the homepage of the project. Sometimes, specific job configurations may leave some threads idle. For example, YAFU occasionally sends out lots of applications that require 8 threads. If you have a 12 thread machine (I have one right next to me) and you are only queuing 8 thread jobs, 33% of your CPU time is going to waste. If this is the case, make sure you add another project to make use of any idle CPU time.
An exception to the above rule will be if you are also trying to optimise the performance of your GPU. In this case, you want to leave some CPU time idle to do the co-processing of the job your GPU is crunching, lest it be throttled. Remember, GPUs crunch far faster than CPUs, so you don't want to throttle yours. To control how much of your CPU time is assigned to CPU jobs, in your BOINC manager click 'options' --> 'computing preferences', and modify the highlighted field:
Make sure you modify the '% of the CPUs' field, and not the '% of CPU time' field. The latter is useful primarily if your machine is overheating, and can else be left at 100%. If you are not running any GPU jobs, then you can leave both fields at 100%.
Further CPU Optimisation
Having followed the above steps you can further optimise your CPU's BOINC performance by doing one or more of the following:
- Overclocking and overvolting your CPU (advanced users only - you can brick your device)
- Configure BOINC to run as a service install (can yield a marginal performance boost)
These options are both outside the scope of what I would like to discuss in this article. If you have any questions about this, feel free to leave a comment below and I would be happy to help.
Good luck, and don't be afraid to ask for help if you need it!