1 / 24

マルチコア CPU と OpenMP スレッド技術 を利用した VLBI 相関処理高速化の研究

マルチコア CPU と OpenMP スレッド技術 を利用した VLBI 相関処理高速化の研究. 横浜国立大学 修士2年 坂従晴彦. 発表の流れ. 背景 目的 VLBI のデータ処理 並列処理 スケジューリング 速度計測 まとめと今後の課題. 背景:測地 VLBI とは. VLBI(Very Long Baseline Interferometory :超長基線電波干渉法 ) 数十億光年離れた準星からの電波を、複数のアンテナで同時に受信し、その到達時間差を精密に計測する技術 測地 VLBI の目的

tarala
Télécharger la présentation

マルチコア CPU と OpenMP スレッド技術 を利用した VLBI 相関処理高速化の研究

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. マルチコアCPUとOpenMPスレッド技術を利用したVLBI相関処理高速化の研究マルチコアCPUとOpenMPスレッド技術を利用したVLBI相関処理高速化の研究 横浜国立大学 修士2年 坂従晴彦 Yokohama National University

  2. 発表の流れ • 背景 • 目的 • VLBIのデータ処理 • 並列処理 • スケジューリング • 速度計測 • まとめと今後の課題 Yokohama National University

  3. 背景:測地VLBIとは • VLBI(Very Long Baseline Interferometory:超長基線電波干渉法) • 数十億光年離れた準星からの電波を、複数のアンテナで同時に受信し、その到達時間差を精密に計測する技術 • 測地VLBIの目的 • VLBIによって得られたデータを基に、受信点(アンテナ)間の距離を精密に求めることにより地球の挙動を観測する • 測量 • プレート運動 Yokohama National University

  4. 背景:測地VLBIの流れ 準星 • データ記録 • 磁気テープからハードディスク • 24時間観測データは数TByte • 観測データは非圧縮データ • データ輸送法 • 記録媒体の物理的な輸送からネットワーク伝送 • データ処理法 • ハードウェア相関器からソフトウェア相関器 平面波 準星からの電波 遅延時間 基線 原子時計 原子時計 サンプリング サンプリング データ記録 データ記録 相関処理 データ記録なしの実時間伝送処理へ データ輸送,伝送 データ輸送,伝送 データ解析 Yokohama National University

  5. 目的 • VLBI実時間処理を行う上で高速な相関処理 ソフトウェアが必要 • クアッドコアのCPUにおいてOpenMPを利用したマルチスレッド並列化による高速化 • 最終的には実時間処理システムの構築 Yokohama National University

  6. VLBIのデータ処理 • 相関処理によって電波の到達時間差を求める                    が最大となる τが遅延時間 相関関数の例 X局側電波 相関係数 X局ビット列 1         ・・・・・・     1 0 0 0 0 1 0 Y局ビット列 1 0 1 0 0 1 0 1         ・・・・・・     EXNOR Y局側電波                ・・・・・・           1 0 0 1 1 0 0 0 遅延時間 1の数を数える Y局ビット列を1ビットづつずらして繰り返す 少しずつずらす Yokohama National University

  7. VLBIの主な処理 • PCAL信号検出 • 機器位相を校正するための信号の検出 • 遅延追跡 • 地球回転による遅延時間変化補償 • フリンジストッピング • 地球の自転によるドップラー効果の補正 • 相関処理 • 二つの信号の相関関数を求める処理 これらの処理は CHごと独立に 処理可能 Yokohama National University

  8. CH分割による並列化 • 4ch毎にまとまって出力されるデータを1ch毎に分割し、OpenMPを利用し、並列化を行う • 各chのデータはそれぞれ独立して処理が可能 • 1つのCHを1つのスレッドに割り当て、並列して処理 ch1 1 ch2 1 ch3 1 ch4 1 ch1 2 ch2 2 ch3 2 ch4 2 ch1 3 ch2 3 ch3 3 ch4 3 ch1 4 ch2 4 ch3 4 ch4 4 ・・・ ch1 1 ch1 2 ch1 3 ch1 4 ・・・ ch2 1 ch2 2 ch2 3 ch2 4 ・・・ ch3 1 ch3 2 ch3 3 ・・・ ch4 1 ch4 2 ch4 3 ・・・ ch3 4 ch4 4 Yokohama National University

  9. 代表的な並列化技術 • MPI(Message Passing Interface) • 並列・分散プロセス間のメッセージング機能を提供する標準規格 • 明示的にメッセージ交換を行わなければならない • OpenMP • 並列コンピューティング環境を利用するために用いられる標準化された基盤 • 並列化の効率はコンパイラに依存するのでチューニングによる性能改善がMPIほど高くならない • Pthread(POSIX thread) • Unixで最も汎用的で利用可能なスレッド規格 比較表 • TBB(Threading Building Blocks) • IA 用 C++ テンプレート並列ライブラリ • 大量データの「分割 & 統治」 • スレッドよりも軽く、粒度の細かい「タスク」による並列処理を自動化 Yokohama National University

  10. 去年の研究での佐々木手法 Linuxのfork()によるマルチプロセス並列化(クアッドコアでの4並列) リソースやメモリはプロセスが独自に持つ 約3.5倍の処理速度向上 過去の相関処理並列化手法 4ch 3ch 親プロセス 2ch fork(),exec() 1ch 子プロセス メインプロセス 相関処理プロセス • 今回の手法 • OpenMpによるマルチスレッド並列化 • 性能と同時に安定性も考慮 • リソースやメモリはスレッド同士で共有 プロセス 1ch 2ch 親スレッド 親スレッド 3ch 4ch 相関処理スレッド Yokohama National University

  11. クアッドコア・アーキテクチャ 1 Systemu Bus Bus Interface Unit Shared L2 Cache(4MB) Shared L2 Cache(4MB) L1 IC (32KB) L1 DC (32KB) L1 IC (32KB) L1 IC (32KB) L1 DC (32KB) L1 DC (32KB) L1 IC (32KB) L1 DC (32KB) Front end EU Front end EU retire ment Front end EU retire ment Front end EU retire ment retire ment IP(ROB) IP(ROB) IP(ROB) IP(ROB) Yokohama National University

  12. クアッドコア・アーキテクチャ 2 Core0 Core1 Core2 Core3 速い (数GHz) Shared L2 Cache Shared L2 Cache データ 遅い (数百MHz) FSB Chipset Yokohama National University

  13. スケジューリング ユーザーによるスケジューリング OSによるスケジューリング Core 0 Core 1 Core 2 Core 3 Core 0 Core 1 Core 2 Core 3 Shared L2 Cache Shared L2 Cache Shared L2 Cache Shared L2 Cache Thread 0 Thread 1 Thread 2 Thread 3 Thread 0 Thread 2 Thread 1 Thread 3 データ データ 同一の Shared L2 Cache にある 同一の Shared L2 Cache にない Yokohama National University

  14. 提案手法(コアの割り当て) • OpenMPとCPUアフィニティマスク(sched_setaffinity()関数)を用いて、OSが認識するコアの順番と、それに対するスレッド、各chを割り当てることにより、各スレッドができるだけ多くの共有データを利用できるようにする Core 0 Core 1 Core 2 Core 3 Shared L2 Cache Shared L2 Cache Thread 0 Thread 1 Thread 2 Thread 3 1ch 2ch 3ch 4ch X局 Y局 Yokohama National University

  15. A(n-1) A(n) A(n+1) A(n+2) A(n-2) プリフェッチ命令 Prefetch A(n) Prefetch A(n+1) Prefetch A(n+2) 提案手法 (ソフトウェアプリフェッチ) • データをあらかじめキャッシュに読み出しておく、プリフェッチをソフトウェア制御で行うことでメモリアクセスへのレイテンシ(遅延)を隠蔽する 実行ユニットの アイドル時間 実行ユニットの アイドル時間 実行パイプライン ロード命令 ロード命令 メモリ・レイテンシ メモリ・レイテンシ フロントサイド・バス FSBのアイドル時間 Yokohama National University

  16. 相関処理ソフトウェアでのプリフェッチ • X局Y局のデータを相関処理の前にプリフェッチする • Prefetch NTAにより128バイトのデータを2次キャッシュにのみフェッチ : _mm_prefetch(&xdata, 0) _mm_prefetch(&ydata, 0) プリフェッチの挿入 _mm_prefetch(&xdata+128, 0) _mm_prefetch(&ydata+128, 0) : xroscor(xdata, ydata, ・・・) // 相関処理関数 : Yokohama National University

  17. CPU Memory OS 2GBytes CentOS 5.2 Core 2 Extream QX6700 2.66GHz (Quad Core) 実験:速度計測 • OpenMP並列相関処理ソフトウェア速度計測 • 逐次処理 • 並列処理スケジューリング有・無 • GNU Compiler (gcc ver4.2.4) オプション無・-O2 • Intel Compiler (icc ver 9.1) オプション無・-O2 動作環境 Yokohama National University

  18. 実験結果 Intel GNU • Intel Compilerでの4並列・スケジューリング有・-O2オプションが最も早く215Mbpsの速度を出し、逐次処理(-O2)と比べ、約3.91倍の速度向上を得た • スケジューリング有と無を比べ、無では207Mbpsであり、処理時間としてはスケジューリング有と約170msの差が出た • GNUコンパイラでは並列前と比べ、約1.33倍程度の速度向上であった 4並列 スケジュ有 4並列 スケジュ無 逐次処理 処理速度 Mbps -O2 オプション無 Yokohama National University

  19. まとめと今後の課題 • まとめ • 並列処理の結果、実時間処理を行う上で十分な約215Mbpsの処理速度を得た • 今後の課題 • 実時間処理システムの構築 • データ観測・送信サーバ、データ受信クライアントの作成 • 実時間処理実験を行う Yokohama National University

  20. 補足資料:遅延追跡 遅延変化近似直線 1ビットシフト 離散的遅延追跡 遅延 a c 時間方向 b ビットシフトマイナス方向の場合a点b点でシフトが起こるとすると a b c 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Ydata 切り離し 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 再結合 Y_tracking 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 遅延変化が逆方向の場合はビットの挿入動作を行う Yokohama National University

  21. 補足資料:フリンジストッピング1  上図において、X局は電波源に向かい、Y局は遠ざかっている。この場合、ドップラーシフトのため、Y局で受信される信号はX局の信号に比べて周波数が下がって受信される。したがって、X局の信号もそれだけ周波数を下げてやらなければ相関が出ない。この周波数変換を相関器で行うのがフリンジストッピングである。  相関器では、一方のデータに対してフリンジ位相回転に応じたcosおよびsin関数を乗じることによってこれを行う。 Yokohama National University

  22. 補足資料:フリンジストッピング2  フリンジストッピングに用いるsin、cos関数を、ソフトウェア上では+1,0,-1の3レベルで近似する 1 Sin 9/8 π 15/8 π 0 1/8 π 7/8 π 17/8 π  近似されたフリンジパターンと片局のデータを掛け合わせることによってフリンジストッピングを行う。 -1 1 Cos 9/8 π 15/8 π 0 1/8 π 7/8 π 17/8 π -1 0 +1 0 0 補正前 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1  ソフトウェア上でビットの掛け算は • +1の部分の掛け算はそのまま • -1の部分の掛け算はビット反転 • 0の部分の掛け算は処理を抑制  という形で再現する。 補正後 1 1 1 1 1 0 0 0 0 0 0 1 Yokohama National University

  23. 補足資料:相関処理  二つの信号の相関を調べるには、時間領域で直接に掛け算をし、相関関数を計算する。  片方の信号を時間方向にずらしながら、順次相関を調べてゆくことによって、信号の到達時間差τを推定することができる。 Yokohama National University

  24. 補足資料:4ch分の相関グラフ Yokohama National University

More Related