3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M1 MacでのXMRigによるCPU&GPUマイニング

Last updated at Posted at 2021-05-10

XMRigによるマイニング

M1 Mac miniでXMRigを使用して、KAWPOW(Ravencoin)でのGPUマイニング、CryptoNightRでのCPU&GPUマイニング、RandomX(Monero)のCPUマイニングを試してみました。

現時点(2021/5/10)では、XMRigのRandomX CPUマイニングとKAWPOW GPUマイニングを組み合わせると、nicehashでは一日0.00000576〜0.00001152BTC(36.1〜72.2円)程度得られるようです。消費電力はサンワのワットモニターで測ると25Wで1kWh30円とすると電気代一日18円になるので、一日18〜54円の収益が得られることになります。ethminerkawpowminerのマイニングより効率的かと思います。

ethminerよりUselethMinerによるマイニングの方が効率的のようです(2022/2/1追記)。

更新履歴

  • 2022/2/1 UselethMinerについて追記
  • 2021/6/21 v6.12.2の情報追加
  • 2021/6/10 XMRigのIssueより参考資料追加

XMRigの公式バイナリ (2021/6/21追加)

XMRigのGithubのReleaseページよりダウンロードできます。

v6.12.2は公式バイナリそのままでKAWPOWのGPUマイニングやRandomXのCPUは問題なく動作するのでビルド不要です。

XMRigのビルド

そのままではAMD拡張を含むOpenCLコードを実行しようとしてしまうため、M1ではKAWPOWは動かないです。

KAWPOWを動くようにしたパッチを作りました。OpenCLをAMD GPUとして動かさないようにする変更と変更内容をkawpow_cl.hへ反映させるパッチです。 (v6.12.2以降は何もせず問題なく動作します)(2021/6/21追記)

XMRigのOpenCLでは、kawpow.clを直接読み込むのではなく、generate_cl.jsを使用してコンパクトに変換したkawpow_cl.hを使用します。RandomXでも同様です。OpenCLのコードを変更した場合、XMRigのトップで

$ node scripts/generate_cl.js

を実行する必要があります(要Node.js、brew等でインストール)。OpenCLのコードを変更しただけだとビルドしてもXMRigに反映されないので気をつけてください。

上記のパッチにはkawpow.clへの変更を含んでいるのでnode scripts/generate_cl.jsの実行は不要です。

準備

ターミナルを起動してください。~/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

XMRigのビルド

git経由でファイルを取得します。

$ git clone https://github.com/xmrig/xmrig.git
$ cd xmrig

パッチをcurlコマンドで取得し当てます。

$ curl -o xmrig-kawpow-m1.patch https://gist.githubusercontent.com/asfdrwe/24e5c4d9703e167e6b1707a6caa6e6a3/raw/abfb4e11ff3d5dba11d007f67aab1cd58241cddb/xmrig-kawpow-m1.patch
$ patch -p1 < xmrig-kawpow-m1.patch

cmakeでビルドします。

$ mkdir build
$ cd build
$ cmake ..
$ make

XMRigの実行

XMRig GPUマイニングの実行時の注意

そのまま実行しようとすると、ethminerやkawpowminerと同様に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_ENCODING0x1F5:0x1:0xEから__CF_USER_TEXT_ENCODING0x1F5:0x0:0x0にすればcl2Metalのバグを回避できます。envコマンドかexportで__CF_USER_TEXT_ENCODINGの値を変更してxmrigを実行してください。

$ export __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0

KAWPOW GPUマイニング

nicehashで実行する場合は次のようになります。

$ ./xmrig -o kawpow.usa-west.nicehash.com:3385 -u 『NiceHashの自分の報酬ビットコインアドレス』 -a kawpow --nicehash --rig-id=『NiceHashの自分のWorker名(何でもいい、反映されない?)』 --opencl --no-cpu

実行ログ

 * ABOUT        XMRig/6.12.1 clang/12.0.5
 * LIBS         libuv/1.41.0 OpenSSL/1.1.1k hwloc/2.4.1
 * HUGE PAGES   unavailable
 * 1GB PAGES    unavailable
 * CPU          Apple M1 (1) 64-bit AES
                L2:16.0 MB L3:0.0 MB 8C/8T NUMA:1
 * MEMORY       5.5/8.0 GB (69%)
 * DONATE       0%
 * POOL #1      kawpow.usa-west.nicehash.com:3385 algo kawpow
 * COMMANDS     hashrate, pause, resume, results, connection
 * OPENCL       #0 Apple/OpenCL 1.2 (Feb 28 2021 03:51:21)
 * OPENCL GPU   #0 n/a Apple M1 1000 MHz cu:8 mem:1024/5461 MB
 * CUDA         disabled
