• 検索結果がありません。

Publication 論文 鈴村研究室 大規模データ処理・ストリームコンピューティング IC2010 ueno

N/A
N/A
Protected

Academic year: 2018

シェア "Publication 論文 鈴村研究室 大規模データ処理・ストリームコンピューティング IC2010 ueno"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

データストリーム処理における GPU タスク並列を

スケーラブルな異常検知機構の実現 用いた

上野 晃司(東京工業大学) , 鈴村 豊太郎(東京工業大学/ IBM 東京基礎究所)

(2)

目次

はじめに

 変化点検知アルゴリズム SST の GPU 対応におけ

問題とその解決

SVD (特異値分解)の GPU タスク並列実装

性能評価

関連研究

まとめと今後の展望

(3)

データストリーム処理とは

データを蓄積せず、オンメモリ上でリアルタイムに

逐次処理を行う

従来は、データを蓄積してから計算するバッチ処理が主流

大規模なデータの処理やリアルタイムアプリケーションの実

現に有効

データストリーム処理系の例

IBM Research: System S

MIT: Borealis

意味のある必要なデー

時々刻々と流れてくる 大規模なデジタルデー

時々刻々と流れてくる 大規模なデジタルデー

データストリーム 管理システム

リアルタイムアプリ ケーションの実現 リアルタイムアプリ ケーションの実現 リアルタイムに

オンメモリ上で処理 リアルタイムに オンメモリ上で処理

(4)

異常・変化点検知

変化点検知とは

時系列データのデータ生成機構に、ある変化が生じた時点を

検知

応用例

トラフィックモニタリングによるネットワーク異常の検知

サーバのオンラインデータ観測によるサイバーテロ監視

株取引の自動処理

工場の生産ラインのセンサーによる監視

自動車のセンサーによる監視

ネットワークを使って自動車のセンサーデータを得る

SST ( Singular Spectrum Transformation, 特異スペクトル変

換)

変化点検知アルゴリズムの1つ

(5)

変化点検知アルゴリズム SST *1

*1 Tsuyoshi Ide, et al, Knowledge Discovery from Time-series Data using Nonlinear Transformations, The 4th Data Mining Workshop of JSSST 2004

SVD (特異値分解)を

計算し、時系列データ

の特徴を抽出

特徴ベクトルから変化

度スコア (z) を計算

時系列データから行列

(密行列)を作成

ウィンドウサイズが大きくなると SVD の計算量は O(n

3

) で

増加 リアルタイム処理するには高速化が必要

 モデルを使わない変化点検知手法

モデルを使う手法はモデルの想定していない場合に対応できな

より一般的な変化点検知に応用可能

(6)

GPGPU ( General Purpose GPU )

GPU をグラフィック以外の計算目的に使用

GPU を使用するメリット

CPU の数倍の演算性能

高速なメモリ転送速度( 100GB/s 超 cf. Core i7 970:25.6GB/s )

GPGPU のデメリット

プログラミングの難易度が高い

高速化できないアプリケーションも多い

並列化が困難又は不可能な場合など

開発環境

NVIDIA CUDA 、 Open CL e.t.c.

 本論文では最も一般的な NVIDIA の CUDA を使用する

(7)

NVIDIA GPU アーキテクチャ

数十個の Streaming Multiprocessor(SM) で構成される

各 SM に1つずつ SIMD 演算器がある

命令は warp ( 32 スレッド)ごとに発行される (SIMT)

1つの SM で複数の warp を処理可能

各 warp はそれぞれ命令ポインタを持っていて擬似的に並列実行

GPU 全体では数千スレッドを並列実行

スレッドブロックは warp の集まり

warp1 warp2 warp3

・・

・ Streaming Multiprocessor

SIMD 演算器

命令実行の準備ができた warpから処理

命令 GPU

SM

Global Memory SM

SM SM SM

SM SM SM

(8)

変化点検知アルゴリズム SST の GPU 対応

森田らによる研究

*1

SST 高速化に GPU を使用

CULA ( LAPACK の CUDA 実装)

を使って、 SVD (特異値分

解)を GPU で高速化

複数センサーに対応できない

監視対象が多い場合は?

数百個のセンサー

1 つ 2 秒だと、 100 個で 200 秒

