とりあえずクエリごとにマルチスレッドで動かすプログラムでいろいろ実験をしてはいるが、どのような方向性にするのかうまく決まらず、あまり作業が進まない。まず考えていることをまとめることから初めていこうと思う。
<先読みスレッドについて>
・I/O 周りはオーバーヘッドも大きいため、とりあえず別スレッドへ。
・I/O スレッドにて、先読みを行う。
<先読みの方法>
・複数のスレッドで、バケット内にあるデータを見張る(バケット内の点から出ている枝なども)
→無駄な処理が大きい
・ダイクストラ法を動かしているスレッドと同期をし、最小ポテンシャルノードを渡す
→同期のためのオーバーヘッドが大きく、かえって遅くなるかもしれない
・ダイクストラ法を動かしているスレッドと同期をせずに、計算量を見積もり次使いそうな点を見張る
→正確な見積もりができないと、効果を得られない。
やりたいのは3つ目であるが、どのように実現するか迷っている。いろいろ調べてみよう。
<先読みスレッドについて>
・I/O 周りはオーバーヘッドも大きいため、とりあえず別スレッドへ。
・I/O スレッドにて、先読みを行う。
<先読みの方法>
・複数のスレッドで、バケット内にあるデータを見張る(バケット内の点から出ている枝なども)
→無駄な処理が大きい
・ダイクストラ法を動かしているスレッドと同期をし、最小ポテンシャルノードを渡す
→同期のためのオーバーヘッドが大きく、かえって遅くなるかもしれない
・ダイクストラ法を動かしているスレッドと同期をせずに、計算量を見積もり次使いそうな点を見張る
→正確な見積もりができないと、効果を得られない。
やりたいのは3つ目であるが、どのように実現するか迷っている。いろいろ調べてみよう。