Simutransをビルドする。そしてOpenMPを使って失敗する
Simutransを普通にビルドしていると1コアしかうまく使ってくれない。
ので、OpenMPを使うことにした。
が、単にForの前にOpenMPの記述を突っ込むだけだと、スレッドはバラけるけどスレッド同士の処理がなんかアレなのか、カクカク+フリーズしてマトモに動かない。
そりゃそうか(同期もせずに並列動作なんてできなくて当たり前だネ)。
しかし関数をいじるとなるとSimutransのソースコード全体の見通しがないとやりにくい。
というわけでOpenMPはおいといて、ビルドの方を少しいじることにした。
qiita.com
結果……
少し速くなったかな?という気がする。
コアが1個100%に張り付いていたのが90~97%ぐらいになった。