• 沒有找到結果。

第一章 緒論

本章首先介紹固定字串比對與近似字串比對的差異,爾後收集分析 相關論文,提出研究動機及研究流程。本章主要分為研究背景、研究動 機、文獻探討、研究流程及研究結果共五小節。說明如下:

第一節 研究背景

字串比對(string matching)在許多領域中被廣泛運用,例如網路入 侵偵測系統(network intrusion detection system)、網際網路搜尋(web searching)、去氧核糖核酸(DNA)序列比對等等。而字串比對演算法 可 區 分 為 固 定 字 串 比 對 ( exact string matching ) 與 近 似 字 串 比 對

(approximate string matching)兩類。其中,固定字串比對必須找出所 有字串樣式(string pattern)於輸入文字(input stream)中出現的位置,

所有字串樣式必須精確的比對,不容許任何錯誤。另一方面,近似字串 比對所搜尋的字串樣式則可容許特定數量的誤差發生,其容許誤差就是 允許比對的字串樣式可以經由插入(insertion)、刪除(deletion)及替代

(substitution)等動作,轉換成輸入文字中的某一部分(Navarro, 2001)。

這些動作有一定的容許誤差,一般稱為 edit distance 或 Levenshtein distance,此容許誤差由使用者決定。

舉例來說,給定一個字串樣式為"survey"與一個輸入文字為"surgery",

以固定字串比對而言,"survey"沒有 match "surgery",但以近似字串比對 而言,"survey"可以經由替代 v 為 g,與插入一個 r 於 ey 之間,而 match

"surgery",一般稱此兩字串之間的 edit distance 為 2;換言之,在 edit distance 為 2 的條件下,"survey" matches "surgery"。

由於容許特定數量的誤差,近似字串比對更廣泛被運用於網際網路

2

搜尋(Qin, Li, Zhu, & Tian, 2010; Wu, Zuo, Hu, Zhu, & Li, 2008)、去氧核 糖核酸序列比對(Ivanko, 2006; Li, Ni, Wong, & Leung, 2011)、拼字檢查

(Lyras, Sgarbas, & Fakotakis, 2007; Soleh & Purwarianti, 2011)、漢明碼 搜尋音樂(Dong & Qi, 2010; Liu, Huang, Yang, & Zhang, 2009)、封包過 濾(Liu, Lin, Li, & Lee, 2005; Shi & Xie, 2011)等應用。而近似字串比對 演算法可以大致區分為 dynamic programming(Kaplan & Kaplan, 2004;

Smith & Waterman, 1981; Si, Yang, Lu, Sun, & Mei, 2009)與 bit-parallelism

(Baeza-Yates & Navarro, 1999; Hyyrö, 2008; Myers, 1999; Wu & Manber, 1992)兩大類;其中 dynamic programming 是採用建表的方式來計算 edit distance,並以 back-traverse table 的方式來求得比對的位置,傳統的 dynamic programming 演算法時間複雜度與空間複雜度分別為 O(𝑚𝑛) + O(𝑚 + 𝑛)與 O(𝑚𝑛),其中 m 與 n 分別代表字串樣式的長度與輸入 文字的長度;故記憶體需求便成為傳統 dynamic programming 在處理大 量資料時的瓶頸。

另一方面,bit-parallelism 利用 AND、OR、XOR 等邏輯運算模擬非 確定有限狀態自動機(Nondeterministic Finite Automaton, NFA)的運作,

比對是否有相似的字串樣式存在於輸入文字中,其時間複雜度與空間複 雜度分別為 O(n)與 O((m-k)(k+2)),k 為 edit distance(Baeza-Yates

& Navarro, 1999)。Bit-parallelism 因為採用大量的位元運算子(bitwise operation),因此效率比 dynamic programming 要高,記憶體需求亦遠小 於 dynamic programming 演算法,唯受限於長度較短的字串樣式。

上述兩種演算法,有其各別適用的時機,例如 dynamic programming 可提供在不同比重下的近似字串比對,像是 smith-waterman 演算法除了 利用 dynamic programming 的核心運算外,還須搭配核酸與蛋白質序列 比對工具(Basic Local Alignment Search Tool, BLAST)加重不同元素的

3

比重,而 bit-parallelism 便不適用於此項運算。Bit-parallelism 的優勢在 於 處 理 速 度 快 與 節 省 記 憶 體 , 因 此 在 需 要 快 速 搜 尋 字 串 樣 式 時 , bit-parallelism 便可以提供較 dynamic programming 省時的方法。

第二節 研究動機與目的

近似字串比對的運算量大且非常耗費時間,尤其在針對大量的輸入 文字比對大量的字串樣式時,其耗費的時間更為明顯。