[2021-05-10 15:01:17.952]  net      use pool kawpow.usa-west.nicehash.com:3385  172.65.247.93
[2021-05-10 15:01:17.953]  net      new job from kawpow.usa-west.nicehash.com:3385 diff 364M algo kawpow height 1747506
[2021-05-10 15:01:17.955]  opencl   use profile  kawpow  (1 thread) scratchpad 32 KB
|  # | GPU |  BUS ID | INTENSITY | WSIZE | MEMORY | NAME
|  0 |   0 |     n/a |   2097152 |   256 |   2933 | Apple M1
[2021-05-10 15:01:17.957]  opencl   GPU #0 compiling...
[2021-05-10 15:01:18.141]  opencl   GPU #0 compilation completed (184 ms)
[2021-05-10 15:01:18.142]  opencl   READY threads 1/1 (187 ms)
[2021-05-10 15:01:19.183]  opencl   KawPow program for period 582502 compiled (1040ms)
[2021-05-10 15:01:19.567]  net      new job from kawpow.usa-west.nicehash.com:3385 diff 364M algo kawpow height 1747507
[2021-05-10 15:01:20.269]  opencl   KawPow program for period 582503 compiled (1086ms)
[2021-05-10 15:01:22.706]  miner    KawPow light cache for epoch 233 calculated (3523ms)
[2021-05-10 15:02:04.237]  net      new job from kawpow.usa-west.nicehash.com:3385 diff 364M algo kawpow height 1747507
[2021-05-10 15:02:08.425]  opencl   KawPow DAG for epoch 233 calculated (45715ms)
[2021-05-10 15:02:14.673]  net      new job from kawpow.usa-west.nicehash.com:3385 diff 364M algo kawpow height 1747507
[2021-05-10 15:02:19.492]  miner    speed 10s/60s/15m n/a n/a n/a H/s max n/a H/s
[2021-05-10 15:03:09.752]  net      new job from kawpow.usa-west.nicehash.com:3385 diff 364M algo kawpow height 1747507
[2021-05-10 15:03:13.074]  net      new job from kawpow.usa-west.nicehash.com:3385 diff 364M algo kawpow height 1747508
[2021-05-10 15:03:17.279]  net      new job from kawpow.usa-west.nicehash.com:3385 diff 364M algo kawpow height 1747508
[2021-05-10 15:03:20.381]  miner    speed 10s/60s/15m 1.49 1.49 n/a MH/s max 1.49 MH/s
[2021-05-10 15:04:05.310]  net      new job from kawpow.usa-west.nicehash.com:3385 diff 182M algo kawpow height 1747508
[2021-05-10 15:04:08.214]  net      new job from kawpow.usa-west.nicehash.com:3385 diff 182M algo kawpow height 1747508
[2021-05-10 15:04:17.519]  opencl   accepted (1/0) diff 182M (172 ms)
[2021-05-10 15:04:21.353]  miner    speed 10s/60s/15m 1.46 1.47 n/a MH/s max 1.51 MH/s
...

ハッシュレートは1.5MH/sで消費電力はサンワのワットモニター測定で12-14Wぐらいです。kawpowminerは1MH/sで13-19Wなので、xmrigの方が効率が良いようです。

CryptoNightR CPU&GPUマイニング

CryptoNightRはパッチなしでも動きます。

$ ./xmrig -o cryptonightr.usa-west.nicehash.com:3375 -u 『NiceHashの自分の報酬ビットコインアドレス』 -a cn/r --nicehash --opencl --rig-id=『NiceHashの自分のWorker名』

実行ログ

 * ABOUT        XMRig/6.12.1 clang/12.0.5
 * LIBS         libuv/1.41.0 OpenSSL/1.1.1k hwloc/2.4.1
 * HUGE PAGES   unavailable
 * 1GB PAGES    unavailable
 * CPU          Apple M1 (1) 64-bit AES
                L2:16.0 MB L3:0.0 MB 8C/8T NUMA:1
 * MEMORY       3.5/8.0 GB (44%)
 * DONATE       0%
 * POOL #1      cryptonightr.usa-west.nicehash.com:3375 algo cn/r
 * COMMANDS     hashrate, pause, resume, results, connection
 * OPENCL       #0 Apple/OpenCL 1.2 (Feb 28 2021 03:51:21)
 * OPENCL GPU   #0 n/a Apple M1 1000 MHz cu:8 mem:1024/5461 MB
 * CUDA         disabled
