FFOテスト結果

本ページにはMasterReversiの'速さ'の検証のために行ったFFOテスト結果を掲載しています。
評価ルーチンが同一のため、テストではバッチ処理が可能なMRSolverを使用しました。
MRSolverはProfessional版に付属するコンソールアプリケーションです。

FFOテストについて
FFOテストはFrench Federation of Othelloで作成され、終盤解析用ベンチマークとして広く用いられています。
テストでは、終盤解析が比較的困難な局面を対象として最善手探索に要する処理時間を計測します。

測定方法
並列演算/ネットワーク分散の効果確認用に、1スレッド/2スレッド/ネットワーク分散時の性能を測定しました。
限界性能に近い値を測定するために、置換表キャッシュのサイズはデフォルトよりも大きく設定しました。
ネットワークコンピュータとの接続は比較的低速な無線LAN(IEEE 802.11b)で行いました。
既存アプリとの比較のため、高速ツールとして知名度の高いScrZebraとの性能比較も行いました。
ScrZebraはローカルコンピュータ上で-h 24を指定してhashサイズをMRSolverに合わせて使用しました。


測定結果には単一の測定から得られたデータをそのまま使用しています。
このため、システムメモリの状態やバックグラウンドタスクの影響から若干の誤差が含まれている可能性があります。

測定環境
ローカルコンピュータ
項目内容備考
使用CPUCoreDuo 2GHzApple社 初代MacBook
搭載メモリ2GB物理メモリ49%使用
使用OSWindows VistaUltimate版
使用アプリMRSolverVer1.0.0
評価データMasterReversi標準添付版Ver1.00
置換表キャッシュ256MBテスト毎にクリア
ネットワークコンピュータ
項目内容備考
使用CPUPentium4 3.2GHzGateway社 デスクトップPC
搭載メモリ1GB物理メモリ78%使用
使用OSWindows VistaUltimate版
使用アプリMRWorkerVer1.0.0
評価データMasterReversi標準添付版Ver1.00
置換表キャッシュ256MBテスト毎にクリア

