グラフシミュレータ

階層型グラフも扱えるようになったということで、さっそく適当な例題で実験してみました。題材は、去年の創造工房セミナの「もやもや消しゴム」です。
実際のLSI上で動作する回路の総モジュール数は3ステージ82モジュールですが、Javaによりモデリングされた回路は4ステージ44モジュールです。Javaモデルのほうが若干抽象度を高いですが、機能の粒度はほとんど変わりません。
モデリングに掛かった時間は、4時間です。画像入出力モジュールの設計や、シミュレータのテスト・デバッグなども含まれています。ですので、実際にモデリングに掛かった時間は半分ほどで、十分満足できる生産性だと思います。
さてその性能ですが… おせ〜 もう、遅いとかいうレベルじゃない。LSI上で動作する回路は、73万ピクセル毎秒ぐらいの性能で、リアルタイム画像をぎりぎりで扱えます。それに対し、シミュレータを使うと、5500ピクセル毎秒ということで、100分の1ぐらいの性能しか出ていません。ぎゃ〜 超細粒度並列処理(処理のほとんどがモジュール間の通信に費やされており、1つのモジュールには1つのスレッドが割り当てられている)の上に、シミュレーションを開始した瞬間、50ものスレッドが立ち上がるので、仕方がないといえば仕方がないのですけど。。。
さらに、ImageIO.readで止まる。そのたびにシミュレーションを強制中止して、再開するという情けない仕様。ふざけるな〜!!