[2021-05-10 15:10:59.612]  net      use pool cryptonightr.usa-west.nicehash.com:3375  172.65.247.93
[2021-05-10 15:10:59.612]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543545
[2021-05-10 15:10:59.612]  cpu      use profile  cn  (8 threads) scratchpad 2048 KB
[2021-05-10 15:10:59.614]  opencl   use profile  cn/2  (1 thread) scratchpad 2048 KB
|  # | GPU |  BUS ID | INTENSITY | WSIZE | MEMORY | NAME
|  0 |   0 |     n/a |       384 |     8 |    768 | Apple M1
[2021-05-10 15:10:59.645]  opencl   GPU #0 compiling...
[2021-05-10 15:11:00.619]  cpu      READY threads 8/8 (8) huge pages 0% 0/8 memory 16384 KB (1007 ms)
[2021-05-10 15:11:02.729]  opencl   GPU #0 compilation completed (3083 ms)
[2021-05-10 15:11:02.732]  opencl   READY threads 1/1 (3107 ms)
[2021-05-10 15:12:00.137]  miner    speed 10s/60s/15m 232.1 219.0 n/a H/s max 239.2 H/s
[2021-05-10 15:12:50.485]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543545
[2021-05-10 15:13:00.694]  miner    speed 10s/60s/15m 235.4 235.2 n/a H/s max 239.2 H/s
[2021-05-10 15:14:01.227]  miner    speed 10s/60s/15m 235.6 235.5 n/a H/s max 239.2 H/s
[2021-05-10 15:14:16.812]  cpu      accepted (1/0) diff 50000 (140 ms)
[2021-05-10 15:14:40.819]  opencl   accepted (2/0) diff 50000 (138 ms)
[2021-05-10 15:14:52.479]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543545
[2021-05-10 15:15:01.826]  miner    speed 10s/60s/15m 237.2 235.8 n/a H/s max 239.2 H/s
[2021-05-10 15:15:30.626]  opencl   accepted (3/0) diff 50000 (162 ms)
[2021-05-10 15:15:54.217]  cpu      accepted (4/0) diff 50000 (144 ms)
[2021-05-10 15:16:02.385]  miner    speed 10s/60s/15m 239.6 239.3 n/a H/s max 240.0 H/s
[2021-05-10 15:16:54.472]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543545
[2021-05-10 15:17:03.298]  miner    speed 10s/60s/15m 238.3 238.6 n/a H/s max 240.5 H/s
[2021-05-10 15:18:04.255]  miner    speed 10s/60s/15m 237.7 237.2 n/a H/s max 240.5 H/s
[2021-05-10 15:18:54.496]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543545
[2021-05-10 15:19:05.232]  miner    speed 10s/60s/15m 237.4 237.3 n/a H/s max 240.5 H/s
[2021-05-10 15:19:07.850]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543546
[2021-05-10 15:20:06.254]  miner    speed 10s/60s/15m 237.8 237.0 n/a H/s max 240.5 H/s
[2021-05-10 15:21:07.233]  miner    speed 10s/60s/15m 237.7 237.7 n/a H/s max 240.5 H/s
[2021-05-10 15:21:08.469]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543546
[2021-05-10 15:22:08.283]  miner    speed 10s/60s/15m 236.9 237.4 n/a H/s max 240.5 H/s
[2021-05-10 15:23:08.471]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543546
[2021-05-10 15:23:09.149]  miner    speed 10s/60s/15m 236.6 236.9 n/a H/s max 240.5 H/s
[2021-05-10 15:23:28.096]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543547
[2021-05-10 15:24:10.194]  miner    speed 10s/60s/15m 243.0 240.3 n/a H/s max 243.3 H/s
[2021-05-10 15:25:11.197]  miner    speed 10s/60s/15m 242.4 242.7 n/a H/s max 243.4 H/s
[2021-05-10 15:25:28.466]  net      new job from cryptonightr.usa-west.nicehash.com:3375 diff 50000 algo cn/r height 543547
...

ハッシュレートは243H/sですが消費電力は27-29Wで電力消費が大きいです。収益はよくわかりませんが一日0.00000288BTC程度は入るのではないかと思います。

RandomX CPUマイニング

RandomXでのCPUマイニングはパッチなしで動きます。

$ xmrig -o randomxmonero.usa-west.nicehash.com:3380 -u 『NiceHashの自分の報酬ビットコインアドレス』 -a randomx --nicehash --rig-id=『NiceHashの自分のWorker名』

