/
Aho-Corasick  String  Mataching Aho-Corasick  String  Mataching

Aho-Corasick String Mataching - PowerPoint Presentation

leventiser
leventiser . @leventiser
Follow
342 views
Uploaded On 2020-11-06

Aho-Corasick String Mataching - PPT Presentation

on Shared and DistributedMemory Parallel Architectures 20121018 M2 ishizaki 文字列照合アルゴリズム AhoCorasick 法 DNA やタンパク質の配列解析 データマイニング ID: 816095

x86 mpi node cray mpi x86 cray node gpu threads xmt 5560 xeon tesla cell processor cpu cluster niagara

Share:

Link:

Embed:

Download Presentation from below link

Download The PPT/PDF document "Aho-Corasick String Mataching" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Aho-Corasick String Mataching on Shared and Distributed-Memory Parallel Architectures

2012/10/18 M2

ishizaki

Slide2

文字列照合アルゴリズム(Aho-Corasick法)DNA

やタンパク質の配列解析

データマイニングセキュリティシステムEtc…上記のアプリケーションは大量のデータを処理し、時間内に有意義な結果を生成するために非常に高いパフォーマンスを必要とする

背景

Slide3

FPGAField-Programmable Gate Array製造後に購入者や設計者が構成を設定できる集積回路CRY XMT

超マルチスレッドスーパーコンピューターアーキテクチャ

各プロセッサが128スレッドを並行で動作させたり対称型/非対称型マルチプロセッサ対称型 

CPU

毎の役割が同じ非対称型 CPU毎の役割が違うCell/BEソニー、東芝なとが開発した非対称型(ヘテロジニアス)マルチコアCPU

予備知識

Slide4

文字列マッチングの効率的な実装に関するものFPGAを使った実装の設計Cray XMT

を用いたマルチスレッドを利用した設計

マルチコアを利用した設計Cell Broadband Engine(Cell/BE)のようなASMPを使った設計

GPU

を使った設計上記のものは主に速度に焦点を当てている関連研究

Slide5

近年、検索するための入力の大きさやマッチするパターンの数から独立したようなパフォーマンスの安定性を考えられてきている。また、文字列マッチングアプリケーションは高性能だけでなく、大きな辞書に対処する能力を必要とする。

NIDS(

ネットワーク型侵入検知システム)は100万以上の脅威を考慮しながら10Gbpsでイーサネットリンクから入力をスキャンする必要がある。

関連研究

Slide6

高いパフォーマンス大きいデータセットのための統合の柔軟性カスタマイズ性

文字列マッチングに必要な特性

Slide7

ハードウェアベースの文字列マッチングではメモリ不足のため大規模な辞書をサポートできないCell/BEのようなプラットフォームではプログラミングが非常に複雑でカスタマイズが困難

マルチコア、マルチスレッドアーキテクチャと

GPUの汎用計算の出現によりソフトウェアベースの文字列マッチングが高スループットの実現を可能に!!!解決策

Slide8

以下の場合の最適化された実装を考える共有メモリor分散メモリ かつ

対象型、非対称型でのプロセッサーの要素

高いパフォーマンス大きいデータセットのための統合の柔軟性カスタマイズ性

入力やデータセットによるパフォーマンスの変動の制限

目的

メモリ参照の数を最小限に抑える

メモリの競合を減らす

Slide9

共有メモリCray XMT(128 threads/processors)Niagara2 ×2(6 cores/processor,8 threads/core)Intel Xeon 5560 ×2(4 cores/processor,2 threads/core)

分散メモリ

対称型クラスターXeon 5560 (10nodes,2processors/node )infinibandQDRを通して相互接続非対称型クラスター

Xeon 5560,Tesla C1060 GPUs(10 nodes,2

GPUs/node)効率化する対象

ここでの

node

はメモリと

CPU

の一つの固まり

Slide10

文字種として有効な1文字に対してそれぞれに、オートマトン(DFA)は別なノードへの遷移が存在する1文字分遷移する時、作業量は等しい