在近似字串比對演算法中,由於 dynamic programming 必須透過建 表的方式來進行運算,其表格大小為整個輸入文字與字串樣式相乘的二 維陣列;因此在處理一個 1Gbytes 的輸入文字與長度為 10 的字串樣式時,

所佔據的記憶體將近 10Gbytes,一般個人電腦是無法處理的。

反之,bit-parallelism 利用邏輯運算來模擬非確定有限狀態自動機,

在實現此演算法時,除了將輸入文字搬入硬碟之外,只需儲存非確定有 限狀態自動機,此狀態自動機利用一個無號長整數型態來表示,大小為 4 個位元組(Bytes)。而非確定有限狀態自動機使用大量的位元向量表 示與運算,也較貼近 CPU 與 GPU 的核心運作模式,除了所需的記憶體 也不大之外,其處理速度也較快。

綜合以上因素,為了降低時間與空間成本,本研究的目的為探討如 何運用多圖形處理器(Graphical Processing Units, GPU)加速近似字串比 對之演算法。

第三節 文獻探討

近似字串比對應用範疇種類繁多,從比對字母到比對圖形、影像皆 有其應用。由於容許誤差值的特性,可彌補資訊不充足的情況下,搜尋 到期待的資料。

4

生物資訊方面,去氧核醣核酸序列比對可以得知兩基因序列的相似 度,可幫助建置生物序列資料庫;在取得一個未知物種之基因序列片段 時,可透過去氧核醣核酸序列比對在生物序列資料庫中,搜尋出在目前 所知的物種中,相似度最高的生物。基因檢測為另一近似字串比對之應 用,可提供一個檢測先天遺傳疾病或癌症的檢測(Dinu & Ionescu, 2011)。 對於網際網路的應用,近似字串比對提供搜尋引擎更強大的搜尋能力,

方面使用者得到多種不同組合的資訊。資訊安全方面,傳統的網路入侵 偵測是採用固定字串比對,但攻擊行為往往夾雜許多雜訊,所以近似字 串比對可以當作過濾器,來偵測隱藏的攻擊行為(Song, Xue, & Wang, 2006)。

而 GPU 多執行緒的技術提供強大的運算能力,可以更快速的獲取 想要的結果與資訊。許多研究便透過 GPU 加速 smith-waterman 演算法,

smith-waterman 是由 dynamic programming 衍伸而來的演算法(Liu, Schmidt, Voss, Schroder, & Muller-Wittig, 2006; Liu, Huang, Johnson, &

Vaidya, 2006; Munekawa, Ino, & Hagihara, 2008)。而在立體影像的領域,

也有許多利用 GPU 加速基於 dynamic programming 來實現影像的演算法

(Moslah, Valles-Such, Guitteny, Couvet, & Philipp-Foliguet, 2009; Kalarot, Morris, & Gimel’farb, 2010; Liao, Lin, & Medioni, 2011)。然而本研究發現 以 bit-parallelism 為加速對象之研究相對較少。另外 bit-parallelism 透過 AND、OR、XOR 等邏輯運算,比起 dynamic programming 需要作大量 的加法與條件判斷式來說,較符合 GPU 等硬體機器的運作。

結合以上種種因素,本研究欲以 bit-parallelism 為研究對象,透過多 個 GPU 來加速效能。

5

第四節 研究流程

本 研 究 流 程 主 要 分 為 三 個 階 段 , 首 先 本 研 究 分 析 dynamic programming 與 bit-parallelism 兩種演算法,瞭解其差異與適用時機,並 分析此兩種演算法平行加速的可行性。

接下來,本研究將各別實現此兩種演算法於 CPU 與 GPU 上,並比 較 CPU 與 GPU 的成效。

最後本研究將給予一個大量的輸入文字,透過 多個 GPU 加速 bit-parallelism。

第五節 研究貢獻

本研究初步實驗於四核心 CPU 主機並結合 pthread library 實現了 dynamic programming 與 bit-parallelism 兩種近似字串比對主要的演算法,

以輸入文字 256Mbytes 為例,實驗結果分別都比傳統單一執行緒 CPU 版 本的 dynamic programming 及 bit-parallelism 快上 4 倍與 5 倍左右的速度;

另外在處理 2Gbytes 的輸入文字時,以單一個 GPU 加速的 bit-parallelism 可得到比傳統使用單一執行緒 CPU 版本的 bit-parallelism 快上 7 倍左右 的加速,而比以 pthread library 加速的 bit-parallelism 快上 2 倍的速度。

而本研究最後將進一步利用多個 GPU,結合 openMP 技術提升近似字串 比對演算法的速度。

6

7

相關文件