バジルは引っ越しました

distributed.netのこと

投稿者: 無謀庵 / 2016年1月17日 - 00:48 / カテゴリー: distributed.net, PC

私がdistributed.netの分散コンピューティングに参加して、短くない時間が経過した。ずっとみっちりやり続けているわけでもなく、やったり止めたりを繰り返しているんだけど。

PCを買ったらとりあえずd.netのクライアントを走らせて、ベンチマーク取ったりしばらく処理させてみたりして一喜一憂してみるのは、私にとってはひとつの慣習。
メイン機を刷新した時はもちろん速くなったと、サブ機でも、こんな安い値段の中古でもこれぐらい出ちゃうかー、とか。

d.netが華やかだったのは、2000年頃にDESやCSCを次々破り、RC5-64も突破したくらいの時期だろうか。
私自身はDES破ってる頃は多分リアルタイムで見てないけれど、RC5-64が終わって72が始まった頃は見たような気がするので、多分2001年くらいに始めていると思う。
2000~01年は、ちょうどPC-9821Xa7/C4を死なせてしまい、ついに自作PCを使うようになって間もない頃だから、まあ速くなったPCに喜んでやり始めたものだと思う。

私は一歩遅れての参加とはいえ、2002年のRC5-64突破のニュースなんか、PCに関心があれば嫌でも耳に入るというレベルの大ニュースとして流れたもので、それはよく覚えている。まあ、私にとっては「始めたらすぐ終わってしまった」という感じだけど。

あれから15年も経ってしまって、そして最近のd.netの寂れっぷり
まあ、寂れる理由もわかるといえばわかるのだけれど。

今走っているのはRC5-72とOGR-28のプロジェクトだけど、RC5-72は生きているうちに正解が見つかる可能性が低いくらいに厳しい状況。
4800日くらいやってて4%弱しか解析できてない。最悪あと330年かかるわけだけど、量子コンピューターが実用化されてさくっと解読できるようになるほうが速いんじゃなかろうか。
元々アメリカの暗号技術輸出規制に反対してのプロジェクトだから、その輸出規制がなくなった今、あまり意味があるとも思いづらい。

OGRは、まだしも数学的プロジェクトだから、成果が有意義なことだというのは揺らがない。(Wikipedia「ゴロム定規」参照)
RC5-64終了後、d.netのプロジェクトで成果を挙げてきているのもOGRだけで、2004年にOGR-24、2008年にOGR-25、2009年にOGR-26、2014年にOGR-27を発見してきた。OGR-28も10年くらいで見つかるかな。
OGRはまだしもやりがいはあると思う。

ただ、分散コンピューティングプロジェクトが他にもいくつもできた。
United Devicesがやっていた抗癌剤創薬プロジェクトの「命を救え」というキャッチーなアピールは引きが強かった。
数学系に限っても、d.netのOGRより、現在人類が知っている最大の素数を何度も発見し続けているGIMPSのほうが引きが強いようには思う。

それだけ厳しい状況に加えて、かつて勝手にdnetcをインストールするウィルスなんてものが作られたことがあったせいで、d.netの公式サイトからダウンロードできるクライアントが、しばしば不正ファイルだといわれてセキュリティに引っかかる。

これじゃ盛り上がらないのもしかたないのかな……。

まあ、このblogでは微力過ぎて何にもならんのだけど、一応d.netの参加者を増やすべく、始め方とか書いてみる。

d.netの愉しみ・良さ

  • アメリカ政府の規制に反抗するという反骨気分(RC5)
  •  数学に貢献している気になれる(OGR)
    OGRはレーダーの設計や電波望遠鏡の配置など、ちゃんと実際的に役立つ用途がある。
  •  世界の見知らぬ人々とともに問題に取り組んでいるというサイバーでワールドワイドな気分。いわんや、解読成功の報が流れた時をや
  • せっかく買ったCPUがIdleなのがもったいない気がする問題の解決
  • 自分の持っているPCの性能が数値化され、PCの性能が目に見える喜び。それは買い換えるたびに味わえる
  • 自分の貢献がどんどん記録され、蓄積されていく愉しみ
  • PCの耐久性試験が行える
  • クライアントが極めてシンプルかつ優秀で、USBメモリーで持ち歩く、オフラインで実行するなど柔軟な運用ができる
  • Windowsから、MS-DOSやOS/2などの古いOS、オフコンなどまで幅広く用意されたクライアント。いろんなコンピューターを使ってみる目的にもなる
  • 賞金$1,000-(RC5)