メモリを読む回数など

ACのオートマトンと入力データは読み取り専用

基礎

Slide11

複数のスレッド、プロセスで実行を行う共有メモリ同じメモリ中のオートマトンにアクセスする。

分散メモリ

各々独自のオートマトンにアクセスする。ACの並列アルゴリズム

Slide12

node単位へ仕事の割り当てにMPIを使用MPI(Message

Passing Interface)

とは…並列コンピューティング利用するための標準化された規格である。実装自体を指すこともある。複数のCPUが情報をバイト列からなるメッセージとして送受信することで協調動作を行えるようにする

AC

の並列アルゴリズムMPI

プロセス

node1

node2

スレッド

スレッド

スレッド

スレッド

スレッド

スレッド

Slide13

入力の分割→チャンクの作成AC

の並列アルゴリズム

今日の輪講は準備が大変でした。本当に本当に疲れました。

とりあえず帰って寝たいです。

今日の輪講は準備が大変

でした。本

でした。本

当に本当に疲れ

ました。と

ました。と

りあえず帰って寝たいです。

チャンクの粒度は何スレッドで実行されるかや、辞書中の最長文字列長によって変わる

重複の非効率性=

(

最長パターン

-1)/

チャンクの大きさ

Slide14

DFAをSTTとして表す。

列=ノード数と等しい

行=文字種と等しい各々の列はDFAのノードを表す

セル

の最終ビットに1/0で最終遷移先かどうかを格納状態遷移表(STT)

0

1

2

3

4

5

6

0000h

0001h

0002h

0001

00…0

1

h

遷移先の先頭アドレス

1

0

0

1line = 256*256byte

=64kb

Slide15

次は各々の構成毎にどのように最適化にしていくかですー。

Slide16

待ち時間を減らすことに焦点を当てるCray XMTの場合メモリアクセス時間の変動の主な原因は

ホットスポット

にある頻繁に同時に複数のスレッドがアクセスするメモリ領域の事原因アルファベットなどの特定の文字のメモリ部分の読み出しのアクセスが増えるため。

深さが浅いノードでのアクセスが大半なため。

Cray XMTの実装

0001h

Slide17

Alphabet shuffing256中でアルファベットが連続しているのが問題なので、線形変換を用いいてシャッフルする。

Symbol’=(symbol ×

fixed_offset) >> 8State replicationノードの浅い部分のSTTのレプリカを作成する。

同じ

STT列の異なるレプリカのアドレスはランダムにその状態を指す。CRY XMTでの解決策

Slide18

各CUGAスレッドは独立して入力テキストのチャンクでマッチングを実行する。これは、各スレッドの高い使用率を維持しながら適度なサイズのチャンクを使用する。

STT

の違い遷移先はアドレスでなく索引で保持するテーブルの各セルは32bitもっていて31bitが遷移先の索引で、最後の

1bit

を終端フラグとする。GPUでの実装

1line = 256*32bit = 1kb

Slide19

問題点1(ホットスポットが発生する可能性あり)各メモリコントローラーは256

バイト幅メモリパーティションを管理していて、一つのメモリコントローラーに作業が集中する可能性(

partition camping)Tesla C 1060の場合8つのパーティションがあるため、

32bit

の256個のセル(ASCII)の合計1024byteの行だった場合、1つのメモリコントローラーで2ノード分管理している

特定の偏りのある入力によってアクセス部分を集中してしまう。

GPU

での実装

Slide20

解決策共有メモリ上のSTT行のうち、よくアクセスされるSTT

(ノードの深さが浅い部分)をテクスチャメモリに移動GPUでの実装

Slide21

問題点2単一のソースからデータをストリーミングするアプリケーションでは、入力テキストを順次ホストメモリにバッファリングする。

そこで、入力を1文字づつ

読み込む際にスレッドはチャンクのひとまたぎづつロードしなくてはならない

GPU

での実装

Slide22

