M1での KAWPOW GPUマイニング
M1 Mac miniでkawpowminerを使用してKAWPOW(Ravencoin)のGPUマイニングをしてみました。
M1 Macでのイーサリアム GPUマイニングで使用したYifan Gu氏のethminerへの修正と同様に、M1に向けてlibethash-cl/CLMiner.cppへApple GPUの追加と依存関係にあるboost関連の修正とOpenSSLのアップグレードを行った自作のパッチを使用します。
ハッシュレートは800kH〜1MHぐらい、消費電力はサンワのワットモニターで測ると13~17Wでイーサリアムマイニングより電力を多く消費します。2021/5/3時点では1日数円程度の利益か電気代とほぼ同等程度なのでイーサリアムマイニングの方が稼げます。
kawpowminerのビルド
準備
ターミナルを起動してください。~/Downloads/以下で作業します。
$ cd ~/Downloads/
XcodeとCommand line tools for Xcodeが未インストールならばApp StoreからXcodeをインストールし、ターミナル上でCommand line tools for Xcodeをインストールしてください。
$ xcode-select --install
brewとcmakeが未インストールならbrewをインストールし、brew経由でcmakeをインストールしてください。
$ arch -arm64e /bin/bash -c "$(curl -fsSL $ https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
$ export PATH=/opt/homebrew/bin:$PATH
$ brew install cmake
kawpowminerのビルド
git経由でファイルを取得します。
$ git clone https://github.com/RavenCommunity/kawpowminer.git
$ cd kawpowminer
$ git submodule update --init --recursive
M1用パッチをcurlコマンドで取得し当てます。
$ curl -o kawpowminer-m1.patch https://gist.githubusercontent.com/asfdrwe/9bc5b447a8e2012c07ac9230b980a89f/raw/9c08bb7c45659950f8ab638c77cd41b6f55a480c/kawpowminer-m1.patch
$ patch -p1 < kawpowminer-m1.patch
cmakeでビルドします。NVIDIA用のCUDAを外す指定をしてください。初回cmake実行時のみ依存関係で必要なものをビルドするのでそれなりに時間がかかります。
$ mkdir build
$ cd build
$ cmake .. -DETHASHCUDA=OFF
kawpowminerをビルドして実行バイナリのあるフォルダに移動します。
$ make
$ cd kawpowminer
kawpowminer GPUマイニングの実行
そのまま実行しようとすると、ethminerと同様に2021/5/3時点ではcl2Metalにバグがあるようで、日本語環境下ではOpenCLコードのバックスラッシュを円記号として扱ってしまい、正常に動作しないようです。
システム環境設定の言語と地域から英語環境を入れて優先する言語を英語にして実行するか、環境変数__CF_USER_TEXT_ENCODING
を英語設定にしてください。
uidをidコマンドで確認し__CF_USER_TEXT_ENCODING
の内容をechoやenvで確認します。uidが501(16進数で0x1F5)の場合はこうなります。
$ id
uid=501(asfdrwe) gid=20(staff) groups=20(staff),...
$ env | grep __CF_USER_TEXT_ENCODING
__CF_USER_TEXT_ENCODING=0x1F5:0x1:0xE
idが501(0x1F5)ならば__CF_USER_TEXT_ENCODING
を0x1F5:0x1:0xE
から__CF_USER_TEXT_ENCODING
を0x1F5:0x0:0x0
にすればcl2Metalのバグを回避できます。envコマンドかexportで__CF_USER_TEXT_ENCODING
の値を変更してkawpowminerを実行してください。
NiceHash poolを使用するならばこのようになります。他のプールの設定はGoogleで探してください。
$ export __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
$ ./kawpowminer -G -P stratum+tcp://『NiceHashの自分の報酬ビットコインアドレス』.『NiceHashの自分のWorker名(何でもいい)』@kawpow.usa-west.nicehash.com:3385
実行例
kawpowminer 1.2.3
Build: darwin/release/appleclang
i 16:41:37 Configured pool kawpow.usa-west.nicehash.com:3385
i 16:41:37 Selected pool kawpow.usa-west.nicehash.com:3385
i 16:41:37 Stratum mode : Stratum
i 16:41:37 Established connection to kawpow.usa-west.nicehash.com [[2606:4700:90:0:b61f:a5b7:e5e2:4342]:3385]
i 16:41:37 Spinning up miners...
i 16:41:37 Extranonce set to cead79
cl 16:41:37 cl-0 Creating buffers
cl 16:41:37 cl-0 Using PciId : Apple GPU 0.0 Apple M1 OpenCL 1.2 Memory : 5.33 GB
i 16:41:37 Authorized worker xxxxxxxxxxxxxxxxxxxxxxx.xxxxxx
i 16:41:37 New target set to: 0000000bc4656315000000000000000000000000000000000000000000000000
i 16:41:37 Epoch : 231 Difficulty : 364.99 Mh
i 16:41:37 Job: c293d6eb… block 1737641 kawpow.usa-west.nicehash.com [[2606:4700:90:0:b61f:a5b7:e5e2:4342]:3385]
cl 16:41:38 cl-0 Unable to lower compiler priority.
cl 16:41:39 cl-0 Pre-compiled period 579,213 OpenCL ProgPow kernel
cl 16:41:39 cl-0 Loaded period 579,213 progpow kernel
cl 16:41:39 cl-0 Unable to lower compiler priority.
cl 16:41:39 cl-0 Generating DAG + Light : 2.85 GB
cl 16:41:39 cl-0 Creating light cache buffer, size: 44.87 MB
cl 16:41:39 cl-0 Creating DAG buffer, size: 2.80 GB, free: 2.48 GB
cl 16:41:39 cl-0 Loading kernels
cl 16:41:40 cl-0 Pre-compiled period 579,214 OpenCL ProgPow kernel
cl 16:41:40 cl-0 Writing light cache buffer
m 16:41:42 0:00 A0 0.00 h - cl0 0.00
m 16:41:47 0:00 A0 0.00 h - cl0 0.00
m 16:41:52 0:00 A0 0.00 h - cl0 0.00
m 16:41:57 0:00 A0 0.00 h - cl0 0.00
i 16:42:01 Job: 08daeddb… block 1737642 kawpow.usa-west.nicehash.com [[2606:4700:90:0:b61f:a5b7:e5e2:4342]:3385]
m 16:42:02 0:00 A0 0.00 h - cl0 0.00
m 16:42:07 0:00 A0 0.00 h - cl0 0.00
m 16:42:12 0:00 A0 0.00 h - cl0 0.00
m 16:42:17 0:00 A0 0.00 h - cl0 0.00
m 16:42:22 0:00 A0 0.00 h - cl0 0.00
m 16:42:27 0:00 A0 0.00 h - cl0 0.00
cl 16:42:27 cl-0 2.80 GB of DAG data generated in 47,963 ms.
cl 16:42:27 cl-0 Loaded period 579,214 progpow kernel
cl 16:42:27 cl-0 Unable to lower compiler priority.
cl 16:42:28 cl-0 Pre-compiled period 579,215 OpenCL ProgPow kernel
m 16:42:32 0:00 A0 0.00 h - cl0 0.00
m 16:42:37 0:01 A0 862.55 Kh - cl0 862.55
m 16:42:42 0:01 A0 862.55 Kh - cl0 862.55
m 16:42:47 0:01 A0 963.96 Kh - cl0 963.96
m 16:42:52 0:01 A0 963.96 Kh - cl0 963.96
...
うまく実行できていれば900kH前後でマイニングできるはずです。また、NiceHashのmyページのmining rigのHISTORY & STATのActive workers に指定したWorker名で状況が表示されます。