実行ログ

 * ABOUT        XMRig/6.12.1 clang/12.0.5
 * LIBS         libuv/1.41.0 OpenSSL/1.1.1k hwloc/2.4.1
 * HUGE PAGES   unavailable
 * 1GB PAGES    unavailable
 * CPU          Apple M1 (1) 64-bit AES
                L2:16.0 MB L3:0.0 MB 8C/8T NUMA:1
 * MEMORY       3.9/8.0 GB (49%)
 * DONATE       0%
 * POOL #1      randomxmonero.usa-west.nicehash.com:3380 algo rx/0
 * COMMANDS     hashrate, pause, resume, results, connection
 * OPENCL       disabled
 * CUDA         disabled
[2021-05-10 15:28:17.780]  net      use pool randomxmonero.usa-west.nicehash.com:3380  172.65.247.93
[2021-05-10 15:28:17.781]  net      new job from randomxmonero.usa-west.nicehash.com:3380 diff 320903 algo rx/0 height 2357700
[2021-05-10 15:28:17.781]  cpu      use argon2 implementation default
[2021-05-10 15:28:17.781]  randomx  init dataset algo rx/0 (8 threads) seed d2e97cf50201e5f9...
[2021-05-10 15:28:17.781]  randomx  allocated 2336 MB (2080+256) huge pages 0% 0/1168 +JIT (1 ms)
[2021-05-10 15:28:22.629]  randomx  dataset ready (4847 ms)
[2021-05-10 15:28:22.629]  cpu      use profile  rx  (8 threads) scratchpad 2048 KB
[2021-05-10 15:28:22.629]  cpu      READY threads 8/8 (8) huge pages 0% 0/8 memory 16384 KB (0 ms)
[2021-05-10 15:28:40.165]  net      new job from randomxmonero.usa-west.nicehash.com:3380 diff 320903 algo rx/0 height 2357701
[2021-05-10 15:29:03.428]  net      new job from randomxmonero.usa-west.nicehash.com:3380 diff 320903 algo rx/0 height 1517846
[2021-05-10 15:29:03.432]  cpu      stopped (4 ms)
[2021-05-10 15:29:03.432]  randomx  init dataset algo rx/0 (8 threads) seed 72c17680437427a6...
[2021-05-10 15:29:08.143]  randomx  dataset ready (4711 ms)
[2021-05-10 15:29:08.143]  cpu      use profile  rx  (8 threads) scratchpad 2048 KB
[2021-05-10 15:29:08.143]  cpu      READY threads 8/8 (8) huge pages 0% 0/8 memory 16384 KB (0 ms)
[2021-05-10 15:29:23.192]  miner    speed 10s/60s/15m 2388.8 n/a n/a H/s max 2392.4 H/s
[2021-05-10 15:29:30.797]  cpu      accepted (1/0) diff 320903 (119 ms)
[2021-05-10 15:29:31.212]  net      new job from randomxmonero.usa-west.nicehash.com:3380 diff 320903 algo rx/0 height 1517847
[2021-05-10 15:29:40.766]  net      new job from randomxmonero.usa-west.nicehash.com:3380 diff 320903 algo rx/0 height 2357701
[2021-05-10 15:29:40.770]  cpu      stopped (4 ms)
[2021-05-10 15:29:40.770]  randomx  init dataset algo rx/0 (8 threads) seed d2e97cf50201e5f9...
[2021-05-10 15:29:45.460]  randomx  dataset ready (4690 ms)
[2021-05-10 15:29:45.460]  cpu      use profile  rx  (8 threads) scratchpad 2048 KB
[2021-05-10 15:29:45.460]  cpu      READY threads 8/8 (8) huge pages 0% 0/8 memory 16384 KB (0 ms)
[2021-05-10 15:30:06.467]  net      new job from randomxmonero.usa-west.nicehash.com:3380 diff 320903 algo rx/0 height 2357701
[2021-05-10 15:30:23.716]  miner    speed 10s/60s/15m 2382.1 n/a n/a H/s max 2393.6 H/s
[2021-05-10 15:30:33.364]  cpu      accepted (2/0) diff 320903 (119 ms)
[2021-05-10 15:30:48.059]  net      new job from randomxmonero.usa-west.nicehash.com:3380 diff 320903 algo rx/0 height 2357701
[2021-05-10 15:31:24.244]  miner    speed 10s/60s/15m 2393.5 2393.3 n/a H/s max 2398.0 H/s
...

ハッシュレートは2393H/sで消費電力は19-20Wです。

