2024年7月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

tweet

  • tweets

« 2008年3月 | トップページ | 2008年5月 »

2008年4月

直前にこれかよ…

本日会社パス。

またfloodgateやってますが、12:00と12:30の回で2連続yowa_usaと当たりました。手番も同じ。

と、88手めまでまったく同じ進行になってしまいました。

れさぴょんで定跡ランダム選択ってできないですかねぇ。(うさ親さん、今はお忙しいと思いますが、ぱっと簡単な方法がありましたらよろしければ教えてください。まあなけりゃないでいいんですが。)

で、89手めyowa_usaの手が変わりました。これも不思議。yowa_usaは終盤にもランダム性あるんでしょうかね。

この時点ではAリーグがほぼ勝勢なんですが、12:00の方はよかったのですが、12:30の方はこの後しばらくしてAリーグが(ア)ちょっと気が違ったとしか思えない手を連発します。問1:下線(ア)について、このとき観戦していた開発者の心情を句読点を入れて80字以内で述べなさい。

でまあ、そもそもぼろぼろ駒得だったため、結局勝ったのですが。でもあれを見ると生きた心地がしません。

…と言いつつ、もう間に合わないので大会には今のまま出ようかと思います^^; (をいをい)

たぶん、ですけど、想定以上に駒得になりすぎたんで、評価値14bitがオーバーフローしたのかな、というところ。まあ調べてみないとわかりませんが。

ということで、対Aリーグで勝ちたいと思う方は、駒全部Aリーグに取らせればこちらが発狂して自滅するかもしれません。(いやそれ罠になってないって)

floodgate参加 巻之弐 連続対戦

先週は対局開始は手でやっていましたが、30分ごとにマシンの前に座らないとならんし、いろいろめんどくさいし。でちょっと考えたところ連続対戦対応は比較的簡単にできそうな気がしてきたのでやってみることにしました。でやってみたら半日足らずでできました。

と言いつつ最初備後さんと当たったらいきなりこっちにミスが出まして。abnormalになってしまいました。どうもすみません。その次棋理さんと当たったら、今度はむこうが何かミスしたみたいで。お互いさまですね。まあ「接続中に先方が切れてもこちらは続く」ことがわかったのでためになりました。その後しばらく順調でしたが、また例によってデスクトップでうまくいったのでノートも試したところ、さっきの対備後と同じミスを犯して(ノートの方に修正入れるの忘れた)、またusa_test戦abnormalでした。たびたび申し訳ない。この3回以外はうまく動いていると思います。

今までなぜか「なんか大変そうだなー」という印象があったのですが。たぶん、ちょっとしたことをやるのにもシングルスレッドのプログラムではなく、ホストPC側とFPGA側が何らかのプロトコルを介して協調しなきゃならないからなんですよね。でもまあ、floodgate参加のメリットは大きいことがわかったので、重い腰をあげて(どっこらしょ)やってみたわけです。

floodgateのいいところは、まず当然ですが対戦を数多くできること。他のソフトの開発者の方はたいてい自己対戦やってると思いますが、私はできてませんでした。だってボード2枚ないと^^; あと、特定のソフトとやってると戦型が偏るんですよね。Aリーグは序盤はれさぴょん任せですが、KShogi対れさぴょんだと、たいてい角換りや相掛りなってるような気がします。なので、いろんな戦型でやらせたいな、と。

まあ連続できるといっても24時間やってると回路の劣化とかも心配だし、家族がコードに足ひっかけたりすると困るので、私が家にいる間のみでしょう。

肝心の戦績の方は相変わらず全敗のようですが、まこれはおいおい。まあ今年の大会は現状でいいや、来年があるさ、と軟弱な妥協をしております(きっぱり)。

ところでfloodgateの連続対戦できたら、大会当日は朝起動だけすればいいような気がしますがどうなんでしょう。朝だけ出て、あとは1日中ホテルオークラのカフェでビールでも飲んでて、夕方また顔出す、という夢のような離れ技が可能に?!…いやそんなわけはないんでしょうな。またろくでもない妄想ばかりしております。

floodgate参加

大会まであと2週間と迫ってまいりました。そろそろ無駄なあがきはやめ、大幅改造は諦めて対局での微調整くらいにしとこう、というのが大会参加の年のいつものパターン。で、昨日から今日にかけていろいろ対局させてました。まあ少し前にもやってましたが、最近いろいろ手を加えてたので、副作用とかないよね、という確認の意味で。

まずKshogi初級(先)-Aリーグ。負け。これはローカルでの対局。次yowai_gps。wdoor(floodgateじゃないの、25分切れ負け)で2回やり、共にAリーグ後手で2勝。回数少ないですが、KShogi初級の方がyowai_gpsより若干強いですかね。前者とは今まで指し分けくらいだと思いますが、後者には3連勝です。

次はいよいよfloodgateへ。といっても連続対戦には対応してないので、毎00分と30分の少し前には手で操作してその都度ログインしてます。れさぴょんは1局終了後ログオフしてる模様。まログインしつづけられてもFPGAの方が対応してないですが。

公開したパッケージ見た方はご存知でしょうが、対局前の操作はれさぴょんとNiosII IDEを両方操作する必要があり、ちょっと面倒です。私自身ときどきこんがらがる。まあここで操作に慣れて、大会本番でオペミスしないようにする、という利点はあったかも^^;