測定結果
1スレッド->出力データ
テスト処理ノード処理速度処理時間参考比
#4023.7Mn10395kn/sec2.3sec1.44
#4126.5Mn8803kn/sec3.0sec1.36
#4228.1Mn9571kn/sec2.9sec1.12
#4321.6Mn7991kn/sec2.7sec1.00
#4417.3Mn7559kn/sec2.3sec0.88
#45357.8Mn9640kn/sec37.1sec0.84
#4660.6Mn9111kn/sec6.6sec0.90
#4729.6Mn8691kn/sec3.4sec1.17
#48492.1Mn9541kn/sec51.6sec1.34
#49430.9Mn10467kn/sec41.2sec1.11
#501.41Gn8954kn/sec157.9sec0.72
#51407.6Mn9140kn/sec44.6sec1.18
#52390.7Mn8850kn/sec44.1sec1.09
#533.52Gn9686kn/sec363.4sec1.13
#545.46Gn9559kn/sec571.3sec1.16
#5515.4Gn8872kn/sec1737.5sec0.98
#561.83Gn8270kn/sec220.8sec1.11
#573.03Gn9545kn/sec317.1sec1.03
#581.95Gn8997kn/sec216.7sec0.63
#59608.1kn3535kn/sec172msec0.34
total34.9Gn9120kn/sec3826.8sec0.99
2スレッド->出力データ
テスト処理ノード処理速度処理時間参考比1th.比
#4026.1Mn18839kn/sec1.4sec0.880.61
#4132.7Mn13095kn/sec2.5sec1.140.83
#4238.7Mn15893kn/sec2.4sec0.920.83
#4389.3Mn13541kn/sec6.6sec2.372.44
#4428.9Mn13510kn/sec2.1sec0.850.91
#45486.1Mn16953kn/sec28.7sec0.650.77
#4682.2Mn15637kn/sec5.3sec0.730.80
#4751.5Mn14665kn/sec3.5sec1.211.03
#48449.0Mn14684kn/sec30.6sec0.790.59
#49494.1Mn10810kn/sec45.7sec1.231.11
#502.47Gn16103kn/sec153.6sec0.700.97
#51511.5Mn15900kn/sec32.2sec0.850.72
#52486.4Mn15188kn/sec32.0sec0.790.73
#535.55Gn17064kn/sec325.5sec1.010.90
#547.91Gn16869kn/sec468.7sec0.960.82
#5520.8Gn14886kn/sec1399.0sec0.790.81
#561.75Gn12732kn/sec137.1sec0.690.62
#573.51Gn14721kn/sec238.5sec0.770.75
#582.68Gn15587kn/sec172.3sec0.500.80
#591.27Mn6270kn/sec203msec0.411.18
total47.5Gn15376kn/sec3087.9sec0.800.81
1スレッド+ネットワークコンピュータ->出力データ
テスト処理ノード処理速度処理時間参考比1th.比2th.比
#4026.7Mn12778kn/sec2.1sec1.310.911.50
#4138.8Mn13030kn/sec3.0sec1.361.001.20
#4241.1Mn12372kn/sec3.3sec1.271.141.38
#43110.1Mn14055kn/sec7.8sec2.892.891.18
#4425.4Mn9342kn/sec2.7sec1.041.171.29
#45522.9Mn16077kn/sec32.5sec0.740.881.13
#4686.4Mn13541kn/sec6.4sec0.880.971.21
#4759.2Mn15296kn/sec3.9sec1.341.151.11
#48482.3Mn14378kn/sec33.5sec0.870.651.09
#49899.0Mn17025kn/sec52.8sec1.401.281.16
#501.78Gn13414kn/sec132.4sec0.600.840.86
#51507.8Mn12968kn/sec39.2sec1.040.881.21
#52455.7Mn13726kn/sec33.2sec0.820.751.04
#535.33Gn15071kn/sec353.7sec1.100.971.09
#549.06Gn15263kn/sec593.9sec1.211.041.27
#5522.8Gn14359kn/sec1588.9sec0.900.911.14
#561.67Gn11270kn/sec148.1sec0.750.671.08
#576.76Gn17340kn/sec389.9sec1.271.231.63
#582.31Gn13797kn/sec167.3sec0.490.770.97
#591.39Mn4055kn/sec344msec0.692.001.69
total53.0Gn14738kn/sec3595.0sec0.930.941.16
2スレッド+ネットワークコンピュータ->出力データ
テスト処理ノード処理速度処理時間参考比1th.比2th.比
#4027.2Mn20966kn/sec1.3sec0.810.570.93
#4145.5Mn17157kn/sec2.7sec1.220.901.08
#4233.6Mn18092kn/sec1.9sec0.730.660.79
#43104.3Mn17631kn/sec5.9sec2.192.190.89
#4429.4Mn15432kn/sec1.9sec0.730.830.90
#45554.1Mn22624kn/sec24.5sec0.560.660.85
#4689.7Mn19693kn/sec4.6sec0.630.700.87
#4782.4Mn17729kn/sec4.6sec1.591.351.31
#48507.4Mn21426kn/sec23.7sec0.610.460.77
#49859.4Mn21888kn/sec39.3sec1.060.950.86
#502.63Gn22037kn/sec119.4sec0.540.760.78
#51475.6Mn19655kn/sec24.2sec0.640.540.75
#52424.5Mn15557kn/sec27.3sec0.670.620.85
#535.18Gn19719kn/sec262.8sec0.820.720.80
#549.03Gn21038kn/sec429.3sec0.870.750.92
#5521.8Gn18424kn/sec1182.1sec0.670.680.84
#562.20Gn17931kn/sec122.8sec0.620.560.90
#576.30Gn19684kn/sec320.2sec1.041.011.34
#582.65Gn17678kn/sec149.9sec0.440690.87
#591.27Mn4086kn/sec312msec0.621.811.54
total53.0Gn19287kn/sec2748.6sec0.710.720.89
ネットワークコンピュータのみ->出力データ
テスト処理ノード処理速度処理時間1th.比
#4023.7Mn8190kn/sec2.9sec1.26
#4126.5Mn6981kn/sec3.8sec1.27
#4228.1Mn7712kn/sec3.6sec1.24
#4321.6Mn6276kn/sec3.4sec1.26
#4417.3Mn5902kn/sec2.9sec1.26
#45357.8Mn7554kn/sec47.4sec1.28
#4660.6Mn7190kn/sec8.4sec1.27
#4729.6Mn6755kn/sec4.4sec1.29
#48492.1Mn7637kn/sec64.4sec1.25
#49430.9Mn8010kn/sec53.8sec1.31
#501.41Gn7152kn/sec197.7sec1.25
#51407.6Mn7179kn/sec56.8sec1.27
#52390.7Mn6984kn/sec55.9sec1.27
#533.52Gn7660kn/sec459.5sec1.26
#545.46Gn7501kn/sec728.0sec1.27
#5515.4Gn6978kn/sec2209.2sec1.27
#561.83Gn6532kn/sec279.6sec1.27
#573.03Gn7526kn/sec402.2sec1.27
#581.95Gn7029kn/sec277.4sec1.28
#59608.1kn3252kn/sec187msec1.09
total34.9Gn7179kn/sec4861.4sec1.27
参考(ScrZebra)->画面出力
テスト処理ノード処理速度処理時間
#401892776712009242 nps1.6 s
#41210897099585796 nps2.2 s
#422804790310960065 nps2.6 s
#43233023988681643 nps2.7 s
#44209209848027698 nps2.6 s
#45470114k10693871 nps44.0 s
#46658872618967792 nps7.3 s
#47234737418091324 nps2.9 s
#48359657k9315102 nps38.6 s
#49382324k10314651 nps37.1 s
#502059261k9354618 nps220.1 s
#51319035k8461100 nps37.7 s
#52338681k8353200 nps40.5 s
#532944760k9166935 nps321.2 s
#544563877k9299836 nps490.7 s
#5514417M8132277 nps1772.8 s
#561311629k6607864 nps198.5 s
#572758582k8963444 nps307.8 s
#582564033k7446871 nps344.3 s
#5913809662528779 nps0.5 s
total327155783978424581 nps3883.3 s
測定結果について
1スレッド時に比べて2スレッド時には殆どの項目で性能は向上し、総合性能は約20%高速化されています。
ネットワーク分散時にも、多くの項目で性能は向上し、総合性能は高速化されています。
ただし、増強した処理能力に比較して性能向上率は何れの場合にも低い値に止まっています。
これは、並列演算では逐次演算では行う必要がない評価演算を行わなければならない場合が多々あるためです。
1/2スレッドでのTotal処理ノード数は34.9/47.5Gnとなっていて、並列演算時により多くの演算が行われたのが判ります。
処理速度(kn/sec)については9120/15376となっていて、処理能力の増強分に近い効果が得られたのが判ります。
処理時間は処理速度の向上率が処理ノード数の増加率に勝っているため高速化されています。
置換表キャッシュは2スレッド時には共有され、ネットワーク分散時には共有されません。
このため、ネットワーク分散時には2スレッド動作時と若干異なる結果となっている項目もあります。
#50ではネットワーク分散時の性能向上率が極端に高く、#57では低くなっています。
これらの違いは置換表キャッシュの使用形態により発生しているものと考えられます。


