Edited at

koto用のcpuminer を Windows用にビルド

More than 1 year has passed since last update.


はじめに

前回の記事の最後で、cpuminer-multiにkoto用の機能を移植したが、Subsystem for Linux の方が速度が速く頭を抱えていた。

一方minerdをWindows用にビルドした人がおり、Subsystem for Linuxと大きくかわりない速度を出していたため、自信でもビルドを試してみた。

またここの手順は64bit向けです。

参考にしたサイトはこちら

手順としてはUbuntuでも出来るはず(筆者未確認)

手探りでやった箇所が多いため手順が抜けている場合があります


必要なパッケージのインストール

sudo apt-get update

sudo apt-get install git
sudo apt-get install build-essential
sudo apt-get install libtool autotools-dev autoconf pkg-config
sudo apt-get install g++-mingw-w64-x86-64 mingw-w64-x86-64-dev
sudo apt-get install make libcurl4-openssl-dev


マイナーのダウンロード

git clone https://github.com/koto-dev/cpuminer-yescrypt.git

cd cpuminer-yescrypt


依存関係のファイルの準備

mkdir depend

cd depend
wget https://curl.haxx.se/gknw.net/rm/7.38.0/dist-w64/curl-7.38.0-devel-mingw64.zip
wget https://curl.haxx.se/gknw.net/rm/7.38.0/dist-w32/curl-7.38.0-devel-mingw32.zip
unzip curl-7.38.0-devel-mingw64.zip
unzip curl-7.38.0-devel-mingw32.zip
cd ../


ソースをちょっと手直し

sed -i -e "s/#include </\/\/#include </1" yescrypt-platform.c

BitZenyのソースもコメントアウトされていたのでコメントアウト

残っているとsys/mman.hが無くてビルドできない


ビルド準備

./autogen.sh

LDFLAGS="-L depend/curl-7.38.0-devel-mingw64/lib64 -static" LIBCURL="-lcurldll" CFLAGS="-Ofast -march=native -funroll-loops -fomit-frame-pointer" ./configure --host=x86_64-w64-mingw32 --with-libcurl=depend/curl-7.38.0-devel-mingw64

CLAGSのオプションに-march=nativeとすれば実行環境に合わせてコードが生成される。

もし、実行するCPUと異なるCPU用のビルドを行いたい場合はここを参考にビルドオプションを変更する。

たとえば、Subsystem for LinuxではAVX2命令がうまく扱うことが出来ない。

あえてnativeではなくCPUに合わせたビルドオプションを設定する。


ビルド

make


実行ファイルのかき集め

仮にここではCドライブ配下の新しいフォルダーにコピーするとする。

cp minerd.exe /mnt/c/新しいフォルダー

cp depend/curl-7.38.0-devel-mingw64/bin/*.dll /mnt/c/新しいフォルダー


実行用のバッチファイルの作成

テキストエディタに以下の内容を書いてC:\新しいフォルダー\koto_miner.batとして保存。

@echo off

minerd.exe -a yescrypt --userpass=username:password -o 127.0.0.1:8432 --coinbase-addr=<ウォレットのアドレス>

また、CPUを効率よく利用したい場合は、minerd.exeの前に以下の設定をいれて置くと幸せになれる。

だたし、affinityの設定の意味がわからない場合はむやみに設定しないこと。

batch

start /affinity 0x55



簡単に解説すると、CPUのどのコアを利用するかを明示的に指定する。

cpuminer-multiだとアプリケーション側で設定できたが、cpuminer-yescryptにはその機能が無いのでWindowsの機能で代用。

0x55 -> b01010101 -> 1,3,5,7番目のコアを利用する。

-t 4のオプションを一緒につけておくとHTを実質無効にして利用できるため効率が上がる。


最後に

自分でビルドしたWindows用のcpuminer-yescryptは0.1kH/s以上差が見られた。

Windowsの方には/affinity 0x55の設定が入っている。


  • Subsystem for Linux


  • Mingw64


おまけ


ハッシュレート

i7 6700K では、の計測結果

スレッド数
ハッシュレート

8 Thread
2.3kH/s

4 Thread
3.1kH/s

※4 Thread には affinity 0x55が設定済み


危険なファイル認定

自分でビルドしたのにKasperskyに危険なファイル認定されてしまった。

ソースをざっくり眺めたがぱっと見怪しそうな動きは見られなかったので除外リストいき。(自己責任で)

除外リストに登録する方法

左下の設定 -> 詳細 -> 脅威と除外リストの設定 -> 除外リストの管理