Windows 用 Bitcoin x86

16 件のメッセージ BitcoinTalk Olipro, サトシ・ナカモト, BlackEye, sgtstein, BitCoinPurse, knightmb, dkaparis 2010年7月25日 — 2010年7月29日
Olipro 2010年7月25日 23:17 UTC 原文 ·

x86 Windows ユーザーはおそらく x64 スレッドを読もうともしないだろうと思い、新しいトピックを作成しました。ただし、ここに来たからには、この投稿を読んだ後にあのスレッドの 5 ページ目も読むことをお勧めします。

さて、基本的に新しい SHA キャッシュ最適化を施したビットコインのビルドを 2 種類コンパイルしました。1 つは SSE 命令セットに対して完全に最適化されたビルドで、最新の CPU が必要です。もう 1 つは SSE 最適化なしでコンパイルされており、XP 以降を動作可能なほぼすべての CPU で動作するはずです。SSE 版は非 SSE 版より若干高速で、どちらも x64 ビルドには劣ります。64 ビット OS をお使いの方は、これらを使う必要はありません。

ただし、同梱の libeay32.dll には SSE が含まれている可能性があるため、どちらも動作しない場合は、その DLL を標準のビットコインに同梱されているものに置き換えてください

ビルドはこちらからダウンロードできます (http://www.4shared.com/file/kIewrXzp/Bitcoin_x86.html)

BlackEye 2010年7月26日 12:38 UTC 原文 ·

敵意を向ける必要はない。ビルド環境は構築してあるが、ソースコードなしでは変更箇所をコンパイルすることがまったくできない。これは大きな警告だ。明らかに一部のビルドでソースを改変しておきながら、ピアレビューのためにその変更を提供しようとしない。これはオープンソースの精神に反すると思う。改変されたバイナリのみのリリースはソフトウェアの進歩に貢献せず、そのバイナリを提供する個人への不必要な依存を生み出す。

Olipro 2010年7月26日 13:04 UTC 原文 ·
BlackEyeの投稿(2010年7月26日 03:38 UTC)

敵意を向ける必要はない。ビルド環境は構築してあるが、ソースコードなしでは変更箇所をコンパイルすることがまったくできない。これは大きな警告だ。明らかに一部のビルドでソースを改変しておきながら、ピアレビューのためにその変更を提供しようとしない。これはオープンソースの精神に反すると思う。改変されたバイナリのみのリリースはソフトウェアの進歩に貢献せず、そのバイナリを提供する個人への不必要な依存を生み出す。

Crypto++ 5.6.0: http://www.cryptopp.com/ キャッシュ付き SHA256: http://pastebin.com/rJAYZJ32 (他の場所で公開されていると思うが、IRC でリンクをもらった)

sgtstein 2010年7月26日 14:28 UTC 原文 ·

あるいは 32 ビット OS に縛られたサーバーを持つ人向けに。:-D クアッドコア Xeon@1.6GHz 標準:1100kh/s フル最適化:2600kh/s

ありがとう!

BitCoinPurse 2010年7月26日 14:53 UTC 原文 ·

khash/s が 800 から 1900 に倍以上になった。

AMD Phenon II X2 550

Olipro 2010年7月26日 15:42 UTC 原文 ·
sgtsteinの投稿(2010年7月26日 05:28 UTC)

あるいは32ビットOSに縛られたサーバーを持つ人向けに。:-D クアッドコア Xeon@1.6GHz 標準:1100kh/s フル最適化:2600kh/s

ありがとう!

BitCoin はいつでもありがたい、署名のアドレスまで

Oliproの投稿(2010年7月26日 04:04 UTC)

Crypto++ 5.6.0: http://www.cryptopp.com/

Cached SHA256: http://pastebin.com/rJAYZJ32(これは他の場所でも公開されていると思うが、IRC でリンクを教えてもらった) キャッシュされた SHA256 の状態のアイデアを SVN の rev 113 に追加した。高速化は約 70%だ。x64 スレッドでのあなたの投稿に基づいて、tcatm の功績とした。

Crypto++ 5.6.0 の ASM SHA コードを MinGW でコンパイルできるが、実行するとすぐにクラッシュする。MASM(Microsoft のアセンブラ)用と書かれており、サンプルのコマンドラインは Visual C++のもののようだ。MSVC と Intel コンパイラーでしか動作しないのだろうか?

knightmb 2010年7月27日 02:01 UTC 原文 ·
Oliproの投稿(2010年7月26日 06:42 UTC)
sgtsteinの投稿(2010年7月26日 05:28 UTC)

あるいは32ビットOSに縛られたサーバーを持つ人向けに。:-D クアッドコア Xeon@1.6GHz 標準:1100kh/s フル最適化:2600kh/s

ありがとう!

BitCoinはいつでもありがたい、署名のアドレスまで

コインをまとめて送っておいた 😉

dkaparis 2010年7月27日 09:59 UTC 原文 ·
サトシ・ナカモトの投稿(2010年7月26日 16:29 UTC)

Crypto++ 5.6.0 の ASM SHA コードを MinGW でコンパイルできるが、実行するとすぐにクラッシュする。MASM(Microsoft のアセンブラ)用と書かれており、サンプルのコマンドラインは Visual C++のもののようだ。MSVC と Intel コンパイラーでしか動作しないのだろうか?

最近、私も(外部ライブラリとして)古い統合コードの代わりに Crypto++ 5.6.0 を使おうと試みたが、同じ結果だった——CryptoPP::SHA256::Transform の最初の呼び出しでクラッシュした。VC++ 2008 ですべてをビルドしたのだが。詳しく調査していないが、Crypto++のルーチンはアラインされた入力を必要とするという指摘があった——それが原因かもしれないし、他のバグがあるのかもしれない。

BlackEye 2010年7月27日 12:43 UTC 原文 ·

アラインされた入力を必要とするアセンブリ命令をアラインされていないものに変更する必要がある(topic 453)。あるいは、ハッシュされるブロックをアラインする。まだ試していないが、このアセンブリコードとステートキャッシュの変更を組み合わせれば、非常に高速になるはずだ。

BlackEyeの投稿(2010年7月25日 13:12 UTC)

Crypto++ 5.6.0 の SHA256 機能を Bitcoin に統合することができた。SSE2 アセンブリコードを使った最速の SHA256 だ。Bitcoin がブロックハッシュ関数にアライメントされていないデータを送っていたため、MOVDQA 命令を MOVDQU に変更する必要があった。

Crypto++ 5.6.0 の SHA256 機能を使うのが今のところ最善の方向だと思う。 Crypto++ 5.6.0 ライブラリのサブセットを SVN に追加した。SHA と 11個の汎用依存ファイルだけに絞り込んだ。SHA 以外の暗号は含まれていないはずだ。

データフィールドをアラインしたところ、動作した。ASM SHA-256 は約 48%高速だ。合計の高速化はバージョン 0.3.3 と比べて約 2.5倍だ。

SSE2 を使用しているようだ。コンパイル時にコンパイラー環境に基づいてビルド設定を自動的に決定する。

実行時に SSE2 の検出も行っているようだが、利用できない場合に実際にフォールバックするかどうかは判断しにくい。リリースビルドには SSE2 を入れたいと思う。SSE2 は最初の Pentium 4 から存在している。Pentium 3 以前のものでは遅すぎて、生成しようとしても電気代の無駄になるだろう。

これは SVN rev 114 だ。

knightmb 2010年7月27日 18:36 UTC 原文 ·
サトシ・ナカモトの投稿(2010年7月27日 18:27 UTC)

… SSE2を使っているようだ。コンパイル環境に基づいて、コンパイル時にビルド構成を自動設定している。

実行時にSSE2の検出も行っているように見えるが、SSE2が利用できないときに実際にフォールバックに使われているかは判別が難しい。リリースビルドにはSSE2を入れたい。SSE2は最初のPentium 4から存在している。Pentium 3以前ならあまりに遅くて、マイニングしようとしても電気の無駄になるだけだ。

SSE2 非対応の古いマシンが何台かあるので(Windows クライアント用と Linux クライアント用)、テストに使える。ここで試した実験ビルドのいくつかは、起動しようとするとプログラムが落ちただけだったが、今後の公式ビルドで「SSE2 検出」部分が機能するか、それともプログラムが落ちるかをテストするのは喜んでやる。

了解だ、ありがとう。生成(Generate)をオンにしなければ正常に動作するかどうかも知りたい。SSE2 命令を実際に実行しない限り、ロードはできるはずだと思う。少なくとも Pentium 3 でも生成なしで実行できるだろう。

knightmb 2010年7月27日 20:09 UTC 原文 ·
サトシ・ナカモトの投稿(2010年7月27日 19:47 UTC)

了解だ、ありがとう。生成(Generate)をオンにしなければ正常に動作するかどうかも知りたい。SSE2 命令を実際に実行しない限り、ロードはできるはずだと思う。少なくとも Pentium 3 でも生成なしで実行できるだろう。

SSE2 モードはサポートするプロセッサー向けだと思っていた。今のところ、リリースクライアントは古い PI、PII、PIII マシンでも問題なく動く。ただ khash/s の部分が非常に遅いだけだ。たとえば PIII 933MHz の Linux マシンで約 125 khash/s、手元の古い 1.1GHz Celerons で 172 khash/s といった具合だ。

古いプロセッサーを持っている人たちを、少なくともコインのマイニングを試すことから締め出したくない、ヘヘ。

BlackEye 2010年7月27日 20:47 UTC 原文 ·
サトシ・ナカモトの投稿(2010年7月27日 18:27 UTC)

Crypto++ 5.6.0ライブラリのサブセットをSVNに追加した。SHAと一般的な依存ファイル11個だけに削り込んだ。SHA以外の暗号は入っていないはずだ。

Crypto++からは多くても config.h、cpu.h、cpu.cpp、sha.h、sha.cpp の 5 ファイルにまで絞れるはずだ。別スレッドに投稿した zip ファイルを見てくれ。不要なヘッダーをいくつか除いただけだ。それと、1〜2個の関数を移動する必要もあった気がする。記憶が正しければ ByteSwap がその一つだ。

Olipro 2010年7月29日 16:28 UTC 原文 ·
knightmbの投稿(2010年7月27日 02:01 UTC)
Oliproの投稿(2010年7月26日 15:42 UTC)
sgtsteinの投稿(2010年7月26日 14:28 UTC)

32ビットOSに縛られているサーバー持ちの人たちもね。:-D Quad core Xeon@1.6GHz Stock: 1100kh/s Full Opt: 2600kh/s

ありがとう!

BitCoinはいつでもありがたい。アドレスは署名にある。

今、コインの束を送ったよ。

じゃあ、私に 0.02 送ってきたのは君じゃなかったってことだな?😁