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

Download Report

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

マルチコアCPUとOpenMPスレッド技術
を利用したVLBI相関処理高速化の研究
横浜国立大学
修士2年 坂従晴彦
24 September 2015
Yokohama National University
Takahashi Laboratory
発表の流れ
▌ 背景
▌ 目的
▌ VLBIのデータ処理
▌ 並列処理
▌ スケジューリング
▌ 速度計測
▌ まとめと今後の課題
24 September 2015
Yokohama National University
2
背景:測地VLBIとは
▌ VLBI(Very Long Baseline Interferometory:超長基線
電波干渉法)
▌ 数十億光年離れた準星からの電波を、複数のアンテナで
同時に受信し、その到達時間差を精密に計測する技術
▌ 測地VLBIの目的
▌ VLBIによって得られたデータを基に、受信点(アンテナ)間
の距離を精密に求めることにより地球の挙動を観測する
▌ 測量
▌ プレート運動
24 September 2015
Yokohama National University
3
背景:測地VLBIの流れ
準星
平面波
▌ データ記録
準星からの電波
▌ 磁気テープからハードディスク
▌ 24時間観測データは数TByte
▌ 観測データは非圧縮データ
▌ データ輸送法
▌ 記録媒体の物理的な輸送から
ネットワーク伝送
遅延時間
▌ データ処理法
基線
▌ ハードウェア相関器からソフト
ウェア相関器
原子時計 原子時計
サンプリング
サンプリング
データ記録
データ記録
データ輸送,伝送
相関処理
データ輸送,伝送
データ記録なしの実時間伝送処理へ
データ解析
24 September 2015
Yokohama National University
4
目的
▌ VLBI実時間処理を行う上で高速な相関処理
ソフトウェアが必要
▌クアッドコアのCPUにおいてOpenMPを利用した
マルチスレッド並列化による高速化
▌ 最終的には実時間処理システムの構築
24 September 2015
Yokohama National University
5
VLBIのデータ処理
▌相関処理によって電波の到達時間差を求める
が最大となる τ が遅延時間
相関関数の例
X局側電波
相関係数
X局ビット列
1 1 0 0 0 0 1 0
・・・・・・
Y局ビット列
1 0 1 0 0 1 0 1
・・・・・・
Y局側電波
遅延時間
EXNOR
少しずつずらす
24 September 2015
1 0 0 1 1 0 0 0
・・・・・・
1の数を数える
Y局ビット列を1ビットづつずらして繰り返す
Yokohama National University
6
VLBIの主な処理
▌PCAL信号検出
▌ 機器位相を校正するための信号の検出
▌遅延追跡
▌ 地球回転による遅延時間変化補償
▌フリンジストッピング
▌ 地球の自転によるドップラー効果の補正
これらの処理は
CHごと独立に
処理可能
▌相関処理
▌ 二つの信号の相関関数を求める処理
24 September 2015
Yokohama National University
7
CH分割による並列化
▌4ch毎にまとまって出力されるデータを1ch毎に分割し、OpenMP
を利用し、並列化を行う
▌各chのデータはそれぞれ独立して処理が可能
▌1つのCHを1つのスレッドに割り当て、並列して処理
ch1 ch2 ch3 ch4 ch1 ch2 ch3 ch4 ch1 ch2 ch3 ch4 ch1 ch2 ch3 ch4
・・・
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
4
24 September 2015
ch1 ch1 ch1 ch1
・・・
1
2
3
4
ch2 ch2 ch2 ch2
・・・
1
2
3
4
ch3 ch3 ch3 ch3
・・・
1
2
3
4
ch4 ch4 ch4 ch4
・・・
1
2
3
4
Yokohama National University
8
代表的な並列化技術
▌MPI(Message Passing Interface)
▌並列・分散プロセス間のメッセージング機能を提供する標準規格
▌明示的にメッセージ交換を行わなければならない
▌OpenMP
▌並列コンピューティング環境を利用するために用いられる標準化された基盤
▌並列化の効率はコンパイラに依存するのでチューニングによる性能改善がMPI
ほど高くならない
▌Pthread(POSIX thread)
比較表
▌Unixで最も汎用的で利用可能なスレッド規格
▌TBB(Threading Building Blocks)
▌IA 用 C++ テンプレート並列ライブラリ
▌大量データの「分割 & 統治」
▌スレッドよりも軽く、粒度の細かい「タスク」
による並列処理を自動化
24 September 2015
MPI
OpenMP
Pthread
スケーラブル
○
○
△
逐次並列化の適用
×
○
×
Fortran サポート
○
○
×
データ並列のサポート
×
○
×
性能
○
△
×
Yokohama National University
9
過去の相関処理並列化手法
▌去年の研究での佐々木手法
▌Linuxのfork()によるマルチプロ
セス並列化(クアッドコアでの4
親プロセス
並列)
fork(),exec()
▌リソースやメモリはプロセスが独
メインプロセス
自に持つ
▌約3.5倍の処理速度向上
▌今回の手法
▌OpenMpによるマルチスレッド
並列化
▌性能と同時に安定性も考慮
▌リソースやメモリはスレッド同
士で共有
24 September 2015
4ch
3ch
2ch
1ch
子プロセス
相関処理プロセス
プロセス
1ch
2ch
親スレッド
3ch
親スレッド
4ch
相関処理スレッド
Yokohama National University
10
クアッドコア・アーキテクチャ 1
Systemu Bus
Bus Interface Unit
Shared L2 Cache(4MB)
L1 IC
(32KB)
Front
end
L1 DC
(32KB)
EU
retire
ment
IP(ROB)
24 September 2015
L1 IC
(32KB)
Front
end
L1 DC
(32KB)
EU
retire
ment
IP(ROB)
Shared L2 Cache(4MB)
L1 IC
(32KB)
Front
end
L1 DC
(32KB)
EU
retire
ment
IP(ROB)
Yokohama National University
L1 IC
(32KB)
Front
end
L1 DC
(32KB)
EU
retire
ment
IP(ROB)
11
クアッドコア・アーキテクチャ 2
Core0
Core1
Core2
Core3
速い
(数GHz)
データ
Shared L2 Cache
Shared L2 Cache
遅い
(数百MHz)
FSB
Chipset
24 September 2015
Yokohama National University
12
スケジューリング
OSによるスケジューリング
Core 0
Core 1
Shared L2 Cache
Thread 0
Thread 2
Core 2
Core 3
Shared L2 Cache
Thread 1
Thread 3
ユーザーによるスケジューリング
Core 0
Core 1
Shared L2 Cache
Thread 0
Thread 1
Core 3
Shared L2 Cache
Thread 2
Thread 3
データ
データ
同一の Shared L2 Cache にない
24 September 2015
Core 2
Yokohama National University
同一の Shared L2 Cache にある
13
提案手法 (コアの割り当て)
▌OpenMPとCPUアフィニティマスク(sched_setaffinity()関数)を用い
て、OSが認識するコアの順番と、それに対するスレッド、各chを割
り当てることにより、各スレッドができるだけ多くの共有データを利
用できるようにする
Core 0
Core 1
Shared L2 Cache
Core 2
Core 3
Shared L2 Cache
Thread 0
Thread 1
Thread 2
Thread 3
1ch
2ch
3ch
4ch
X局
24 September 2015
Y局
Yokohama National University
14
提案手法 (ソフトウェアプリフェッチ)
▌データをあらかじめキャッシュに読み出しておく、プリ
フェッチをソフトウェア制御で行うことでメモリアクセスへ
のレイテンシ(遅延)を隠蔽する
実行ユニットの
アイドル時間
実行ユニットの
アイドル時間
実行パイプライン
ロード命令
ロード命令
メモリ・レイテンシ
メモリ・レイテンシ
フロントサイド・バス
FSBのアイドル時間
A(n-2)
A(n-1)
Prefetch A(n)
A(n)
A(n+1)
A(n+2)
プリフェッチ命令
Prefetch A(n+1)
Prefetch A(n+2)
24 September 2015
Yokohama National University
15
相関処理ソフトウェアでのプリフェッチ
▌ X局Y局のデータを相関
処理の前にプリフェッチ
する
:
_mm_prefetch(&xdata, 0)
_mm_prefetch(&ydata, 0)
プリフェッチの挿入
▌ Prefetch NTAにより128バ
イトのデータを2次キャッ
シュにのみフェッチ
_mm_prefetch(&xdata+128, 0)
_mm_prefetch(&ydata+128, 0)
:
xroscor(xdata, ydata, ・・・)
// 相関処理関数
:
24 September 2015
Yokohama National University
16
実験:速度計測
▌ OpenMP並列相関処理ソフトウェア速度計測
▌逐次処理
▌並列処理スケジューリング有・無
▌GNU Compiler (gcc ver4.2.4)
オプション無・-O2
▌Intel Compiler (icc ver 9.1)
動作環境
オプション無・-O2
CPU
Memory
OS
Core 2 Extream QX6700 2.66GHz
(Quad Core)
2GBytes
CentOS 5.2
24 September 2015
Yokohama National University
17
実験結果
Intel
GNU
4並列
スケジュ有
4並列
スケジュ無
逐次処理
処理速度
Mbps
▌Intel Compilerでの4並列・スケ
ジューリング有・-O2オプションが
最も早く215Mbpsの速度を出し、
逐次処理(-O2)と比べ、約3.91倍
の速度向上を得た
▌スケジューリング有と無を比べ、
無では207Mbpsであり、処理時
間としてはスケジューリング有と
約170msの差が出た
▌GNUコンパイラでは並列前と比
べ、約1.33倍程度の速度向上で
あった
-O2
オプション無
24 September 2015
Yokohama National University
18
まとめと今後の課題
▌ まとめ
▌並列処理の結果、実時間処理を行う上で十分な約
215Mbpsの処理速度を得た
▌ 今後の課題
▌実時間処理システムの構築
▌データ観測・送信サーバ、データ受信クライアントの作成
▌実時間処理実験を行う
24 September 2015
Yokohama National University
19
補足資料:遅延追跡
遅延
遅延変化近似直
線
a
b
1ビットシフト
離散的遅延追跡
c
時間方向
ビットシフトマイナス方向の場合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
Y data
切り離し
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
遅延変化が逆方向の場合はビットの挿入動作を行う
24 September 2015
Yokohama National University
20
補足資料:フリンジストッピング1
上図において、X局は電波源に向かい、Y局は遠ざかっている。この場合、ドップ
ラーシフトのため、Y局で受信される信号はX局の信号に比べて周波数が下がって
受信される。したがって、X局の信号もそれだけ周波数を下げてやらなければ相関
が出ない。この周波数変換を相関器で行うのがフリンジストッピングである。
相関器では、一方のデータに対してフリンジ位相回転に応じたcosおよびsin関数を
乗じることによってこれを行う。
24 September 2015
Yokohama National University
21
補足資料:フリンジストッピング2
フリンジストッピングに用いるsin、cos関数を、
ソフトウェア上では+1,0,-1の3レベルで近似する
1
Sin
0
9/8 π
1/8 π
7/8 π
1/8 π
7/8 π
15/8 π
17/8 π
-1
近似されたフリンジパターンと片局のデータ
を掛け合わせることによってフリンジストッピン
グを行う。
1
Cos
0
9/8 π
15/8 π
17/8 π
0
+1
0
-1
0
補正前 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-1
ソフトウェア上でビットの掛け算は
 +1の部分の掛け算はそのまま
 -1の部分の掛け算はビット反転
 0の部分の掛け算は処理を抑制
補正後
111111
000000
という形で再現する。
24 September 2015
Yokohama National University
22
補足資料:相関処理
二つの信号の相関を調べるには、時間領域で直接に掛け算をし、
相関関数を計算する。
片方の信号を時間方向にずらしながら、順次相関を調べてゆくこと
によって、信号の到達時間差τを推定することができる。
24 September 2015
Yokohama National University
23
補足資料:4ch分の相関グラフ
24 September 2015
Yokohama National University
24