堺風の頭部

徘徊、カメラ、PC、その他。

Monacoin (Lyra2REv2) CPUminer比較

※この記事は話が古いです

 私が仮想通貨なんか掘りはじめて遊ぶと同時に、暴騰モードが急激に冷えて全通貨続落、果ては株式市場まで暴落し始めた昨今、いかがお過ごしでしょうか。

 Ask MonaにCPUマイニングのスレができていて、cpuminer-optが話題になっていたので、うちの環境でベンチをとってみた。

askmona.org

マイナー調達先

 高速化マイナーは、AskMonaで作られたcpuminer-mod-r8と、上のスレで話題のcpuminer-optのふたつを用意した。

 

【マイナー必見】ソロマイニングに対応したよ【高速化Part3】 - Ask Mona

 cpuminer-mod-r8のWindowsバイナリはこちらで。

 ソースもあるのでLinuxでビルドもできるはずなんだけれども、AVX2に対応しないCPUではエラーで失敗する。そのパッチが一時配布されていたが、あいにくリンク切れだった。 

 

Releases · JayDDee/cpuminer-opt · GitHub

 cpuminer-optは、Windowsバイナリはここから。
 Monacoinで使われているLyra2REv2に関する高速化は、昨年12月中頃にリリースされた3.7.10で行われたようだ。それ以後は特に差はないと思う。

GitHub - JayDDee/cpuminer-opt: Optimized multi algo CPU miner

 Linuxならgitでcloneして./build.shを走らせれば実行ファイルができる。

 

Windows 10 / Skylake Core i3-6100

 まずcpuminer-mod-r8から。
 AVX2対応(cpuminer.exe)と、SSE2(~_SSE2.exe)、SSSE3(~_SSSE3.exe)の3種のバイナリがあるので、それぞれ比較した。

 -a lyra2rev2 --benchmarkのオプションで起動し、数値が安定するまで待ってから、表示されていた中で最高値の次に高い値を採取した。
 ベンチ中に別のアプリがいくつか開いていたので多少影響があるが、比較している間にアプリを増減させたり、積極的に処理させたりはしていない。

  • cpuminer -a lyra2rev2 --benchmark
    [2018-02-06 15:42:36] Total: 1027 kH/s
  • cpuminer_SSE2 -a lyra2rev2 --benchmark
    [2018-02-06 15:43:21] Total: 554.55 kH/s
  • cpuminer_SSSE3 -a lyra2rev2 --benchmark
    [2018-02-06 15:43:44] Total: 589.16 kH/s

 

 次にcpuminer-opt。

********** cpuminer-opt 3.8.0.1 ***********
A CPU miner with multi algo support and optimized for CPUs
with AES_NI and AVX2 and SHA extensions.
BTC donation address: 12tdvfF7KmAsihBXQXynT6E6th2c2pByTT

CPU: Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz.
SW built on Feb 5 2018 with GCC 5.3.1.
CPU features: SSE2 AES AVX AVX2.
SW features: SSE2 AES AVX.
Algo features: SSE2 AES AVX AVX2. 

  起動時、このように使用CPUと対応する命令についての情報が出る。
 バイナリは全部で5種あり、SSE2、AES-SSE4.2、AES-AVX、AVX2、AVX2-SHAとある。SkylakeではSHA拡張命令には対応しないので、AVX2-SHAは使えなかった。
(SHA拡張命令については少し調べてみたので後述)

  • cpuminer-sse2 -a lyra2rev2 --benchmark
    Start mining with SSE2.
    [2018-02-06 15:48:51] Total: 2354.30 kH, 489.85 kH/s
  • cpuminer-aes-sse42 -a lyra2rev2 --benchmark
    Start mining with AES SSE2.
    [2018-02-06 15:47:38] Total: 2464.52 kH, 491.23 kH/s
  • cpuminer-aes-avx -a lyra2rev2 --benchmark
    Start mining with AES AVX.
    [2018-02-06 15:46:33] Total: 2537.91 kH, 507.09 kH/s
  • cpuminer-avx2 -a lyra2rev2 --benchmark
    Start mining with AES AVX2.
    [2018-02-06 15:45:28] Total: 4154.04 kH, 829.23 kH/s

 

 ということで、Skylakeでの比較では、cpuminer-optよりもcpuminer-mod-r8の方が20%くらい速いと出た。
 他の条件でも、全体的にmod-r8が優勢。

 ただ、cpuminer-optのAVX2-SHA版がどれほどのパワーを出すのか気になるところ。Ryzenで使えるはず。
 SHA命令を使う他のベンチマークでは、Ryzen 7 1700がCore i7-8700を60%くらいの大差を付けてぶっちぎるケースがあるみたいで。cpuminer-optでどれくらい威力があるのか。

 