小さい行列を高速化したい

行列サイズが大きいと GPU を

使っても遅すぎる

行列サイズ 400 以 下では、 CPU より

遅い GPU

CPU

*1 森田康介 , 鈴村豊太郎 . 「データストリーム処理を用いた変化点検知の実装と GPU による性能最適化」 . 電子情報通信学会 データ工学研究会 , 2010 年 6 月

行列サイズが大きくなると GPU の 速いが、時間がかかりすぎて方が

リアルタイム処理は不可能

性能評価グラフ

(9)

変化点検知アルゴリズム SST の GPU 対応における

問題

 十分な並列性を得られない

密行列の SVD (特異値分解)

行列サイズが小さくて高速化できない

GPU の性能を引き出すには行列サイズ 1000 以上必要

SVD を並列化すれば解決

GPU スレッドの欠点

すべての GPU スレッドは1つの関数を実行 (SPMD)

複数の種類のプログラムを同時に実行できない

例外的に最新の Fermi コア GPU *1は 16 *2までの同時実行が可能

しかし、 SST では数十~数百レベルの並列化をするので、非効率

GPU スレッドは各スレッドが独立でない

SIMD で計算されるため

*1 GeForce GTX 480, Tesla C2050 などが該当

*2 GPU の SM 数により、同時実行可能数は異なる

(10)

GPU タスク並列で高速化

 複数の時系列データ処理を並列化(=タスク並列)

十分な並列性の確保が可能

 スレッドブロックごとにタスクを割り当てる

各スレッドブロックは独立に動作

最新の Fermi コア GPU なら最大 128 タスクを同時実行可能

タスクスケジューリングは GPU ハードウェアで実行され

2

16

(=65,536) 個までのタスク管理を CUDA フレームワーク

が処理

(11)

GPU タスク並列の実現方法

 既存ライブラリはタスク並列非対応

カーネル関数を書き換える必要あり

CULA, CUBLAS などのライブラリはカーネル関数を隠蔽してし

まっているので、利用できない

 タスク並列版 SVD を実装する必要がある

__global__ void kernel_function(float* A, int bda, … ){

/* ブロック ID を使ってデータを識別 */

float* bA = &A[bda*blockIdx.y];

/* 何かを実行する */

}

GPU タスク並列カーネル関数コード例

(12)

SVD アルゴリズム

 密行列の SVD (特異値分解)

 Sheetal Lahabar

*1

の論文を参考にした

LAPACK で使われている Golub-Reinsch のアルゴリズム

 前半: Householder 変換による二重対角化

 後半: QR 反復による対角化

 本発表では前半の Householder 変換よる二重対角

化のみを実装・評価

*1 Sheetal Lahabar, P. J. Narayanan. Singular value decomposition on GPU using CUDA. IEEE International Symposium on Parallel & Distributed Processing Symposium. 2009.

(13)

二重対角化タスク並列実装の詳細

 計算をすべて GPU 化

Householder ベクトルを求める部分も含めてすべて GPU 化

CPU ・ GPU 間のデータ転送は遅い

ブロック化して実装

Householder 変換による二重対角化にはブロック化

*1

が有効

ブロック化は実装コストが高いため、最初はブロック化なしで実装

しかし、ブロック化した方が速いことが判明

ブロックサイズは CUDA との相性から 32 とした

warp が 32 スレッドなので

*1 Jaeyoung Choi, Jack J. Dongrra, David W. Walker. The design of a parallel dense linear algebra software library: Reduction to Hessenberg, tridiagonal and bidiagonal form. Numerical

Algorithms, Volume 10, Number 2, 379-399. 1995.

(14)

性能評価

CPU AMD Phenom X4 9850 (4コア , 2.5GHz) メモリ 8 GB

GPU

Tesla C1060( Geforce GTX 280 と同コ OS ア)CentOS 5.2

環境

評価方法

CPU

LAPACK(Version 3.2.1)+ATLAS(Version 3.8.3)

LAPACK の関数 sgebrd (密行列を二重対角化する関数)を使用

シングルスレッドで実行

GPU

データ転送時間も含めて計測

CPU ・ GPU ともに単精度

行列データは乱数で生成

(15)

0 64 128 192 256 320 384 448 512 576 0

