Jeffrey Phillips Freeman discussing Bioalgorithms, Machine Learning, Computer Science, Electrical Engineering, HAM Radio and everything science.

As many of you know for many years now I’ve invested in, and had an interest in, cryptocurrency. However until now I never owned a mining rig simply because it didn’t seem profitable enough to be worth the trouble. However recently a few things changed; first, with Ethereum entering the scene it became a profitable endeavor with a ROI that would exceed the initial investment in less than a year. So after running all the numbers to make sure it was profitable, and testing it out on genesis-mining.com to see some cash flow first, I decided to give in and invest in a top of the line mining rig. Since I also do a lot of R&D in Machine Learning and Parallel Processing I figured it could double as a useful tool for my day job, one that will pay for itself when not actively being used. Really in many ways it is a win-win proposition.

Like so many other things I get into I had to take my endeavor to the extreme. I wanted the best, most profitable, mining rig I could build; something that would be equally powerful for my professional endeavors as well. This meant top of the line AMD OpenCL compatible GPUs with a significant number of cores, memory, and memory bandwidth. Of course I also needed to figure out how to accommodate four double-wide graphics cards on any normal motherboard. I spent about 2 days surfing NewEgg.com and Amazon.com and finally arrived at all the parts to build this beautiful mining rig.

UPDATE: Added some velcro to secure that 4th card. Looks much better now and is a bit safer than before.

The specifications are as follows:

4x Radeon R9 Fury X Graphics Cards
1x AMD FX 4350 Unlocked Quad Core Processor (4.2 Ghz)
1x Corsair RM Series, RM1000, 1000 Watt PSU
1x Thermaltake CORE P5 ATX Open Frame Case
1x ASUS Crosshair V Formula-Z Motherboard
4x Kingston HyperX FURY 4GB 1600MHz DDR3 Memory
1x Samsung 850 EVO 120GB SATA III SSD Harddrive
4x PCI-e X16 Reisers


In the end once it was all setup and configured this beast produced an impressive hash rate.

111,149,056 hashes per second (111 MH/s)


With current network parameters; that means I mine about one block each day at about 5 ETH per block. Market prices fluctuate wildly so by the time you read this these numbers may change, but that is somewhere on the order of about 10\$ per day. So the cost invested to build the computer should pay for itself in about a year assuming there aren’t any significant changes to the network in that time. Not too shabby.

It took me about 2 days to fully assemble the box and get it to the point where it was mining Ethereum. I am an Arch Linux fan so most of that time I spent trying to get it to run under Arch Linux. While normally Arch Linux is a pleasure to work with, no matter what I tried i found it impossible to get it to get the C++ Ethereum client to mine successfully. There were a slew of problems, with xorg-server being the wrong version as a dependency, and OpenCL throwing segfaults complaining “PPLib wasn’t enabled”. In the end I gave up and moved to Ubuntu. While I’m not usually a huge Ubuntu fan for day-to-day stuff, in this case it really did make the setup much easier.

Once Ubuntu was freshly installed on the system I just had to add a few repositories and install a few packages. I found a tutorial which described the process pretty accurately. Only difference was I didn’t find i had to install AMD-APP-SDK or the C++ Ethereum code manually, all these were available precompiled in the repositories so I just installed them with apt-get.

One thing did perplex me though; anytime I tried to run the miner using the eth command as described in the tutorial it would run for a minute and then abort claiming it was “killed” without any details. After racking my head for hours I found that if i ran it with the ethmine command instead it ran successfully. Here are the commands I ran to get the miner going.

geth --rpc --rpccorsdomain localhost &
ethmine -G


Tweaking

Never content to just leave things as they are, I wanted to try to find ways to tweak the settings to boost performance slightly. While I wouldn’t be willing to run a custom kernel, since security is still a major concern, that left me mostly with just the ethmine settings with which to tweak. Two settings in particular struck me as useful, as they effected how much work is sent to the GPU at one time. These were --cl-local-work and --cl-global-work. Knowing I had a top of the line GPU I figured boosting these values a bit might increase performance. Indeed they did, but I had to play with a lot of different numbers to get the benchmarks to max out. Finally the max hash rate I mentioned above of 111,149,056 hashes per second (111 MH/s) was achieved with the following command. This was about a 10% improvement over the default settings.

ethmine -G --cl-local-work 256 --cl-global-work 8192


I tried enabling the CPU too with --enable-opencl-cpu however that produced a segfault. So I left it out.

Conclusions

With an ROI that pays for itself in under a year, and the future usefulness of such a rig, it is really a no brainer for me to have set this up. It was also a lot of fun, and profitable. Though I think a cost-analysis might be useful to compare different rigs and hash rates to ultimately figure out what is the cheapest rig for the output it produces. Sadly I don’t have the information on other rigs to be able to do this, nor do I have the time. Also it should be noted that while this rig works really well for Ethereum it would be far less effective on other cryptocurrency where the memory bandwidth isn’t as critical; so don’t expect it to be the ultimate rig for all cryptocurrency mining needs.

I hope that helps you guys in setting up your own mining rigs, happy mining!