Ubuntu 16.04 / Nehalem Core i3-380M

 さて、Ubuntuの方では、CPUがNehalemでAVX2に対応しない。そのため、cpuminer-mod-r8のコンパイルが通らなかった。

 よって、cpuminer-mod-r8の改変元たるcpuminer-multiと、cpuminer-optを比較した。
 Windows版と違って、Ubuntuではビルド時に使用可能な命令に合わせた実行ファイルが作られる。NehalemのCore i3だと、SSE4.2が使えるがAVX・AVX2はだめ。AES-NIも

 

 まずは、cpuminer-multi。

  • ~/cpuminer-multi$ ./cpuminer -a lyra2rev2 --benchmark
    [2018-02-06 16:30:32] Total: 103.07 kH/s

 

 次いで、cpuminer-opt。

  • ~/cpuminer-opt$ ./cpuminer -a lyra2rev2 --benchmark
    ********** cpuminer-opt 3.8.0 ***********
    A CPU miner with multi algo support and optimized for CPUs with AES_NI and AVX2 and SHA extensions.
    BTC donation address: 12tdvfF7KmAsihBXQXynT6E6th2c2pByTT
    CPU: Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz.
    SW built on Feb 5 2018 with GCC 5.4.0.
    CPU features: SSE2.
    SW features: SSE2.
    Algo features: SSE2 AES AVX AVX2.
    Start mining with SSE2.
    [2018-02-06 16:22:16] Total: 1160.56 kH, 245.24 kH/s, 85C

 と、実に2.5倍もの速度を叩き出す。

 

 というわけで、全然パワーが違った。

 ただ気になるのが、cpuminer-optはLinuxでは(可能な場合)CPU温度もモニターしてくれるらしいんだけれど、ベンチ結果末尾の「85C」がそれっぽく見える。
 Thinkpad L412(14型大きめノート)なのだけど、ちょっと不安を感じる温度だな。CPUクーラーのグリス塗り直しとかで変わるだろうか……?

 

Intel SHA extensionsについて

 cpuminer-optに、Skylakeでも動かない cpuminer-avx2-sha.exe というバイナリがついている。
 SHAとは聞き慣れない命令だけど、何かと調べてみた。

Intel SHA extensions - Wikipedia

 SHAという略語自体は、Secure Hash Algorithmの頭文字で、よく使われている暗号ハッシュ関数なんだけれど、それの処理を高速化するための拡張命令が、IntelのCPUに追加されている。
 しかしさっぱり知名度がないと思ったら、最初は2016年に発表された第五世代AtomのGoldmontアーキテクチャで追加された命令だった。デスクトップPCなどで使われているCore iシリーズには採用されていない。

 しかしGoldmontにはSHA命令はあるけどAVX2がない。
 AVX2とSHA命令の両方が使えるのは、今のところAMDRyzenだけのようだ。
 AMD専用の実行ファイルを見かけたのなんて、K6の頃の3D Now!専用のもの以来じゃなかろうか。Ryzenすげえな。

 

CPUの拡張命令対応について

 SHAを調べるついでに、マイニングに使われている拡張命令に、どのCPUが対応しているかを調べてみた。

 結構膨大な表を作成したんだけれども、冷静に考えるとAVX2以外の命令は数%程度の効果しかないので、事細かに調べても仕方ない。
 AVX2はあるとないとで60%くらい違うが、これはHaswell以降のCore iシリーズ(PentiumCeleron不可)またはRyzenが対応する。CPUマイニングをやるならHaswellで。