始め方

  • distributed.net公式サイトから、ダウンロードページに行って適当なクライアントをダウンロードする。
    • 64bit版Windowsを使っているなら、Windows 64bit [AMD64]を。旧機種やネットブック・Windowsタブレットなどは、Windows 32bit [x86/Zipped]を。他のOSなら自己判断で。
    • StreamとかCUDAとかOpenCLとかついてるやつは、GPU演算対応のクライアント。速いが、RC5-72にしか対応しない。OGRをやりたいなら使えない。
    • Android版は存在しない。
    • Chromeで不正なファイルだといわれたときは、@ITの記事などを参照してバイパスする。ただし、本当に公式サイトかどうか良く確認のこと!
  • ZIPファイルを解凍して、適当なフォルダに置く。Program Filesフォルダなどのセキュリティがかかっている場所だと面倒なので、それ以外のわかりやすいところに。
  • インターネットに接続されている状態で、dnetc.exeを実行。
  • まず設定画面が出るが、最低限メールアドレスだけ登録すれば、ほかはデフォルト設定でOK。
    • 1) General client options → 1) Your email address (distributed.net ID) と選んでメールアドレス入力。
    • 0) Return to main menu → 0) Save settings and exit、で終わり。
  • クライアントが再起動し、問題が受信されて計算が始まる。
  • 止めたい時は、ウィンドウを閉じる。

結果の見方

受け取った問題を処理してサーバーに結果を送り返すと、サーバー側でユーザー(メールアドレス)ごとにデータ統計をとってくれる。

statsページにアクセスし、データを見たいプロジェクトを選択。
ページ上部中央あたりの「Participant Stats」の入力欄に自分のメールアドレスを入力して検索。ヒットすると、自分の送った結果が見られる。

dnetcは、サーバーから受け取った問題を一通り解き終えてからでないと、回答をサーバーに返さない。
現在、サーバー側であまり頻繁に通信されたくないということで、かなり多めの問題を一度に送ってくる設定になっている。最新PCでも解き終えるのに数日かかるような量になっていることもある。
また、データを送信しても、統計ページが更新されるのは一日一回だけ。

よって、初参加からは一週間くらいは待つといい。

国別ランキングなど

statsには、国別ランキングやOS/CPU別ランキングもある。

OGR-28の国別ランキングなんて結構な状態で、日本人参加者が60人くらいしかいない。(多分IPアドレスから判別しているので、国を間違えられる人もいるとは思うが)
ちなみに、OGR-25では1500人いた。
日本人ひとりあたり処理量は10倍くらいになっているとはいえ、人数は1/25。もう2/5のパワーしかなくなっている。

OGR-25時代は、一人あたり処理量が他国に比べて日本人は高めだったが、OGR-28ではそれもむしろ低くなっている。
かつて割と良いPCを使っていた日本人も、今やあまりいいPCを使ってない、といえるのかもしれない。あるいは、あまりPCを稼働させなくなったか。

こういうのを見るのも楽しい。

アカウント管理

自分のStatsを表示している状態で、ページの下の方を見ると、「Please email me my password」というボタンがある。これをクリックすると、自分のメールアドレスにIDとパスワードを記したメールが届く。

Statsページから、「Edit your information」のリンクをクリックしてログインすると、ユーザー情報管理ページに入れる。

大した意味のない項目が多いけれど、List Modeについては、デフォルトではメールアドレスが表示されてしまう設定だった気がするので、「List me as ‘Participant xxxxxx’」か「List me using my real name.」に変えておこう。
Real Name欄は、好きなハンドルにする。日本語は使えなかったかもしれないので、ダメならアルファベットで。

注意

ノートPCの場合、ACアダプターが接続されていない時は処理が止まる。設定変更でバッテリーでも処理させることもできるが、バッテリーゲージが目に見えるような勢いで減少するのでオススメしない。

実行中はCPUがフル稼働状態になる。昨今のマルチコアCPUなら、全コアを使い切る。
最近のCPUは、停止状態と稼働状態で大きく消費電力や発熱が変わる。特にノートPCなどでは、常時フル稼働し続けられるような放熱設計はされていないことが多い。
酷い故障、最悪では発火などが起こるかも知れないので、当面は自分がPC前にいる間のみ実行するなどして様子を見ること。触るのが怖いほど加熱するといった場合は、そのPCでは無理に実行しないほうがいい。冬場だけやる、というのも選択のひとつ。

電気代が増加する、排熱ファンがフル稼働して騒音が増えるといったことも考慮のこと。

