マルチコア cpu と openmp スレッド技術 を利用した vlbi...

24
June 13, 2 June 13, 2 022 022 Yokohama Yokohama National National Takahashi Takahashi Laboratory Laboratory マママママ CPU マ OpenMP ママママママ マママママ VLBI ママママママママママ ママママママ ママ マ ママママ

Upload: tarala

Post on 13-Jan-2016

93 views

Category:

Documents


1 download

DESCRIPTION

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

TRANSCRIPT

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

Takahashi Takahashi LaboratoryLaboratory

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

横浜国立大学修士2年 坂従晴彦

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

2

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

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

3

背景:測地 VLBI とは

▌ VLBI(Very Long Baseline Interferometory :超長基線電波干渉法 )▌ 数十億光年離れた準星からの電波を、複数のアンテナ

で同時に受信し、その到達時間差を精密に計測する技術

▌ 測地 VLBI の目的▌ VLBI によって得られたデータを基に、受信点(アン

テナ)間の距離を精密に求めることにより地球の挙動を観測する

▌ 測量▌ プレート運動

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

4

準星からの電波

データ輸送,伝送

背景:測地 VLBI の流れ平面波

基線

遅延時間

サンプリング サンプリング

相関処理

データ解析

データ輸送,伝送

データ記録 データ記録

原子時計 原子時計

準星 ▌ データ記録▌ 磁気テープからハードディスク▌ 24 時間観測データは数 TByte

▌ 観測データは非圧縮データ▌ データ輸送法

▌ 記録媒体の物理的な輸送からネットワーク伝送

▌ データ処理法▌ ハードウェア相関器からソフト

ウェア相関器

データ記録なしの実時間伝送処理へ

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

5

目的

▌ VLBI 実時間処理を行う上で高速な相関処理 ソフトウェアが必要

▌クアッドコアの CPU において OpenMP を利用したマルチスレッド並列化による高速化

▌最終的には実時間処理システムの構築

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

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 ビットづつずらして繰り返す

相関関数の例

▌相関処理によって電波の到達時間差を求める

                   が最大となる τ が遅延時間

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

7

VLBI の主な処理▌PCAL 信号検出

▌ 機器位相を校正するための信号の検出▌遅延追跡

▌ 地球回転による遅延時間変化補償▌フリンジストッピング

▌ 地球の自転によるドップラー効果の補正▌相関処理

▌ 二つの信号の相関関数を求める処理

これらの処理はCH ごと独立に

処理可能

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

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

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

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 サポート ○ ○ ×

データ並列のサポート

× ○ ×

性能 ○ △ ×

比較表

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

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 によるマルチス

レッド並列化▌性能と同時に安定性も考慮▌リソースやメモリはスレッ

ド同士で共有

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

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

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

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

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

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 にある

ユーザーによるスケジューリング

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

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 局

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

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)

プリフェッチ命令

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

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)

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

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

動作環境

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

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

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

19

まとめと今後の課題

▌ まとめ▌並列処理の結果、実時間処理を行う上で十分な

約 215Mbps の処理速度を得た

▌ 今後の課題▌実時間処理システムの構築

▌データ観測・送信サーバ、データ受信クライアントの作成

▌実時間処理実験を行う

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

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

遅延変化が逆方向の場合はビットの挿入動作を行う

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

21

補足資料:フリンジストッピング1

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

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

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 の部分の掛け算は処理を抑制

 という形で再現する。

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

23

補足資料:相関処理

 二つの信号の相関を調べるには、時間領域で直接に掛け算をし、相関関数を計算する。

 片方の信号を時間方向にずらしながら、順次相関を調べてゆくことによって、信号の到達時間差 τ を推定することができる。

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

April 21, 2023April 21, 2023 Yokohama National Yokohama National UniversityUniversity

24

補足資料: 4ch 分の相関グラフ