Tesla V100の検証の機会があり、試しに仮想通貨の採掘をやってみましたので、その手順を紹介します。

今回、採掘したのはEthereum(イーサリアム)という仮想通貨です。
仮想通貨で有名なのがビットコインですが、イーサリアムはビットコインの次に有名な仮想通貨の様です。
(仮想通貨に素人で、あまり詳しくはありません。)
検証用のマシンのスペックは以下の通りです。
贅沢過ぎます。。。

マシンスペック
CPU:Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz x 2個
RAM:128GB
GPU:Tesla V100-PCIE x 4個

◇ 検証開始

早速、ubuntu 16.4をインストールして、nvidiaドライバーとcudaの環境を作ります。
OS:ubuntu-16.04.1-server-amd64.iso

V100は最新版のドライバーとCUDAを使っています。
TESLA DRIVER FOR UBUNTU 16.04

バージョン:384.81
リリース日:2017.9.25
オペレーティングシステム:Linux 64-bit Ubuntu 16.04
CUDA Toolkit:9.0
言語:Japanese
ファイルサイズ:97.43 MB

まず、nvidiaドライバーをインストールします。
test@tesla-v100-test:~$ wget http://jp.download.nvidia.com/tesla/384.81/nvidia-diag-driver-local-repo-ubuntu1604-384.81_1.0-1_amd64.deb
test@tesla-v100-test:~$ sudo dpkg -i nvidia-diag-driver-local-repo-ubuntu1604-384.81_1.0-1_amd64.deb
test@tesla-v100-test:~$ sudo apt-key add /var/nvidia-diag-driver-local-repo-384.81/7fa2af80.pub
test@tesla-v100-test:~$ sudo apt-get update
test@tesla-v100-test:~$ sudo apt-get upgrade
test@tesla-v100-test:~$ sudo apt-get install nvidia-384 nvidia-modprobe

nvidia-smiでGPUの情報が見えればOKです。
test@tesla-v100-test:~$ sudo nvidia-smi
Mon Oct 30 11:11:48 2017
+—————————————————————————–+
| NVIDIA-SMI 384.90 Driver Version: 384.90 |
|——————————-+———————-+———————-+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla V100-PCIE… Off | 00000000:04:00.0 Off | 0 |
| N/A 29C P0 34W / 250W | 0MiB / 16152MiB | 0% Default |
+——————————-+———————-+———————-+
| 1 Tesla V100-PCIE… Off | 00000000:08:00.0 Off | 0 |
| N/A 30C P0 36W / 250W | 0MiB / 16152MiB | 0% Default |
+——————————-+———————-+———————-+
| 2 Tesla V100-PCIE… Off | 00000000:0D:00.0 Off | 0 |
| N/A 32C P0 35W / 250W | 0MiB / 16152MiB | 0% Default |
+——————————-+———————-+———————-+
| 3 Tesla V100-PCIE… Off | 00000000:0E:00.0 Off | 0 |
| N/A 30C P0 37W / 250W | 0MiB / 16152MiB | 0% Default |
+——————————-+———————-+———————-+

+—————————————————————————–+
| Processes: GPU Memory |
GPU PID Type Process name Usage |
|=============================================================================|
|No running processes found |
+—————————————————————————–+
test@tesla-v100-test:~$

続いてCUDA 9.0をインストールします。
test@tesla-v100-test:~$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
test@tesla-v100-test:~$ sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
test@tesla-v100-test:~$ sudo apt-get update
test@tesla-v100-test:~$ sudo apt-get install cuda

~/.bashrc に以下の内容を追加します。
export PATH=”/usr/local/cuda-9.0/bin:$PATH”
export LD_LIBRARY_PATH=”/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH”

インストールされたDriverとCUDAは以下のバージョンになります。

ここで一旦再起動します。
test@tesla-v100-test:~$ sudo reboot

再起動後にCUDAコンパイラがちゃんと使えるか確認します。
test@tesla-v100-test:~$ nvcc –version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
test@tesla-v100-test:~$

ここまででGPUの準備は完了しました、
次にETHEREUMをマイニングするためのツールをgitより落としてコンパイルします。
test@tesla-v100-test:~$ git clone https://github.com/ethereum-mining/ethminer.git
test@tesla-v100-test:~/ethminer$ mkdir build; cd build
test@tesla-v100-test:~/ethminer/build$ sudo apt install cmake
test@tesla-v100-test:~/ethminer/build$ cmake .. -DETHASHCUDA=ON -DETHASHCL=OFF
test@tesla-v100-test:~/ethminer/build$ cmake –build .

コンパイルが完了したらとりあえず、動くのかVersion確認をしてみます。
test@tesla-v100-test:~/ethminer/build$ ./ethminer/ethminer -V
ethminer version 0.13.0.dev0
Build: Linux/g++/Release
test@tesla-v100-test:~/ethminer/build$

動きました。
しかし、ベンチマークを実行するとエラーが発生します。

test@tesla-v100-test:~/ethminer/build$ ./ethminer/ethminer -M -U
cu 12:11:37|ethminer Using grid size 8192 , block size 128
Benchmarking on platform: CUDA
Preparing DAG for block #0

