TOKYO2020を見ながら

Vol.2, No.8.

Finally Bugs Fixed in July

ようやくバグフィックス終わった。7月に0.10.0リリースできました。

なんだったのか

Splrの開発史上最大最長の難問になった今回の不整合バグがどうやって発生したのか振り返っておきたい。現れたバグは様々だった。

とまあ呆れるくらい様々。 もうSATソルバーとしてはほぼ壊滅状態だった。

で、これらの原因は一つではなかった。 0.10.0のリリースまでに潰したのは以下の通り。

どれを取っても致命的なのだが、よくもまあもっと早い段階で気づけなかったものだろうか。 おおよそ1年近くSplrはバグ持ち、それもSATソルバーを名乗れないレベルのバグ持ちだったと言うことがわかり、赤面してしまう。

After 0.10.0

というわけで無事にSplr 0.10.0をリリースしてから、正しさを壊さないようにしながら、ちょっとづつパフォーマンスチューニング中です。

まずはLuby stabilizationが全然よくないので改善中。 気づいていたけども0.10.0にはどうやっても入れる時間的な余裕はなかったので後回しにしていた。 その後、どうもモードの変更を節削減と同期を取るのが相当に効くらしいということがわかったので、そちらを採用。 aes.cnfは0.10.0だと10000秒程度掛かるのが普通なんだけど、この部分を変えてみると2000秒台になっているし、sat-benchの結果もSplrのベストにかなり近くなった。 小さな変更なのだがリリースする価値がありそうだ。 初めて使ったalgorithm2eで書くとこうなる。 Reduction, Elimination, Vivification、そしてモードスイッチ、と綺麗な流れじゃないか。

ドキュメントを更新して数日中に0.10.1としてリリースの予定です。

あとは

という感じでまあぼちぼちと。 それよりは