#43,#47,#49,#59については2スレッド時に性能が劣化していますが、原因については以下が考えられます。
#43については並列演算を行ったことにより、より複雑な進行を探索してしまった結果と考えられます。
#47,49については、特定の探索路のみが複雑なため、並列化による効果が現れにくいものと考えられます。
#59については、元々の処理が軽いため、並列化によるオーバーヘッド分の速度低下が現れたと考えられます。
HT-Pentium4では処理速度の向上率が小さいため、並列演算を行った場合に性能劣化するケースが多くなります。
このため、HT-Pentium4では最善手探索には逐次演算を使用しています。

全着手評価時の性能について
全着手評価では最善手探索と比較して処理ノード数の増加率が小さくなるため、並列演算の性能向上率はより高くなります。
以下ではFFOテストの#40〜#58までの全着手をMRSolverに-aオプションを指定して評価させた結果を示しました。
比較データとして、高速ツールとして知名度の高いWZebraの研究モード性能もローカルマシンで測定しました。
WZebraのバージョンは「4.2.4 December 27, 2005」、Bookは非使用とし、キャッシュサイズは256MBとしました。
MasterReversiでは、ヒント評価/対局分析/全局面評価時等に同様の全着手評価が行われます。


#59については評価時間が膨大となるため、測定を省略しました。
全着手評価ではHT-Pentium4についても並列演算を使用しています。