RandomX GPUマイニング(動かない)

そのままではOpenCLのコードで符号付きと符号なしの比較に関するWarningが出て動かないです。ちゃんとcastするように修正したパッチを作ってみたのですが、その場合でもCL_INVALID_KERNELエラーが出て動かないです。仮に動くようになったとしても、現時点では、AMDのVegaとNavi以外のGPUでは仮想CPUのコードをインタプリタで解釈して動くようなので、あまり高速には動かないと思います(OclWorkerの対応箇所randomx_jit.cl等randomx_vm.cl)。

$ xmrig -o randomxmonero.usa-west.nicehash.com:3380 -u 『NiceHashの自分の報酬ビットコインアドレス』 -a randomx --nicehash --rig-id=『NiceHashの自分のWorker名』 --opencl --no-cpu

実行ログ

* ABOUT        XMRig/6.12.1 clang/12.0.5
 * LIBS         libuv/1.41.0 OpenSSL/1.1.1k hwloc/2.4.1
 * HUGE PAGES   unavailable
 * 1GB PAGES    unavailable
 * CPU          Apple M1 (1) 64-bit AES
                L2:16.0 MB L3:0.0 MB 8C/8T NUMA:1
 * MEMORY       3.9/8.0 GB (49%)
 * DONATE       1%
 * POOL #1      randomxmonero.usa-west.nicehash.com:3380 algo rx/0
 * COMMANDS     hashrate, pause, resume, results, connection
 * OPENCL       #0 Apple/OpenCL 1.2 (Feb 28 2021 03:51:21)
 * OPENCL GPU   #0 n/a Apple M1 1000 MHz cu:8 mem:1024/5461 MB
 * CUDA         disabled
[2021-05-10 15:27:44.756]  net      use pool randomxmonero.usa-west.nicehash.com:3380  172.65.247.93
[2021-05-10 15:27:44.756]  net      new job from randomxmonero.usa-west.nicehash.com:3380 diff 320903 algo rx/0 height 1517844
[2021-05-10 15:27:44.756]  cpu      use argon2 implementation default
[2021-05-10 15:27:44.756]  randomx  init dataset algo rx/0 (8 threads) seed 72c17680437427a6...
[2021-05-10 15:27:44.757]  randomx  allocated 2336 MB (2080+256) huge pages 0% 0/1168 +JIT (1 ms)
[2021-05-10 15:27:49.606]  randomx  dataset ready (4849 ms)
[2021-05-10 15:27:49.606]  opencl   use profile  rx  (1 thread) scratchpad 2048 KB
|  # | GPU |  BUS ID | INTENSITY | WSIZE | MEMORY | NAME
|  0 |   0 |     n/a |       128 |     8 |    256 | Apple M1
UNSUPPORTED (log once): createKernel: newComputePipelineState failed
[2021-05-10 15:27:50.125]  opencl   error CL_INVALID_KERNEL when calling clCreateKernel for kernel execute_vm
[2021-05-10 15:27:50.125]  opencl   thread #0 failed with error CL_INVALID_KERNEL
[2021-05-10 15:27:50.125]  opencl   thread #0 self-test failed
[2021-05-10 15:27:50.125]  opencl   disabled (failed to start threads)

RandomX CPUマイニングとKAWPOW GPUマイニングの同時実行

KAWPOWは2.5GBでRandomXは2.3GBの消費メモリ量なので、8GBのMac Miniでも同時に動かすことが可能です。Ethereumは4GB以上メモリを消費するので、Ethereum+RandomXは8GBのMac Miniではうまく動きませんでした。

ターミナルを複数起動してそれぞれでRandomXとKAWPOWを実行します。

同時に動かしたときのRandomX CPU ハッシュレート

[2021-05-10 15:36:37.490]  miner    speed 10s/60s/15m 1879.1 1885.2 n/a H/s max 1914.5 H/s

KAWPOW GPU ハッシュレート

[2021-05-10 15:36:27.165]  miner    speed 10s/60s/15m 1.30 1.36 n/a MH/s max 1.39 MH/s

同時に動かすと10%前後ハッシュレートが落ちますが、消費電力は25W程度で済みます。RandomXは単独でも20Wなので、25Wで1.8倍程度の収益になるのならば、GPUマイニングと組み合わせて同時実行させるのが良いかと思います。

参考資料(2021/6/10追記)

大部分は自分のパッチと同じような内容なのですが、16K Pageを使えるようにしてもRandomXのハッシュレートは変わらなかったという点は興味深いと思います。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?