/usr/include/bits/floatn.h(61): error: invalid argument to attribute "__mode__" /usr/include/bits/floatn.h(73): error: identifier "__float128" is undefined
--- a/usr/include/bits/floatn.h 2017-09-13 16:00:37.079654880 +0200 +++ b/usr/include/bits/floatn.h 2017-09-13 16:00:00.999104815 +0200 @@ -28,7 +28,8 @@ support, for x86_64 and x86. */ #if (defined __x86_64__ \ ? __GNUC_PREREQ (4, 3) \ - : (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4))) + : (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4))) \ + && !defined(__CUDACC__) # define __HAVE_FLOAT128 1 #else # define __HAVE_FLOAT128 0
如果用了CUDACC就define __HAVE_FLOAT128 0。
I installed NVIDIA drivers via this method: https://www.reddit.com/r/EtherMining/comments/6ip97k/ubuntu_1604_no_cuda_devices_detected_on_gtx_1070/dj859ss/
Now we make nvidia generate an xorg.conf file that we'll need later:
nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28 --separate-x-screens
So now we have NVIDIA installed and our conf file made, now what? Gotta have the server set some stuff up on boot for me so I don't have to do it by hand every time.
sudo nano /etc/rc.local
In here I have:
sudo nvidia-smi -pm ENABLED
sudo nvidia-smi -pl 110
X :0 & sleep 5 export DISPLAY=:0 sleep 3 sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=75" -a "[gpu:0]/GPUGraphicsClockOffset=-200" -a "[gpu:0]/GPUMemoryTransferRateOffset=1200" exit 0
Please for the love of god, google the nvidia settings and see what each does and if it applies to you. GPUFanControlState so I can control the fan speed. GPUTargetFanSpeed so I can lock it at a certain speed (75%). GPUGraphicsClockOffset so I can underclock the GPU. GPUMemoryTransferRateOffset to OC my memory by 1200Mhz (9200Mhz total).
Cool, so now every time I boot my server, these settings are applied. Lazy++
But what to do about the miner?
I got you covered. In crontab -e I have:
* * * * * bash /mnt/scratch/Scripts/mining/watchdog.sh > /tmp/watchdog.log 2>&1
It's a simple script...
#! /bin/bash if pgrep "ethminer" >/dev/null 2>&1; then echo "Miner already running." else if nvidia-smi -q | grep "75 %" >/dev/null 2>&1; then byobu new -d -s mining "YOUR COMMAND TO START YOUR MINER GOES HERE" else echo "Fans are down! Fuck!" fi fi
Now, I can log into the server via SSH and pull up byobu to check on the mining process directly! If it crashes (which it never has), the watchdog will restart it. If the server is rebooted for whatever reason, it will automatically apply my settings at boot and the miner will run when the watchdog script detects things are right.
Obviously there are things I could still do here. Have it notify me when it starts the miner, have it parse the json from whattomine and switch to ETC for me if it's significantly higher. All kinds of stuff I can do with this in the future.
Hopefully this saves someone some frustration of getting this stuff to work. If you feel generous and want to tip, go here https://www.reddit.com/r/EtherMining/wiki/index and tip the mods or whoever runs this place (it's at the bottom of their guide which most of you will never read).
Edit: Removed GPUPowerMizerMode as there's no reason to run it in performance mode instead of adaptive. It had literally zero effect on mining speed and only prevents the card from idling properly if not mining.
Also, someone linked a github guide very close to what I wrote up, so look at that as well if you don't like mine.