全着手評価性能の測定結果
1スレッド->出力データ
テスト処理ノード処理速度処理時間参考比
#4042.6Mn10112kn/sec4.2sec1.17
#41192.7Mn9504kn/sec20.3sec1.06
#4277.8Mn9682kn/sec8.0sec0.98
#43322.8Mn8593kn/sec37.6sec0.80
#44135.2Mn8336kn/sec16.2sec0.76
#451.17Gn9865kn/sec118.7sec1.10
#46954.6Mn10951kn/sec87.2sec1.05
#47996.8Mn9130kn/sec109.2sec1.01
#48926.6Mn9245kn/sec100.2sec0.95
#492.60Gn9297kn/sec279.7sec1.29
#505.18Gn8931kn/sec580.1sec1.11
#512.98Gn9566kn/sec311.6sec1.04
#522.58Gn9497kn/sec271.3sec1.03
#5334.5Gn9907kn/sec3483.5sec1.19
#5415.1Gn10237kn/sec1479.5sec1.03
#5564.8Gn10076kn/sec6431.1sec1.12
#5643.9Gn8548kn/sec5135.7sec1.14
#5721.4Gn9844kn/sec2171.1sec0.76
#58113.9Gn9085kn/sec12537.1sec1.25
total311.7Gn9396kn/sec33173.7sec1.13
2スレッド->出力データ
テスト処理ノード処理速度処理時間参考比1th.比
#4041.3Mn16444kn/sec2.5sec0.690.60
#41222.0Mn16743kn/sec13.3sec0.690.66
#4273.9Mn14361kn/sec5.1sec0.620.64
#43255.9Mn11656kn/sec21.9sec0.470.58
#44154.2Mn14712kn/sec10.5sec0.490.65
#451.12Gn14223kn/sec78.6sec0.730.66
#46958.4Mn18339kn/sec52.3sec0.630.60
#471.06Gn14701kn/sec71.9sec0.670.66
#48952.7Mn15429kn/sec61.7sec0.590.62
#492.44Gn14074kn/sec173.1sec0.800.62
#506.59Gn15952kn/sec413.4sec0.790.71
#512.90Gn15369kn/sec188.8sec0.630.61
#522.91Gn14840kn/sec196.2sec0.740.72
#5337.9Gn16996kn/sec2230.1sec0.760.64
#5420.0Gn16750kn/sec1191.2sec0.830.81
#5586.7Gn17058kn/sec5082.7sec0.880.79
#5640.6Gn13902kn/sec2921.7sec0.650.57
#5723.7Gn14888kn/sec1592.6sec0.560.73
#58107.3Gn14244kn/sec7533.0sec0.750.60
total335.9Gn15378kn/sec21842.9sec0.740.66
1スレッド+ネットワークコンピュータ->出力データ
テスト処理ノード処理速度処理時間参考比1th.比2th.比
#4047.9Mn13827kn/sec3.5sec0.970.831.40
#41179.6Mn13917kn/sec12.9sec0.670.640.97
#4267.0Mn13058kn/sec5.1sec0.620.641.00
#43259.0Mn12693kn/sec20.4sec0.440.540.93
#44131.2Mn13222kn/sec9.9sec0.460.610.94
#451.33Gn17277kn/sec77.2sec0.720.650.93
#46873.0Mn18105kn/sec48.2sec0.580.550.92
#471.20Gn17660kn/sec67.9sec0.630.620.94
#48937.6Mn16160kn/sec58.0sec0.550.580.94
#491.95Gn12242kn/sec159.5sec0.740.570.92
#506.25Gn17722kn/sec352.4sec0.670.610.85
#512.91Gn15263kn/sec190.7sec0.630.611.01
#522.31Gn15766kn/sec146.3sec0.550.540.75
#5335.7Gn17797kn/sec2005.9sec0.690.580.90
#5417.3Gn17255kn/sec1004.5sec0.700.680.84
#5587.7Gn18144kn/sec4833.6sec0.840.750.95
#5634.3Gn12513kn/sec2739.8sec0.610.530.94
#5725.2Gn15768kn/sec1601.3sec0.560.741.01
#5888.4Gn13209kn/sec6692.4sec0.670.530.89
total307.1Gn15332kn/sec20030.0sec0.680.600.92
2スレッド+ネットワークコンピュータ->出力データ
テスト処理ノード処理速度処理時間参考比1th.比2th.比
#4048.2Mn22864kn/sec2.1sec0.580.500.84
#41174.2Mn18013kn/sec9.7sec0.510.480.73
#4292.5Mn19839kn/sec4.7sec0.570.500.92
#43281.7Mn16548kn/sec17.0sec0.360.450.78
#44126.0Mn16154kn/sec7.8sec0.370.480.74
#451.58Gn26180kn/sec60.5sec0.560.510.77
#46908.6Mn25590kn/sec35.5sec0.430.410.68
#471.02Gn19089kn/sec53.6sec0.500.490.75
#48935.5Mn22612kn/sec41.4sec0.390.410.67
#492.06Gn15710kn/sec130.8sec0.600.470.76
#507.37Gn24507kn/sec300.6sec0.570.520.73
#512.48Gn17570kn/sec141.0sec0.470.450.75
#523.49Gn22116kn/sec157.6sec0.600.580.80
#5331.9Gn21518kn/sec1482.4sec0.510.430.66
#5417.5Gn21808kn/sec804.6sec0.560.540.68
#5574.3Gn21758kn/sec3414.4sec0.590.530.67
#5635.5Gn16158kn/sec2199.2sec0.490.430.75
#5729.4Gn23821kn/sec1233.2sec0.430.570.77
#58152.8Gn20875kn/sec7319.8sec0.730.580.97
total362.1Gn20786kn/sec17420.4sec0.590.530.80
ネットワークコンピュータのみ->出力データ
テスト処理ノード処理速度処理時間1th.比
#4043.9Mn9595kn/sec4.6sec1.10
#41203.1Mn8484kn/sec23.9sec1.18
#4281.1Mn8751kn/sec9.3sec1.16
#43330.0Mn8416kn/sec39.2sec1.04
#44161.4Mn8407kn/sec19.2sec1.19
#451.34Gn9228kn/sec140.6sec1.18
#46969.6Mn10693kn/sec90.7sec1.04
#471.18Gn9064kn/sec130.3sec1.19
#48957.7Mn8765kn/sec105.9sec1.06
#492.82Gn8838kn/sec319.1sec1.14
#506.87Gn9736kn/sec705.8sec1.22
#513.18Gn8597kn/sec369.9sec1.19
#522.86Gn9080kn/sec315.3sec1.16
#5339.8Gn9785kn/sec4067.5sec1.17
#5419.1Gn9421kn/sec2028.8sec1.37
#5586.8Gn9487kn/sec9149.4sec1.42
#5641.5Gn7877kn/sec5268.5sec1.03
#5727.3Gn9571kn/sec2851.4sec1.31
#58117.5Gn8642kn/sec13596.4sec1.08
total352.9Gn8997kn/sec39224.2sec1.18
参考(WZebra)
テスト処理ノード処理速度処理時間出力画面
#4037.9Mn10574kn/s3.6secWZebra40.jpg
#41160Mn8344kn/s19.2secWZebra41.jpg
#4266.0Mn8035kn/s8.2secWZebra42.jpg
#43402Mn8593kn/s46.8secWZebra43.jpg
#44164Mn7684kn/s21.3secWZebra44.jpg
#451.00Gn9284kn/s107.7secWZebra45.jpg
#46732Mn8840kn/s82.8secWZebra46.jpg
#47895Mn8277kn/s108.1secWZebra47.jpg
#48839Mn7959kn/s105.4secWZebra48.jpg
#491.54Gn7098kn/s217.0secWZebra49.jpg
#504.85Gn9246kn/s524.6secWZebra50.jpg
#512.48Gn8252kn/s300.5secWZebra51.jpg
#522.15Gn8132kn/s264.4secWZebra52.jpg
#5324.7Gn8453kn/s2922.0secWZebra53.jpg
#5412.5Gn8734kn/s1431.2secWZebra54.jpg
#5550.3Gn8724kn/s5765.7secWZebra55.jpg
#5630.5Gn6747kn/s4520.5secWZebra56.jpg
#5724.2Gn8446kn/s2865.3secWZebra57.jpg
#5868.5Gn6836kn/s10020.5secWZebra58.jpg
total226.0Gn7704kn/s29334.8sec----------

全着手評価の測定結果について
最善手探索時と異なり、「1スレッド+ネットワークコンピュータ」の性能が「2スレッド」の性能を上回っています。
これは、最善手探索と比較して全着手評価では各評価スレッド間の関連性が低くなることが要因として挙げられます。
評価スレッド間の関連性が低い場合、キャッシュデータが共有されないことはデメリットではなくなります。
ネットワーク分散時には2組のキャッシュを使用できるため、2スレッド動作時を上回る性能となったものと考えられます。


WZebraの処理時間は処理ノード/処理速度から計算しました。total値についても計算により求めています。
いくつかの実測値との比較から、計算では1Mn = 1000kn / 1Gn = 1000Mnとしました。
MRSolverの表記についても1Mn = 1000kn / 1Gn = 1000Mnとしています。
WZebraの出力画面はリモートデスクトップ接続経由で採取したため、ローカルコンピュータの画像とは異なります。

TOPページに戻る