others

【cpuminer】コンパイル環境とか

gccのパフォーマンス比較とか

「Ryzen Compiler Performance: Clang 4/5 vs. GCC 6/7/8 Benchmarks」
https://www.phoronix.com/scan.php?page=article&item=gcc8-clang5-znver1&num=1
開発中のGCC8が古く、Ryzen向きのアップデートがあったのが11月
https://www.phoronix.com/scan.php?page=news_item&px=GCC-8-Features
そういえば「AMD、RyzenのSEGV問題を認める」
https://srad.jp/story/17/08/09/098243/
という問題もあったけど、多分私のは修正後版なのだろう。

コンパイルオプションチューニング:Threadripper用

「BitZenyをRyzen Threadripper 1950Xで採掘する時の良い環境とオプションを探しました」
https://www.ncaq.net/2018/01/09/20/32/42/
16スレッドより24スレッド動作の方がハッシュレートが高い。
ただ、私の見解としては、伸びがそれほどでもないのと、Nonceがスレッドに均等に割当られているようなので、今まで通りコア数(16)スレッド推奨。
コンパイルオプションで「march=native」をしては駄目なのを確認している。
これはコンパイラが古く、アーキテクチャをbdver4と解釈するため。SMTとかキャシュ構造とか全然違うのでznver1と解釈してくないのであれば使ってはいけない。
「-mxop」を付けると実行時にエラーが出る。Ryzenから無くなったようだ。
https://en.wikipedia.org/wiki/XOP_instruction_set
>However AMD removed support for XOP from Zen
「-O3」:「-Ofast」でも変わらない。
「-msse2」:SSE2を有効にする
「-msse4.1」:「march=native」を外すとBulldozer以降対応しているSSE4.1を使用しなくなり、Warningが出るので。
「-flto」:リンク時最適化
「-msha」:SHA計算のハードウェアを使う
https://github.com/Libitina/cpuminer
 *現状(2017/2/19唯一のCPU Extensions対応マイナーのはず)
「-funroll-loops」:ループを展開
「-fomit-frame-pointer」:フレームポインタ無し(関数コールの効率化)
「--param l1-cache-line-size=64」:L1命令キャシュ64KiB
「--param l1-cache-size=32」:L1データキャッシュ32KiB
「--param l2-cache-size=512」:L2キャッシュ512KiB

gcc7.2化

Ubuntu上のmingwを使っていたが、gccのバージョンが古い(5.4)。
mingWからのセットアップとか試したが、結局MSYS2( http://www.msys2.org/ )からパッケージでインストールするのが一番楽だった。
Ubuntu環境だとlibcurlを自前ビルドしているが、MSYS2ならパッケージインストールしたライブラリで対応できる。
pthreadは、CPU Affinity対応版では無かったので、自前が必要。
13.43kh/s→12.45kh/sに速度低下
原因はMSYSのオーバーヘッドか?
→Linux SubSystemのUbuntu16.04じゃなくてVMwareとかVirtualBOX上にUbuntu17.10入れてクロスコンパイルしてみる。
→Ubuntu17.10.1のmingw-gccは6.3.0、13.04kh/s 「march=nativeすると11.5kh/s」
→7.2をインストール、13.05kh/s「march=nativeすると12.13kh/s」

冷却性能向上

水冷の排熱をケース下から排気するようにしているが、エアフローが良くないため冷却能力が低い。
CPU温度がBoostクロックの制約になっているため冷却能力の向上で処理能力が上がる。
mining速度がCPUクロックに比例するのは確認済み。
*つまり、メモリー帯域やキャッシュが性能の制約になっていない。16スレッドで消費メモリサイズ40MBに対してL3キャッシュが32MBあるから・・・
熱交換器へ片側送風からサンドイッチにして、ケース下の空間を広げた。うるさくなったが、3600MHz前後から3700MHz前後に若干アップ。
12cmファンx2の熱交換器を使っているが、x3はケース内に収まらないのがネック。もっとホースを長くしてくれればいいのに。
エアフロー的にはサンドイッチにするとファンの負荷が上がるので、片方は熱交換器との間に隙間を開けたい。ネジを買ってこよう。
→電源のファンから異音が(まだ一ヶ月しか動かしてないのに・・・、幸いファンの回転数下げたら音しなくなったが、冷却サボると部品寿命が短くなる)
(2/19追記)CPUクロックがベースの3.4GHz張り付きになった。CPUのグリス塗り直しが必要と思われる。水冷キットに気泡起因と思われるノイズ有り。