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