解決策グローバルメモリに入力テキストをコピーした後に変換を適用する。入力テクストは4文字毎(32byte)

毎にグループ化され、読み込みはグループ毎に行う。

GPUでの実装

Slide23

三種類の構成1.MPI&シングルスレッド2.MPI&

マルチスレッド

3.MPI&GPUMPIのロードバランサはバッファとバッファサイズの背一定可能なマルチバッファ方式を採用マッチ数が多いほど多くのキャッシュミスが生じて速度を低下させるので、動的に仕事を割り振った方が効率が良い

分散メモリでの実装

Slide24

MPI&マルチスレッドの例分散メモリでの実装

MPI

node1

node2

node3

afjdsafjsafjsklfajskdfajsfk

afjdsafi

fisafisk

sklfaisk

スレッド1

スレッド

2

スレッド1

スレッド

2

スレッド1

スレッド

2

afjds

dsafi

fisaf

afisk

sklfa

faisk

Next→sklfaisk

Slide25

文字列照合の速度をGbpsで比較辞書語

Dictionary1

19万パターン、平均16バイトのテキストDictionary219万パターン、平均16バイトのテキストとバイナリデータEnglish

2万パターン、平均

8.5バイトの一般的な言葉Random5万パターン、平均8バイトのランダムアルファベット文字列実験

Slide26

Input dataTextEnglish text of the King James BibleTCPTCP/IP traffic

Random

ランダムアルファベット文字列Itself辞書にマッチする単語をつなげたもの実験

Slide27

使用マシンNiagara 2Two Niagara 2 processors (1,165GHz) 32GB of memoryXMT

128 node, with a total of 1 TB of memory, Seaster2 interconnection

X86 SMPTwo Xeon 5560 processors(2.8GHz), 24GB of memoryX86 cluster10 nodes, each one configured as the x86 SMP, interconnected with Infiniband QDR (24Gps)GPU cluster

10 nodes with two Tesla C 1060 (4GB of memory) each.

実験

Slide28

入力テキストは単一のソースからストリームされ、処理される前にメモリにバッファされている。入力に使用するバッファサイズは100MB

入力をチャンク化させた時のサイズは2

KBスレッドの利用数の点でのトレードオフだが、経験的に決めた値非効率性は最悪の場合で0.7%(16byteの時)

重複

の非効率性=(最長パターン-1)/チャンクの大きさ実験

Slide29

どの時もわりとLinearに近い結果となっている

結果

(Cray XMT)

Slide30

48を越えたあたりで、ホットスポットの影響をやや受け始める

結果

(Cray XMT)

Slide31

X86…8 threads/processor

結果

(x86 SMP)

Slide32

Nehalem内のキャッシュ構造が原因でスレッドを増やした時にたまにパフォーマンスが落ちる。キャッシュ内の存在しないメモリにアクセスする確率が高くなる

itself

などはパフォーマンスが落ちる結果(x86 SMP)

Slide33

Niagara2では80スレッドまでは高速化するが、96

で限界がくる

結果(Niagara 2)

Slide34

Itselfが遅くなる理由はキャッシュの問題

結果

(Niagara 2)

Slide35

GPU(tesla),Niagara2,Xeonはマッチングが少なかったり、辞書が小さいとパフォーマンスが大きいSTT

をキャッシングするのにテクスチャメモリが足りないのが原因

評価(各々の共有メモリプラットフォームの性能のばらつき)

Slide36

1ノードにつき2つのMPIプロセスを実行している

1

ノードにつき最大12threads動かせる??Intel Xeon 5560 (4 cores/processor,2 threads/core

)

(10nodes,2processors/node)評価(x86 cluster)

Slide37

評価(x86 cluster)

ボトルネックは

5ノード

原因は

infinibandの帯域制限ノードが増えすぎるとMPIの方でも多く帯域を使うので性能が落ちたりもする

Slide38

評価(CPU cluster)

Slide39

共有メモリ構成での並列処理分散メモリ構成でのMPIロードバランサを使用した並列処理

まとめ