2 4 6 8 10 12 14 16 18 20 22

ブロック化なし(タスク 数 64 )

行列サイズ n

スピードアップ ( GPU / CPU 1コア )

性能評価

Partition Camping (メモ リアクセス競合)の影響

ブロック化によっ て2倍程度高速化 17.22

 行列サイズを変化させた時の高速化率

タスク数は 64, 256 で計測

CPU:AMD Phenom X4 9850 ( 1 core のみ使 用)GPU:Tesla C1060

(16)

性能評価

タスク数 32 以 上で十分高速

SM 数が 30 なので、タ スク数 16 以下では遅

タスク数を変化させた時の高速化率

行列サイズ 448 に固定

1 2 4 8 16 32 64 128 256 512

0 4 8 12 16 20

タスク数

スピードアップ ( GPU / CPU 1コア )

CPU:AMD Phenom X4 9850 ( 1 core のみ使 用)

(17)

関連研究

SST 高速化に関する研究

FELIX-SST

*1

SSTの発案者である井手氏による高速アルゴリズムの提案

ウィンドウサイズ 250 において、 130 倍の高速化に成功

GPU タスク並列なら一般的な行列計算を高速化可能

GPU タスク並列に関する研究

Marisabel Guevara らによる研究

*2

既存実装をコード修正なしで、タスク並列を実現

タスク数に比例して、条件分岐や引数の数が増えるという問題がある

GPU を使った行列計算の高速化に関する研究

ほとんどの研究は非常に大きな行列を対象としている

小さい行列の並列処理に関する研究はない

*1 T. Ide. Speeding up Change-Point Detection using Matrix Compression. IBIS, 2006.

*2 Marisabel Guevara, Chris Gregg, Kim Hazelwood, Kevin Skadron. Enabling Task Parallelism in the CUDA Scheduler. Proceedings of the Workshop on Programming Models for Emerging Architectures (PMEA). September 2009, pages 69-76.

(18)

まとめと今後の展望

まとめ

GPU タスク並列を提案した

SVD の前半の二重対角化を GPU タスク並列で実装

 Householder 変換による二重対角化において、行列サ

イズ 320 ,タスク数 256 の場、ブロック化した実装で

17.22 倍の高速化

今後

SST 全体を GPU 実装する

 データストリーム処理系に乗せる

(19)

ご清聴ありがとうございまし

(20)

Partition Camping

メモリアクセスの競合により、速度が低下する現象

発生メカニズム

GPU のグローバルメモリは8つの Partition に分かれている

*1

データは 64byte 幅で Partition に振り分けられる

ある Partition にアクセスが集中すると、その Partition がボトルネッ

クとなり速度が低下

行列サイズ 256,512 などの切りのいいサイズで発生しやすい

発生を抑制するには

行列の場合、アクセス順の対角化が有効

余計なインデックス計算が増える

二重対角化の実装において、行列転置を扱う場合などに発生

しやすいため、発生を抑える実装方法を取ったが、完全には

回避できなかった

*1 GeForce GTX 280, Tesla C1060 などの GPU の場合

参照

関連したドキュメント

Proof of Lemma 4.2 We shall use T to denote the once-punctured torus obtained by removing the cone point of T (n).. In order to construct covers of T , we require the techniques

For suitable representations and with respect to the bounded and weak operator topologies, it is shown that the algebra of functions with compact support is dense in the algebra

We describe the close connection between the linear system for the sixth Painlev´ e equation and the general Heun equation, formulate the Riemann–Hilbert problem for the Heun

n , 1) maps the space of all homogeneous elements of degree n of an arbitrary free associative algebra onto its subspace of homogeneous Lie elements of degree n. A second

Given a compact Hausdorff topological group G, we denote by O(G) the dense Hopf ∗-subalgebra of the commutative C ∗ -algebra C(G) spanned by the matrix coefficients of

In particular we show, using one of the Crum-type transformations, that it is possible to go up and down a hierarchy of boundary value problems keeping the form of the second-

By using some results that appear in [18], in this paper we prove that if an equation of the form (6) admits a three dimensional Lie algebra of point symmetries then the order of

Besides the number of blow-up points for the numerical solutions, it is worth mentioning that Groisman also proved that the blow-up rate for his numerical solution is