OSQZSS

オープンソース準天頂衛星(QZSS)受信機

OpenMPによる並列化

2015-01-22 10:07:09 | GPS Signal Simulator
シミュレータの実行速度が遅いのは,単純にサンプル毎に必要な演算が
多いのが原因のようです.

まず,コンパイラオプションをDebugからReleaseのデフォルト値に
するだけで,実行速度が倍になりました.それでも実時間の4倍ほどの
処理時間が掛かります.このときのCPU使用率は12%と,余裕があります.

 (クリックで拡大)

さらに,マルチコアを有効に使うために,OpenMPを試してみました.
受信信号の生成は,各衛星で同じ処理なので,ここを並列化します.

 (クリックで拡大)

サンプル毎に衛星間で並列化を行うと,スレッドの生成コストが高く,
並列化の効果がありません.そこで,衛星毎のforループを並列化し,
その中である一定時間分のサンプルを生成します.その後,それらを
足し合わせて,まとめてファイルに書き込むという構成にしました.

この並列化で,8コア全部が有効に使用され,平均して50%程度の
CPU使用率になっています.

 (クリックで拡大)

実行速度も,Core i7-3770,3.4GHzでほぼ実時間となりました.
快適というほどではありませんが,ストレスなくシミュレーション
ファイルの生成ができます.
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« GPS信号シミュレータの完成 | トップ | コード位相計算の簡略化 »
最新の画像もっと見る

コメントを投稿

GPS Signal Simulator」カテゴリの最新記事