ℹ 12:11:37|CUDA0 set work; seed: #00000000, target: #000000000000
ℹ 12:11:37|CUDA1 set work; seed: #00000000, target: #000000000000
ℹ 12:11:37|CUDA0 Initialising miner…
ℹ 12:11:37|CUDA1 Initialising miner…
ℹ 12:11:37|CUDA2 set work; seed: #00000000, target: #000000000000
ℹ 12:11:37|CUDA2 Initialising miner…Warming up…

ℹ 12:11:37|CUDA3 set work; seed: #00000000, target: #000000000000
ℹ 12:11:37|CUDA3 Initialising miner…
cu 12:11:38|CUDA0 Using device: Tesla V100-PCIE-16GB (Compute 7.0)
cu 12:11:38|CUDA1 Using device: Tesla V100-PCIE-16GB (Compute 7.0)
cu 12:11:38|CUDA2 Using device: Tesla V100-PCIE-16GB (Compute 7.0)
cu 12:11:38|CUDA3 Using device: Tesla V100-PCIE-16GB (Compute 7.0)
Cuda error in func ‘set_constants’ at line 151 : invalid device symbol.
test@tesla-v100-test:~/ethminer/build$

Nvidia V100はcompute_70を使うのでMakeファイルを修正する必要があります。
修正したのは以下の様に赤い部分の追加です。
test@tesla-v100-test:~/ethminer$ git diff
diff –git a/libethash-cuda/CMakeLists.txt b/libethash-cuda/CMakeLists.txt
index 0e42953..3c39e67 100644
— a/libethash-cuda/CMakeLists.txt
+++ b/libethash-cuda/CMakeLists.txt
@@ -18,6 +18,7 @@ else()
“-gencode arch=compute_60,code=sm_60”
“-gencode arch=compute_61,code=sm_61”
“-gencode=arch=compute_62,code=sm_62”
+ “-gencode=arch=compute_70,code=sm_70”
)
endif()

test@tesla-v100-test:~/ethminer$

再度cmake, buildし、ベンチマークを実行してみます。
問題無く正常に完了しました。
これでマイニングツールの準備完了です。
test@tesla-v100-test:~/ethminer/build$ ./ethminer/ethminer -M -U
cu 12:18:47|ethminer Using grid size 8192 , block size 128
Benchmarking on platform: CUDA
Preparing DAG for block #0
Warming up…
ℹ 12:18:47|CUDA0 set work; seed: #00000000, target: #000000000000
ℹ 12:18:47|CUDA1 set work; seed: #00000000, target: #000000000000
ℹ 12:18:47|CUDA1 Initialising miner…
ℹ 12:18:47|CUDA0 Initialising miner…
ℹ 12:18:47|CUDA2 set work; seed: #00000000, target: #000000000000
ℹ 12:18:47|CUDA3 set work; seed: #00000000, target: #000000000000
ℹ 12:18:47|CUDA2 Initialising miner…
ℹ 12:18:47|CUDA3 Initialising miner…
cu 12:18:48|CUDA1 Using device: Tesla V100-PCIE-16GB (Compute 7.0)
cu 12:18:48|CUDA0 Using device: Tesla V100-PCIE-16GB (Compute 7.0)
cu 12:18:48|CUDA2 Using device: Tesla V100-PCIE-16GB (Compute 7.0)
cu 12:18:48|CUDA3 Using device: Tesla V100-PCIE-16GB (Compute 7.0)
cu 12:18:50|CUDA0 Generating DAG for GPU # 0
cu 12:18:50|CUDA3 Generating DAG for GPU # 3
cu 12:18:50|CUDA2 Generating DAG for GPU # 2
cu 12:18:50|CUDA1 Generating DAG for GPU # 1
CUDA#0: 0%
CUDA#3: 0%
CUDA#2: 0%
。。。
CUDA#3: 94%
CUDA#2: 94%
Trial 1… 382960016
Trial 2… 383064936
Trial 3… 383141610
Trial 4… 382998338
Trial 5… 383169857
min/mean/max: 382960016/383066951/383169857 H/s
inner mean: 383068294 H/s
test@tesla-v100-test:~/ethminer/build$

早速、マイニングプールのアカウントを作成し、採掘実行。
test@tesla-v100-test:~/ethminer/build$ ../ethminer/ethminer-U-F http://eth.pool.minergate.com:55751/moons-choi@tomorrow-net.co.jp

350Mh/sを超える性能がでます。
計算してみると一日で30ドル位なる様ですが、「ほんと??」と、少し不安になります。
採掘の中のGPUとCPUの負荷を確認してみると以下の様に、GPUをFullで使い切っている状況です。
当たり前ですが、CPUは全然使っていません。

<GPU負荷状況>

<CPU負荷状況>

以上、仮想通貨を採掘したレポートになります。
ぜひ、ご参考ください!

◆医療向けソリューション
https://www.tomorrow-net.co.jp/medical_solution/

◆クラウドソリューション
https://www.tomorrow-net.co.jp/cloud-solution/