昨日は6回やって、相手はgps_normal, kakinoki_test, tacos*2, gps500, usa_test。うちkakinoki_testのときは、15分くらい前からログインしといたら、いざ開始時刻になっても一向に進まず。wdoorの「接続クライアント一覧」で見るとAリーグが agree-waiting となってて、どうやらサーバから対局条件が送られてきてるのにAリーグが反応してない模様。何で?原因わかりませんが、15分ほっといたらどっかでタイムアウトしたのかも。他の方のブログでkeepaliveがどうのこうのと言ってた意味がはじめてわかりました。その後はログインを試合開始5分前くらいにするようにしたら以後うまくいってて。柿木さんどうもすみませんでした。

で残り5回は、5敗--; まあgps_normalやtacosのときは、もうこちらもはなっからまじめに見てません。早く終われよ、てな感じ^^; gps500とは、途中Aリーグが1手7分!の大長考をして、その後順当にタイムアウト負け。あわてて思考時間を再調整。まあこういうのが見つかっただけでも対局の意義があったというもんです。次の1手問題での最大は3分だったので。

今日も5回。昨日は開発マシンのデスクトップでしたが、今日はノートで。大会はノートで行くつもりなので、ノートでもちゃんと動作するかの確認。最初のusa_testとの対局はあまりにもひどかったので、よくよく見ると定跡ファイルをコピーするのを忘れてたり。これも本番でなくてよかった^^; ですがそれ以外の4回(gps_normal, kakinoki_test, usa_test, MyMove)も全敗。で結局floodgateでは0勝10敗です。ですがまあノートでの大会参加はいちおうOKでしょう。

見てるとどうも、王をぜんぜん囲わない/守らないですね。あと駒得しても、攻めに行かない。根本的に王への攻め/受けの評価がぜんぜん過小評価のようです。これでyowai_gpsに勝ってるのが不思議なくらい。評価パラメタの調整は最小限しかやっていない、というのがもろに現れてるようです。大会までにはこの辺をまず変えてみますか。misakiやcat10とはくじ運(?)のせいか当たりませんでしたが、評価の調整が間に合えば大会前にもう一度やりたいなーと思っております。

ところで、こそっとかくれて参加したつもりでしたが、合流早々あっさり西村さんに見つかってしまいました。うーんチェックが厳しい… ^^;

速度追求

アルゴリズム的な改良はだいぶ進んだので、ここらでひとつクロックアップに手を染めてみました。

長らく「できたなり」の合成で動くクロック、ということで12.5MHzで動かしてましたが、これの速度アップにトライ。まずはQuartusIIのTimeQuestタイミングアナライザを使い、クリティカルパスを見てみます。なお、今のAリーグでは毎クロック必ず局面を進める(fwd)か戻す(rwd)かするので、実質2サイクルで1局面探索します。なので2MHzは1Mnpsに相当。12.5MHzは6.25Mnpsです。

Aリーグの開発を始めた当初は、とにかく前例がなく、何をどう作っていいのか全くわからなかったので、最初はまず「スピードはまあいいから、とにかく動くものを作ろう」という方針で設計してました。こういう状態だったので、今回出てきたクリティカルパスを見るとはじめは「ゆるゆる」で、ぱっと見高速化できそうなところがいくつも目につきました。でこれらをひとつずつ修正していく、という作業を最近やっていました。

ボード上では50MHzの水晶がFPGAへ入っています。最初はこれを4分周して12.5MHzにしてましたが、論理修正後今は5逓倍16分周の15.625MHzになってます。なお先週公開したパッケージの.sofは修正途中で、2逓倍7分周の14.28MHzです。

今までのところは論理(verilog RTL)の変更のみでやっています。ほんとはこの他、フロアプランや配置配線でディレイを縮める作業もあるのですが、何とQuartusIIのWeb Editionではfloorplanの機能がない!ためできてません。orz

これもちょっとつらいのでSubscription版のことも代理店に問い合わせてみました。1年間サポート付きで33.7万円。個人でもOK。納期1-2か月、とのこと。1年たった後も、同じバージョンでノーサポートで使い続けることはできます。ただしその後出る新しいデバイスには対応できません。サポート受け続けるなら毎年33.7万だそうです。納期がかかるのは、認証用のUSB「ガードキー」を送るため、とのこと。これでは今年の大会には間に合わないので、当面見合わせることにしました。大会はたぶん今くらいの速度で出るでしょう。アルゴリズムの方でまだやるべきことも残ってるし。

現在のクリティカルパスは、おおざっぱに言うと次のとおり:

 ・盤の端から端まで飛び利きを伝播
 ・端のマスで利き、(マスごとの)評価値を計算
 ・81マスぶんの評価値を集めて駒割と加算
 ・最終評価値を考慮して探索decision(fwd/rwd, 手の選択)
 ・decision結果で、局面や駒割のupdate

という感じです。これで1サイクル 64ns 弱。論理段数でいうと60数段で、ざっくり1段1nsくらい。配線ディレイが1nsとか2nsとか平気でかかってることが多く、やっぱfloorplan/配置無しではあかんな、と思います。まあ逆に言うと、floorplanやればもっと速くなりそう、とは言えますが。

簡単に削れるところはかなりやったので、さて次はどう変えればもっと速くできるか、と思案中。

フリーハードウェア

A級リーグ指し手1号をフリーハードウェアとして公開します。

といってもハードウェアをフリーで差し上げるわけでは当然ないです。
Altera社のCyclone III 開発キット(型番DK-DEV-3C120N)の上でFPGAを将棋の思考エンジンとして動かすツール群です。使用するには、別途上記開発キットの入手が必要です。

使用法等についてはREADMEファイルをご覧ください。

「aleag1_v1_0_dist.zip」をダウンロード

« 2008年3月 | トップページ | 2008年5月 »