distributed.netクライアントはプロセス優先度最低で実行されるので、PCの他の処理は妨害しない。
……はずなのだが、最近はやや体感的に処理速度が落ちるようだ。CPUキャッシュの効率が落ちるとか、他にも最低優先度で実行されるプロセスが増えたことなど、理由はいくつか考えられる。

かつて、会社のPCに無断でインストールした人が業務妨害や横領に問われたりもしていたので、あくまで自分が所有するPCでのみ行うこと。

ベンチマーク

distributed.netクライアントには、ベンチマーク機能がある。
新しいPCを手に入れたとか、CPUを換装した時に、測ってみてニヤニヤするのに使える。

ベンチマークは1スレッドの処理能力になる。
かつてはベンチマークがほぼ実効性能に近かったのだけど、今はマルチコア化、動作クロックのアダプティブな変更などによって、かなり乖離するようになった。

実効速度を見たい場合は、実際に処理しているときにdnetcのメニューからView → Core throughput を選ぶと、リアルタイムに処理速度が折れ線グラフで出る。

 実例

dnetcbench

All Coresの項目は、単純にベンチマークの値に同時処理スレッド数を掛けたもの。

ただ、Core i7 3517Uは、Turbo BoostやHyper Threadingの関係で、単にスレッド数を掛けたような速度は出ない。
OGRは270Mnodes/sも出るかのように算出されるが、実効ではせいぜい140Mnodes/s程度。

Atom Z3775Gも同様だが、こちらはOGRベンチの4倍が68Mnodes/sなのに対して、実効で57Mnodes/s程度は出た。
安く買えるWindowsタブレットに使われるCPUで、消費電力も小さいのにこれだけ出るのなら、なかなか優秀かと思われる。

AMD K5のこと

今更知っていても役に立たないが、90年代末、Pentiumの互換CPUとしてAMDがリリースしていたK5というCPUが、dnetcと極めて相性が良かった。
同じクロックのPentiumよりかなり速く処理できた上、値段も安く、ただPentiumを抜いてK5に差し替えるだけで使えることも多かった(PC-9821でも大丈夫だった)。

今はなかなか美味しい話はないようだけど、RC5-72をGPU処理する場合、GeForceよりRADEONの方が、という話は聞いた。

便利な使い方

RC5またはOGRのみを実施する

私はRC5-72はやる意義がないように思うので、OGR-NGしか参加していない。

メニューのClient → Configureから、2) Buffer and Buffer Update Options → Load-work precedenceと進む。
OGR-NG,RC5-72というデフォルト値になっているが、RC5-72には参加しないなら、後ろに=0を追加してOGR-NG,RC5-72=0という記載に変更。
0) Return to main menu → 0) Save settings and exitで終了。
以後、RC5-72は受信しなくなる。

ログを残す

dnetcのコンソールログを残しておくこともできる。

メニューのClient → Configureで設定画面を出し、4) Logging Optionsに入る。
1) Log file typeを1) No limitにし、2) File to log toを適当なファイル名(dnetc.logとか)にすると、プレーンテキストでどんどん書きだされていく。

ベンチマークの結果などすべて記録されていくので便利。
プレーンテキストなのでそこまで巨大なログにはならないが、何年も続けると10MB以上にはなるので、一応注意。

NASでクライアントを共有

家庭内にNASやファイルサーバーがあり、PCがすべてWindowsの場合、NASに置いたdnetcを直接実行しても差し支えない。
LAN内の複数のPCから同時に実行しても大丈夫で、ログや受信した問題・計算結果も共有される。
(LinuxやMac同士での共有はやったことないので不明)

LAN内に32bitと64bitのPCが混在する場合、クライアントも使い分けたい。
その場合、どちらかのdnetc.exe / dnetc.iniの名前をdnetc64.exe / dnetc64.iniなどと変更し、同一フォルダに置くと、受信問題・計算結果を共有できる。ログも同じファイルに書き込む設定なら共用される。

ただし、これはあくまで簡易なやり方なので、多少の不具合がある。
計算途中でクライアントを閉じると途中経過が保存されるが、その途中経過を別のPCが処理しようとし、CPUや計算方法が異なるからと廃棄して最初からやり直してしまう。
また、クライアントを動かしたままNASから切断してしまった場合も問題が起きる。

ちゃんとやる場合は、ローカルサーバーにPersonal Proxyを導入しよう。


コメントを残す

コメントは管理者の承認後に表示されます。


名前: