Ubuntu
GPU
NVIDIA
mining
mining-pool

Ubuntu 18.04LTSで、GPUマイニング


きっかけ

IT関連の友人より、マイニングが面白いと教えもらった。

その友人にマイニングの現状を教えてもらうまでは私も懐疑的だったのだが、次の要素から面白いんじゃないかということで始めてみることにした。


  1. 自作パソコンのオーバークロック的面白さ

  2. GPUはAIをやる上でも結構重要だとか

  3. 結果が金額で現れる

どれかといえば1の理由が大きいかな。

ミニ四駆を競わせる的な要素が面白そうに思えた。

3は全く無くはないのだが、グラボ1つだと雀の涙になる可能性大。


事前準備/前提


必要なもの


  • どこでもいいのでウォレットを作っておく

  • マイニングプールへの登録


前提


  • 表題の通り、Ubuntu 18.04LTSを使う


    • 本稿では、Ubuntu 18.04LTSがインストール済みの段階から記載



  • GPUはNVIDIAのグラボを一つだけ使う

  • 私はモナコインでマイニングする(2018/5とうとう悪意によるブロックチェーンの改竄があったということで怪しいのだけど。。)

  • マイニングプールはVIP POOL


    • マイニングにウォレットのアドレスを設定するなどアカウントの説明は省く



  • ウォレットはbitFlyer

  • マイニングプログラムはccminer


手順


グラボの設定


ドライバ


  1. 左上の「アクティビティ」をクリックすると、Windowsの「コマンドを指定して実行」ようなものが出てくるのでそこで「ドライバ」と入力する

  2. 「ソフトウェアとアップデート」のアイコンをクリック

  3. 「追加のドライバ」タブでNVIDIAのドライバを選択する(このドライバはデフォルトで入っているらしい)

  4. 設定を適用する。


動作の設定


  1. 「アクティビティ」から「NVIDIA」で「NVIDIA X Xserver Settings」を起動する

  2. 「GPU X」(Xは数字)でグラボが認識されていることを確認

  3. ツリーを展開して、「PowerMizer」を選択

  4. 「Preferred Mode」で「Prefer Maximum Performance」を選択


マイニングプログラムのビルド

ここからが鬼門。

まだやってる人が少なくて情報の乏しさに苦労した。


必要なものをインストール

とりあえずgitから。

sudo apt update

sudo apt upgrade
sudo apt install git

次に、cudaというGPU用のコンパイラなどのインストール。

参考にさせていただいたのはこちら。

http://blog.michinari-nukazawa.com/2018/02/ubuntu1804-alphacudainstall.html

cudaはNVIDIAが作っているものでソースは公開されていない。

ドライバもそうだが、今回はとことんNVIDIAのクローズの世界になる。

これでインストールする。

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1710&target_type=deblocal

次にgcc、g++をインストールするわけだが、大きな注意点がある。

18.04ではデフォルトでgccとg++のv6とv7が入っている。

しかし、ccminerのプログラムはv5で実装されている。

update-alternativeも使ったこともあったがどうしてもv5の方を向いてくれないので、v6とv7はアンインストールした。

sudo apt-get remove gcc-6

sudo apt-get remove g++-6
sudo apt-get remove gcc-7
sudo apt-get remove g++-7
sudo apt-get install gcc-5 g++-5
sudo ln -s /usr/bin/gcc-5 /usr/bin/gcc
sudo ln -s /usr/bin/g++-5 /usr/bin/g++
sudo apt-get install libcurl4-openssl-dev libssl-dev libjansson-dev automake autotools-dev build-essential


ソースの取得とビルド

任意のディレクトリで下記を実行。

git clone https://github.com/tpruvot/ccminer.git

cd ccminer
./autogen.sh

この時点で、configure.shが存在し、一部編集する必要がある。

        ./configure CXXFLAGS="-O3 $extracflags" --with-cuda=/usr/local/cuda --with-nvml=libnvidia-ml.so

        ./configure CXXFLAGS="-O3 $extracflags" --with-cuda=/usr/local/cuda-9.2 --with-nvml=libnvidia-ml.so

私の環境では、cuda toolkitのインストールパスが/usr/local/cuda-9.2だった。

これは後々、参考にしたサイトを忘れたが.bashrcにも追加しておいた方が良いというようなことで、次の記述が./bashrcにも追記した。

CUDA=/usr/local/cuda-9.2

export PATH=$PATH:$CUDA/bin
export CPATH=$CUDA/include:$CPATH
export LD_LIBRARY_PATH=$CUDA/lib64:$LD_LIBRARY_PATH

以降はコマンドの続き。

./build.sh

./ccminer --version


実行

予めマイングプールの画面で、ワーカーの設定をしておく。

ワーカーがccminerとリンクして実行する形。

./cpuminer -a lyra2rev2 -o stratum+tcp://stratum1.vippool.net:8888 -u マイニングプールのアカウント.ワーカーのID -p ワーカーのパスワード


最後に

実ははじめにCPUマイナーからやってしまったり、ccminerはフォークがいくつかあるようでビルドできないソースで時間を使ったりミスリードがいくつかあった。

それを言いたくてこの内容をまとめたようなもの。