Client build with CUDA support.

The following will guide you through the process of setting up your linux-based system in preparation of, and compiling the cruzbit source with CUDA support (for GPU mining with Nvidia hardware). These instructions should work for most linux-based systems (and possibly macOS, too), however they are not 'written in stone.' A familiarity with the linux command line, and operating system will help when encountering issues (but we hope there aren't any).

These instructions were assembled by combining asdvxgxasjab's original build notes with Set Animals' Ubuntu build steps Gist, along with some special spices in a big bowl.

Notes

I highly suggest you drop into root for this entire processs. It is not required, but will remove the headache of trying to change system settings and install drivers from a regular user account.

sudo su
System Setup

Bring the system up to date, and install some build tools. The apt, make, and update-alternatives commands require sudo (if you are not running as root).

apt update
apt -y upgrade
apt install -y build-essential cmake git

wget http://www.cmake.org/files/v3.12/cmake-3.12.1.tar.gz
tar -xvxf cmake-3.12.1.tar.gz
cd cmake-3.12.1
./configure
make
make install
update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force
Install Nvidia Drivers

Install Nvidia display drivers.

apt search nvidia-driver

Examine the list of packages returned from the search command, locating the latest driver version in the format nvidia-driver-xxx, for example nvidia-driver-390. Use this package name in the following step. Then reboot your system after installation completes.

apt install nvidia-driver-xxx
reboot now

Install Nvidia development toolkit. This absolutely must be run as root.

The script may take a little while to run, and will present its own 'window' with installation options. You will need to type "accept" to accept the license agreement, and then scroll to "Install" and press enter after choosing which components should be installed (leave them all selected).

wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.168_418.67_linux.run
sh cuda_10.1.168_418.67_linux.run

If you encounter errors during this procedure, you probably did not run the above as root. This Stack Exchange answer may help you dig yourself out of that hole.

Install Go

This will install the Go language compiler and utilities. You can skip this step if you already have Go installed on your system. If you have Snap Store package manager available, Go can be installed easily.

sudo snap install go --classic

If you can not use Snap, you can install Go like this. You'll have to adjust the first line to point to the appropriate bundle for your operating system and architecture. The chown, mv, and nano commands witll require sudo if you are not already running as root.

wget https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz
tar -xvf go1.12.7.linux-amd64.tar.gz
chown -R root:root ./go
mv go /usr/local

nano ~/.profile

You can substitute nano with your favorite text editor. When your .profile file is open, append the following lines to the end of the file:

export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

Save the file, and exit. Then load the new settings.

source ~/.profile
Build cruzbit

With Go installed, you can now build the cruzbit executables.

export GO111MODULE=on
go install github.com/cruzbit/cruzbit/client
go install github.com/cruzbit/cruzbit/wallet
Build CUDA Library

The cruzbit GPU mining library is built separately. make install requires sudo.

cd
mkdir -p go/src/github.com/asdvxgxasjab/
cd go/src/github.com/asdvxgxasjab/
git clone https://github.com/asdvxgxasjab/cruzbit.git
cd cruzbit
git checkout cuda
cd cuda
mkdir build
cd build
cmake ..
make
make install
cd ../../client
go install -tags cuda
Configure & Run

The previous step will build a libcruzbit_cuda.so file (or cruzbit_cuda.dll on Windows). We need to reference this file when we run the client. It should be in /usr/local/lib if the make install ran properly in the section above. If it did not, or if for some reason the file ended up somwhere else, adjust the path to the containing folder below.

LD_LIBRARY_PATH=/usr/local/lib client -numminers 1 ...

Set -numminers X to be the number of discrete GPUs in your system, and then add the rest of your client configuration options (to replace ...).

Note that the first line output by the client should include CUDA initialized. If it does not, you are mining with CPU.