Saturday, 16 September 2017

動いた...

例年、4月はM2のコードの後始末をしていることが多くて... 今年も Jungle と格闘していたんですが、ようやっと分散版が動いたみたい。

Functional Java とかが使われていたんですが、このライブラリがダメダメで、Haskell 版に負けるとかいろいろ技を出していた。それの再実装とか、いろいろ修正してたんですが、分散版の方は放置で齟齬がいろいろ。

package名の修正とかいろいろやらかしているうちに、method名間違えたらしく、最後に治したのはその部分。でも、debug で追求すると言うよりは、

  こういうメソッドあるはずはんだけどなあ

で、ぼーっと見ているうちに「あ、これじゃん。あるじゃん」。で、版管理をたどると写し間違いが見つかるという。ありがちだな。ま、うごいてめでたい。

8月の東京行とか、目が見えなくて少しお休みとか、まぁ、いろいろあったけど、実質的には3週間ぐらいだったみたいです。

分散プログラムのデバッグは複数のプロセスを上げることが多いのだけど、Javaは fork がなくて、ちょっとはまる。おかげで、手動で複数のプロセスをあげる羽目に。このあたりの自動化が InteliJ とかでは自明じゃない。おそらくはなんかできるんでしょうけど。

大域変数がなければ、thread で代用できるので、そのテストをJavaそのもので書けるのですが、

  学生のコードで大域変数の使用を見落としていた

M2のコードを細かく見ると可哀想な所もあるからなぁ。たしか、Alice のコードは年末に里帰りして戻ってきたら「できあがって動いていた」ので、なおす暇がなかった。

2年前に取ろうと努力したことがあったんですが、量が多くて挫折... API も変更しないとだめだし。

  大域変数、基本禁止しないとだめだろ!

でも、CUDA でもAPIが大域変数依存らしく、いろいろ動かないところが。いずこもおなじか。

まぁ、久しぶりに Alice 自分で書いてみると「お、これは楽だ」。学生もAlice書きやすいとかいってたんだけど、あんまり信じてなかったんだけど確かに楽。ただ、API構文が汚いのが欠点だな。ま、作り直しが楽しみです。

No comments: