TW201439965A - 用於樣本後綴陣列的平行重建之系統、方法、與電腦程式產品 - Google Patents
用於樣本後綴陣列的平行重建之系統、方法、與電腦程式產品 Download PDFInfo
- Publication number
- TW201439965A TW201439965A TW102139653A TW102139653A TW201439965A TW 201439965 A TW201439965 A TW 201439965A TW 102139653 A TW102139653 A TW 102139653A TW 102139653 A TW102139653 A TW 102139653A TW 201439965 A TW201439965 A TW 201439965A
- Authority
- TW
- Taiwan
- Prior art keywords
- index
- block
- string
- suffix array
- thread
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本發明提供一種用於重建一樣本後綴陣列的系統、方法與電腦程式產品。針對一字串的一樣本後綴陣列的每一索引,該樣本後綴陣列係藉由基於一FM索引來計算對應於該索引的一區塊值,並基於該等區塊值重建對應於該字串的該樣本後綴陣列來進行重建。計算該樣本後綴陣列之至少兩個相對應索引的至少兩個區塊值係平行地執行。
Description
本發明關於平行運算,更特定而言係關於串列排序(list ranking)技術。
一後綴陣列為一字串之該等後綴的一已排序陣列。一後綴陣列為一後綴樹的一替代性資料結構。後綴陣列可用於關於全文字搜尋、生物資訊及資料壓縮的演算法當中,以及其它種應用。一字串的後綴陣列可藉由執行該相對應後綴樹的一由上往下的遍歷(traversal)來產生。一樣本後綴陣列為儲存在一字串之後綴陣列中該等索引的一子集合的陣列。
以往用於建構一樣本後綴陣列的演算法在本質上為序列性,因此建構該樣本後綴陣列所需要的循環數目係正比於該字串的長度。因此有需要處理關聯於先前技術的這種及/或其它問題。
本發明提供一種用於重建一樣本後綴陣列的系統、方法與電腦程式產品。針對一字串的一樣本後綴陣列的每一索引,該樣本後綴陣列係藉由基於一FM索引來計算對應於該索引的一區塊值,並基於該等區塊值重建對應於該字串的該樣本後綴陣列來進行重建。計算該樣本後綴陣列
之至少兩個相對應索引的至少兩個區塊值係平行地執行。
100‧‧‧平行處理單元
102‧‧‧系統匯流排
104‧‧‧記憶體
105‧‧‧輸入/輸出單元
110‧‧‧主機介面單元
115‧‧‧格柵管理單元
120‧‧‧工作分配單元
150‧‧‧串流多重處理器
160‧‧‧交叉開關
165‧‧‧第2階快取
180‧‧‧記憶體介面
205‧‧‧指令快取
210‧‧‧排程器單元
215‧‧‧分派單元
220‧‧‧暫存器檔案
250‧‧‧處理核心
251‧‧‧雙精度核心
252‧‧‧特殊功能單元
253‧‧‧載入/儲存單元
270‧‧‧共享記憶體/L1快取
280‧‧‧互連接網路
290‧‧‧紋理單元
300‧‧‧全文字索引
305、310‧‧‧字串
320‧‧‧向量
330‧‧‧出現表格
400‧‧‧後綴陣列
410‧‧‧樣本後綴陣列
500‧‧‧虛擬碼
501、502‧‧‧變數
505‧‧‧定率函數
600‧‧‧虛擬碼
601‧‧‧第一階段
602‧‧‧第二階段
611‧‧‧區塊值
612‧‧‧索引
613‧‧‧步驟
614‧‧‧區塊鏈結
620‧‧‧do-while迴圈
700‧‧‧流程圖
702、704‧‧‧步驟
800‧‧‧流程圖
802、804、806、808、810、812‧‧‧步驟
900‧‧‧系統
901‧‧‧中央處理器
902‧‧‧通訊匯流排
904‧‧‧主記憶體
906‧‧‧圖形處理器
908‧‧‧顯示器
910‧‧‧儲存器
912‧‧‧輸入裝置
圖1例示根據一具體實施例之一平行處理單元;圖2例示根據一具體實施例之圖1的串流多重處理器;圖3例示根據一具體實施例中一字串T的一FM索引;圖4例示根據一具體實施例中圖3的該字串T之一後綴陣列與一樣本後綴陣列;圖5所示為根據一具體實施例中基於圖3的該FM索引序列性重建圖4的該樣本後綴陣列的虛擬碼之示例;圖6所示為根據一具體實施例中基於圖3的該FM索引平行性重建圖4的該樣本後綴陣列的虛擬碼之示例;圖7例示根據一具體實施例之一種用於重建該樣本後綴陣列的方法之流程圖;圖8例示根據另一具體實施例之一種用於重建該樣本後綴陣列的方法之流程圖;及圖9例示可以實施多種先前具體實施例之多種架構及/或功能之示例性系統。
圖1例示根據一具體實施例之一平行處理單元(PPU,“Parallel processing unit”)100。當此處提供一平行處理器做為PPU 100的一種示例時,必須特別注意到這種處理器僅係為了例示性目的而提出,可利用任何的處理器來補強及/或取代相同者。在一具體實施例中,PPU 100同時地在兩個或更多串流多重處理器(SM)150中執行複數執行緒。一執行緒(即一執行的執行緒)為在一特定SM 150內執行的一組指令之實例
(instantiation)。如以下配合圖2之更為詳細的說明,每一SM 150可包括但不限於一或多個處理核心、一或多個載入/儲存單元(LSU,“Load/store unit”)、一第1階(L1)快取、共用記憶體及類似者。
在一具體實施例中,PPU 100包括一輸入/輸出(I/O)單元105,
其在系統匯流排102之上與一中央處理單元(CPU)(未示出)傳送與接收通訊(即命令、資料等)。I/O單元105可以實作一周邊組件互連接快速(PCIe,“Peripheral Component Interconnect Express”)介面用於在一PCIe匯流排之上進行通訊。在其它具體實施例中,I/O單元105可以實作其它熟知型式的匯流排介面。
PPU 100亦包括一主機介面單元110,依照該等命令所指定
來解碼該等命令,並傳送該等命令到格柵(grid)管理單元115或PPU 100的其它單元(例如記憶體介面180)。主機介面單元110於PPU 100的多種邏輯單元之間導引通訊。
在一具體實施例中,被編碼成一命令串流的一程式由該
CPU寫入到一緩衝器。該緩衝器為記憶體中的一區域,例如記憶體104或系統記憶體,其可同時由CPU與PPU 100存取(即讀取/寫入)。該CPU將該命令串流寫入到該緩衝器,然後傳送指向到該命令串流的開頭的一指標到PPU 100。主機介面單元110提供格柵管理單元(GMU)115一或多個串流之指標。GMU 115選擇一或多個串流,並組織該等經選擇的串流做為等待中格柵的一集用地(pool)。該等待中格柵的集用地可包括尚未被選擇來執行之新的格柵,與已經被部份執行與已經被中止的格柵。
耦接於GMU 115與SM 150之間的一工作分配單元120管
理一啟用格柵的集用地,選擇與分派要由SM 150執行的啟用格柵。當一等待中格柵已經可以執行時(即不具有未解決的資料相關性),等待中的格柵由GMU 115轉移到該啟用的格柵集用地。當該啟用格柵的執行被一相關性(dependency)阻隔時,一啟用格柵被轉移到該等待中集用地。當完成一格柵
的執行時,該格柵由工作分配單元120自該啟用格柵集用地移除。除了自主機介面單元110與工作分配單元120接收格柵之外,GMU 110亦接收於一格柵執行期間由SM 150動態產生的格柵。這些動態產生的格柵結合了在該等待中格柵集用地中該等其它等待中的格柵。
在一具體實施例中,該CPU執行一驅動器核心,其實作一
應用程式化介面(API,“Application programming interface”)來使得正在該CPU上執行的一或多個應用可排程作業來在PPU 100上執行。一應用可包括有使得該驅動器核心產生一或多個格柵來執行的指令(即API呼叫)。在一具體實施例中,PPU 100實作一SIMD(單一指令、多重資料)架構,其中在一格柵中每一執行緒區塊(即包繞(wrap))係由在該執行緒區塊中不同的執行緒在一不同的資料集上同時地執行。該驅動器核心定義了包含k個相關的執行緒之執行緒區塊,使得在該相同執行緒區塊中的執行緒可以經由共享的記憶體交換資料。在一具體實施例中,一執行緒區塊包含32個相關的執行緒,而一格柵為執行該相同串流的一或多個執行緒區塊的一陣列,而該等不同的執行緒區塊可以經由共通(global)記憶體交換資料。
在一具體實施例中,PPU 100包含X SM 150(X)。例如,PPU
100可包括15個不同的SM 150。每一SM 150為多重執行緒化,並同時由一特定執行緒區塊執行複數執行緒(例如32個執行緒)。該等SM 150中每一者經由一交叉開關160(或其它型式的互連接網路)連接至一第二階(L2)快取165。L2快取165連接至一或多個記憶體介面180。記憶體介面180針對高速資料傳輸實作有16,32,64,128位元資料匯流排或類似者。在一具體實施例中,PPU 100包含U個記憶體介面180(U),其中每一記憶體介面180(U)連接至一相對應記憶體裝置104(U)。例如,PPU 100可連接到最多6個記憶體裝置104,例如圖形雙資料速率版本5同步動態隨機存取記憶體(GDDR5 SDRAM)。
在一具體實施例中,PPU 100採用一多階記憶體階層。記憶
體104位在耦合於PPU 100的SDRAM的晶片之外(off-chip)。來自記憶體104的資料可被提取,並儲存在L2快取165中,其係位在晶片上(on-chip),並在多個SM 150之間共享。在一具體實施例中,該等SM 150之每一者亦實作一L1快取。該L1快取為專屬於一特定SM 150的一私有記憶體。該等L1快取之每一者係耦合於共享的L2快取165。來自L2快取165的資料可被提取,並儲存在該等L1快取之每一者之,以在SM 150的該等功能性單元當中處理。
在一具體實施例中,PPU 100包含一圖形處理單元(GPU,
“Graphics processing unit”)。PPU 100接收指定用於處理圖形資料的著色器程式的命令。圖形資料可被定義成一組基元(primitive),例如點、線、三角形、四角形、三角形條及類似者。基本上,一基元包括有指定該基元的一個數目的頂點(例如在一模型空間座標系統中)以及關聯於該基元的每一頂點之屬性的資料。PPU 100可處理該等圖形基元來產生一像框緩衝器(即該顯示器之該等圖素之每一者的圖素資料)。該驅動器核心實作一圖形處理管線,例如由OpenGL API定義的該圖形處理管線。
一應用寫入一場景的模型資料(即頂點與屬性的集合)到記憶體。該模型資料定義了可在一顯示器上看到的該等物件之每一者。然後該應用發出一API呼叫到該驅動器核心來要求該模型資料被顯像與顯示。該驅動器核心讀取該模型資料並寫入命令到該緩衝器來執行一或多項作業以處理該模型資料。該等命令可以編碼不同的著色器(shader)程式,其中包括一頂點著色器、殼體著色器、幾何著色器、圖素著色器等中一或多者。例如,GMU 115可以設置一或多個SM 150來執行一頂點著色器程式,以處理由該模型資料所定義的若干頂點。在一具體實施例中,GMU 115可設置不同的SM 150來同時執行不同的著色器程式。例如,一SM 150的第一子集合可執行一頂點著色器程式,而一SM 150的第二子集合可執行一圖素著色器程式。SM 150的第一子集合處理頂點資料來產生經處理的頂點資料,
並將該經處理的頂點資料寫入至L2快取165及/或記憶體104。在該經處理的頂點資料被掃描場化(即由三維資料轉換成螢幕空間中的二維資料)以產生片段資料之後,SM 150的第二子集合執行一圖素著色器來產生經處理的片段資料,然後結合於其它經處理的片段資料並寫入到記憶體104中的該像框緩衝器。該頂點著色器程式與圖素著色器程式可同時執行,以管線化的方式處理來自相同場景的不同資料,直到該場景的所有模型資料皆已經被顯像到該像框緩衝器。然後,該像框緩衝器的該等內容被傳送到一顯示控制器來在一顯示裝置上做顯示。
PPU 100可被包括在一桌上型電腦、膝上型電腦、平板電腦、
智慧型手機(例如無線掌上型裝置)、個人數位助理(PDA)、數位相機、掌上型電子裝置及類似者當中。在一具體實施例中,PPU 100被實施在一單一半導體基板上。在另一具體實施例中,PPU 100連同一或多個其它邏輯單元被包括在一晶片上系統(SoC,“System-on-a-chip”)上,例如一精簡指令集電腦(RISC,“Reduced instruction set computer”)CPU、一記憶體管理單元(MMU)、一數位到類比轉換器(DAC,“Digital-to-analog converter”)、及類似者。
在一具體實施例中,PPU 100可被包括在一繪圖卡上,其中
包括一或多個記憶體裝置104,例如GDDR5 SDRAM。該繪圖卡可連接於在一桌上型電腦的包含例如一北橋晶片組與一南橋晶片組之一主機板上的一PCIe插槽。在又另一具體實施例中,PPU 100可為一包括在該主機板的該晶片組(即北橋)中的一整合式圖形處理單元(iGPU)。
圖2例示根據一具體實施例之圖1的串流多重處理器150。
如圖2所示,SM 150包括一指令快取205、一或多個排程器單元210、一暫存器檔案220、一或多個處理核心250、一或多個雙精度單元(DPU,“Double precision unit”)251、一或多個特殊功能單元(SFU,“Special function unit”)252、一或多個載入/儲存單元(LSU)253、一互連接網路280、一共享記憶體/L1快取270、與一或多個紋理單元290。
如上所述,工作分配單元120分派啟動(active)的格柵來在
PPU 100的一或多個SM 150上執行。排程器單元210接收來自工作分配單元120的該等格柵,並管理每一啟動格柵的一或多個執行緒區塊之指令排程。排程器單元210在平行執行緒的群組中排程執行緒來執行,其中每一群組稱之為一包繞。在一具體實施例中,每一包繞包括32個執行緒。排程器單元210可管理複數個不同執行緒區塊,配置該等執行緒區塊給包繞來執行,然後於每一時脈循環期間排程來自在該等多種功能性單元(即核心250、DPU 251、SFU 252與LSU 253)上該等複數個不同包繞的指令。
在一具體實施例中,每一排程器單元210包括一或多個指令分派單元215。每一分派單元215傳送指令到該等功能性單元中一或多者。在圖2所示的該具體實施例中,排程器單元210包括兩個分派單元215,其使得來自相同包繞的兩個不同指令在每一時脈循環期間被分派。在其它具體實施例中,每一排程器單元210可包括一單一分派單元215或額外的分派單元215。
每一SM 150包括一暫存器檔案220,其提供一組暫存器用於SM 150的該等功能性單元。在一具體實施例中,暫存器檔案220被分開在每一個該等功能性單元之間,使得每一功能性單元被配置暫存器檔案220的一專屬的部份。在另一具體實施例中,暫存器檔案220被分開在正由SM 150執行中的該等不同包繞之間。暫存器檔案220提供連接於該等功能性單元的該等資料路徑之運算元的暫時性儲存。
每一SM 150包含L個處理核心250。在一具體實施例中,SM 150包括大量的不同處理核心250(例如192等)。每一核心250為一完全管線化單一精度處理單元,其中包括一浮點算術邏輯單元與一整數算術邏輯單元。在一具體實施例中,該等浮點算術邏輯單元針對浮點算數實作IEEE 754-2008標準。每一SM 150亦包含M個DPU 251,其可實作雙精度浮點算術,N個SFU 252,其執行特殊功能(例如複製長方形、圖素結合運算等
類似者)、及P個LSU 253,其實作共享的記憶體/L1快取270與暫存器檔案220之間的載入與儲存作業。在一具體實施例中,SM 150包括64個DPU 251、32個SFU 252、與32個LSU 253。
每一SM 150包括一互連接網路280,其連接該等功能性單
元之每一者到暫存器檔案220與共享的記憶體/L1快取270。在一具體實施例中,互連接網路280為一交叉開關,其可連接該等功能性單元之任何一者到暫存器檔案220中該等暫存器之任何一者或是在共享的記憶體/L1快取270中該等記憶體位置。
在一具體實施例中,SM 150被採用在一GPU之內。在此實
施例中,SM 150包含J個紋理單元290。紋理單元290被設置來由記憶體104載入紋理地圖(即一紋理資料的2D陣列),並取樣該等紋理地圖來產生在著色器程式中使用的經取樣的紋理值。紋理單元290實作紋理作業,例如使用mip地圖(即變化細節層級的紋理地圖)的抑制雜訊作業。在一具體實施例中,SM 150包括16個紋理單元290。
上述的PPU 100可執行遠比習用的CPU要快得多的高度平
行運算。平行運算對於圖形處理、資料壓縮、生物辨識、串流處理演算法等類似者皆有好處。
現在將進行關於多種選擇性架構及特徵來提出更多例示性
資訊,藉此前述的架構可根據使用者的需要來實作。必須特別注意到以下的資訊係為了例示性目的而提出,且不應以任何方式視為其限制。任何以下的特徵可以視需要加入或排除所述的其它特徵。
圖3例示根據一具體實施例中一字串T 305的一FM索引300。一FM索引(即微小空間中全文字索引,“Full-text index in Minute space)為基於該字串的Burrows-Wheeler轉換(BWT)之一壓縮的全文字次字串索引。如圖3所示,FM索引300包括該字串T* 310的一BWT、一向量L2[ai]320、及一出現表Occ[c,i]330。
針對一字串T 305,BWT字串T* 310包含字串T 305的該
等後綴之一經詞典編纂排序(lexicographically sorted)的排列。例如,如圖3所示,字串T 305提供為「THEPATENTOFFICE$」,其中該特殊字元「$」代表一EOF(檔案結束(end of file))字元。相對應的BWT字串T* 310提供為「EPICTHOFTFETEA$N」。BWT字串T* 310可藉由產生一表格來產生,其中該表格的每一列為字串T 305的旋轉。然後該表格的該等列以降低的詞典編纂順序做排序。換言之,列[i]少於列[i+1]。在該經排序的表格之最後一行中該等字元包含BWT字串T* 310。
針對包含該組字元{a0,a1,...,ab}而具有一字母A的一字串T
305,向量L2[ai]320指明在字串T 305中具有小於字元ai的數值之所有字元的加總頻率。例如,如圖3所示,字串T 305具有包括該組字元{‘A’,‘C’,‘E’,‘F’,‘H’,‘I’,‘N’,‘O’,‘P’,‘T’}的一字母A(該特殊字元「$」被省略)。針對字串T 305的此字母A,圖3顯示L2[0]等於零、L2[1]等於一、L2[2]等於二,依此類推。換言之,指明在字串T 305中具有小於‘A’(即A[0])之數值的字元的頻率為零,字串T 305中具有小於‘C’(即A[1])之數值的字元的頻率為一(即有一個‘A’字元),字串T 305中具有小於‘E’(即A[2])之數值的字元的頻率為二(即有一個‘A’字元與一個‘C’字元),依此類推。
針對包含該組字元{a0,a1,...,ab}而具有字母A的一字串T
305,出現表格Occ[c,i]330定義了一二維(2D)陣列,以指明在BWT次字串T*[0,i]的該次字串中該字元c的出現次數。換言之,針對在字母A中的每一字元c,該列Occ[c,i]為一向量,代表在BWT字串T* 310的BWT次字串T*[0,i]中字元c的出現次數。如圖3所示,出現表格Occ[c,i]330包括16行與10列,分別對應於BWT字串T* 310的16字元長度,以及包含BWT字串T* 310的10個不同字元。出現表格Occ[c,i]330的第一列對應於字元‘A’(即A[0],並顯示{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1}的數值,其指明BWT字串T* 310的第14個字元(即T*[13])為‘A’。
在一具體實施例中,FM索引300經過壓縮。例如,BWT
字串T* 310、向量L2[ai]320與出現表格Occ[c,i]330根據一壓縮方式被編碼,例如運行長度編碼或Huffman編碼。在一具體實施例中,Occ[c,i]330被編碼成一紋理地圖,其可使用本技術專業人士所熟知的技術進行壓縮。
在這些具體實施例中,BWT字串T* 310、向量L2[ai]320與出現表格Occ[c,i]330被至少部份解壓縮來由FM索引300讀取一數值。
圖4例示根據一具體實施例中圖3的字串T 305之一後綴陣
列400與一樣本後綴陣列410。後綴陣列(SA,“Suffix array”)400為對應於字串T 305的該等後綴之索引的一向量。例如,如圖4所示,SA[0]401等於15,其對應於以該特殊字元「$」開始的該後綴之位置,其為詞典編纂上在字串T 305中最小數值的字元。同樣地,SA[1]402等於4,其對應於以該字元‘A’開始的該後綴之位置(即「ATENTOFFICE$」),SA[2]403等於13,其對應於以該字元‘C’開始的該後綴之位置(即「CE$」),依此類推。後綴陣列400將類似的後綴群組在一起,以簡單地辨識出在字串T 305的文字當中重複的次字串。
亦如圖4中顯示為對應於完整後綴陣列400的一子集合的樣
本後綴陣列(SSA,“Sampled suffix array”)410。在一具體實施例中,樣本後綴陣列410包含後綴陣列400中每一個第K個項目。換言之,SSA[m]等於SA[m*K]。例如,如圖4所示,SSA[0]411等於15,其對應於以該特殊字元‘$’開始的該後綴之位置,SSA[1]412等於14,其對應於以該字元‘E’開始的該等後綴之一的位置,SSA[2]413等於10,其對應於以該字元‘F’開始的該後綴之位置,依此類推。
圖5所示為根據一具體實施例中基於圖3的該FM索引300
序列性重建圖4的樣本後綴陣列410的虛擬碼500之示例。請注意到,樣本後綴陣列410可由BWT字串T* 310、向量L2[ai]320與出現表格Occ[c,i]330進行重建。如虛擬碼500所示,一第一變數isa 501被初始化為零,而
一第二變數sa 502被初始化成等於在字串T 305中的字元數目,不包括該特殊字元(例如15)。
啟始一for迴圈(for loop)來針對在字串T 305中每一字元執
行一次(例如15次遞迴)。在該for迴圈的每一次遞迴期間,isa 501變數被檢查來決定isa 501的數值是否為K的一整數倍數(即「isa% K==0」),其中K反應出SSA 410的取樣頻率。如果isa 501的數值為K的一整數倍數,則SSA[isa/K]的數值被設定等於變數sa 502的數值。換言之,當isa 501的數值為K的一整數倍數,則sa 502的數值反應出儲存在SSA 410中該等索引中的一者。但是,如果isa 501的數值並非K的一整數倍數,則sa 502的數值不會儲存在SSA 410中。在isa 501變數被檢查之後,sa 502的數值減一(即「--sa」),而isa 501的數值被設定等於isa 501之一定率函數505的輸出。
定率函數505將向量L2[ai]的數值加到出現表格Occ[a i ,isa]
的該數值,其中a i 為在BWT字串T* 310的第isa個位置(即T*[isa])處的該字元。isa 501的定率函數505將在BWT字串T* 310中每一索引對應到在BWT字串T* 310中一相對應索引,其係關聯於在字串T 305中正在前的字元。
該for迴圈遞迴成將sa 502減少到零,每當isa 501的數值
為K的一整數倍數時加入一索引到SSA 410。針對特別長的文字字串,該序列性重建演算法在當該函數採用O(n)時間時可能耗費很長的時間,因為變數isa 501的數值係根據前一次遞迴期間變數isa 501的數值。因此針對長文字字串,用於重建SSA 410的一平行演算法能夠降低處理時間。
圖6所示為根據一具體實施例中基於圖3的該FM索引300
平行重建圖4的樣本後綴陣列410的虛擬碼600之示例。熟此技藝者將可瞭解到,虛擬碼500所例示的該序列性演算法為一種一般化的串列排序運算,其中在該串列中該等節點為由變數isa 501所定義的位置。熟此技藝者
亦可瞭解到僅有為K的一整數倍數之isa 501的數值與重建SSA 410有關,其中自變數sa 502減去的該數值等於在isa 501的數值為K的整數倍數時的遞迴之間所耗用的遞迴(即步驟)次數。換言之,由該序列演算法所產生的該串列資料結構可被分成較小的區塊,其開始於該串列結構中為K的整數倍數之索引處開始。該等區塊的每一者可被平行地處理來決定K的連續整數倍數之間步驟的數目。
如圖6所示,該平行重建演算法被分成一第一階段601與一
第二階段602。在第一階段601中,一區塊值611針對每一個索引m 612做計算。索引m 612採用範圍由零到SSA 410的長度中每一個整數值(即m在[0,n/K]中)。第一階段601初始化一do-while迴圈620,其執行一個數目的步驟613(即遞迴),而變數isa 501並非K的一整數倍數(即遞迴在當變數isa 501為K的一整數倍數時即停止)。索引m 612的區塊值611被設定等於直到變數isa 501被設定等於K的一整數倍數時在do-while迴圈620中所完成之步驟613的數目。一區塊串列614被設定等於變數isa 501除以K的數值(即關聯於isa 501的相對應數值之整數倍數)。第一階段601係平行地(即同時間,至少部份地)針對索引m 612的至少兩個數值來執行。
將可瞭解到第一階段601決定一特定索引m 612與isa 501
的下一數值為K的一整數倍數之間的步驟613的數目。區塊值611可針對每一索引m 612為獨立地計算,因此第一階段601可利用平行運算架構的優點來加速處理。在一具體實施例中,第一階段601可實施在於圖1的PPU 100上執行的一著色器程式中。一應用可以定義一著色器程式來處理一複數索引值(例如索引m 612)。該驅動器核心傳送一工作到PPU 100來設置一或多個SM 150來同時間針對索引m 612的不同數值執行該著色器程式。
第二階段602為一非常輕量級的序列迴圈,其使用經計算的
區塊值611與區塊鏈結614來建構SSA 410。除了遞迴通過變數sa 502的每一數值之外,第二階段602針對每一索引m 612僅執行一次遞迴。將可瞭
解到K較大時,第二階段602將比在虛擬碼500中例示的該序列性重建演算法可明顯地減少第二階段602的遞迴次數。
在另一具體實施例中,第二階段602亦可藉由應用任何習知
的串列排序技術來平行化,例如Wyllie演算法,其揭示於康乃爾大學資訊工程學系Wyllie,J.C.(1979)所提出的博士論文「平行運算的複雜度」(“The Complexity of Parallel Computation”),或是Anderson-Miller演算法,其揭示於Anderson,Richard J.;Miller,Gary L.(1990)「用於串列排序的簡單隨機化平行演算法」(“A simple randomized parallel algorithm for list-ranking”),見於Information Processing Letters 33,269-273頁,doi:10.1016/0020-0190(90)90196-5,其每一者在此完整引述加入做為本文的參照。
虛擬碼600所例示的該平行重建演算法可被延伸到SSA 410
的另一種表示。在一具體實施例中,SSA 410可以編碼變數isa 501的該等數值,而非變數sa 502的該等數值。
圖7例示根據一具體實施例之一種用於重建SSA 410的方法
700之流程圖。在步驟702,PPU 100針對SSA 410的每一索引計算對應於索引m 612的一區塊值611。區塊值611在一平行重建演算法的一第一階段601中做計算。在步驟704,PPU 100基於步驟702中計算的區塊值611來產生SSA 410。在一具體實施例中,SSA 410藉由初始化一序列迴圈,並指定每一區塊值給SSA 410的一索引來產生。在另一具體實施例中,SSA 410可使用熟知的平行串列排序演算法來產生。
圖8例示根據另一具體實施例之一種用於重建樣本後綴陣
列410的方法800之流程圖。在步驟802,PPU 100執行一著色器程式來計算對應於SSA 410的索引之區塊值611。該著色器程式進行該平行重建演算法的第一階段601。至少一個SM 150執行該著色器程式。在步驟804,PPU 100產生關聯於該著色器程式的一執行緒區塊。該執行緒區塊的每一執行緒
對應於SSA 410的一不同索引m 612。在步驟806,PPU 100執行該執行緒區塊來計算對應於每一執行緒的索引m 612之一區塊值611。將可瞭解到當SSA 410的索引數目大於在一執行緒區塊中執行緒的最大數目時,可產生並執行多個執行緒區塊。
在步驟808,PPU 100執行一第二著色器程式來產生SSA 410。
該第二著色器程式進行該平行重建演算法的第二階段602。至少一個SM 150執行該第二著色器程式。在步驟810,PPU 100產生關聯於該第二著色器程式的一第二執行緒區塊。該第二執行緒區塊的每一執行緒對應於SSA 410的至少一部份。在一具體實施例中,該第二執行緒區塊包含將第二階段602實作成一序列迴圈的一單一執行緒。在另一具體實施例中,該第二執行緒區塊包含兩個或更多的執行緒,其可使用一熟知的平行串列排序演算法來實作第二階段602。在步驟812,PPU 100執行該第二執行緒區塊來重建SSA 410。再次地,將可瞭解到當SSA 410的該等部份之數目大於在一執行緒區塊中執行緒的最大數目時,即可產生並執行多個執行緒區塊。
圖9例示為可以實施多種先前具體實施例之多種架構及/或
功能之示例性系統900。如所示,一系統900被提供成包括至少一連接至一通訊匯流排902的中央處理器901。通訊匯流排902可使用任何適當的協定來實作,例如PCI(Peripheral Component Interconnect)、PCI-Express、AGP(加速繪圖埠,“Accelerated Graphics Port”)、HyperTransport、或任何其它匯流排或點對點通訊協定。系統900亦包括一主記憶體904。控制邏輯(軟體)與資料被儲存在主記憶體904中,其型式可為隨機存取記憶體(RAM)。特別是FM索引300可儲存在主記憶體904中。選擇性地,本系統900可被實施成執行圖7的方法700或圖8的方法800。
系統900亦包括輸入裝置912、一圖形處理器906與一顯示
器908,即一習用的CRT(陰極射線管)、LCD(液晶顯示器)、LED(發光二極體)、電漿顯示器等。使用者輸入可自輸入裝置912接收,例如鍵盤、滑鼠、
觸控板、麥克風等。在一具體實施例中,圖形處理器906可包括一複數個著色器模組,一掃描場化模組等。每個前述模組甚至可位在一單一半導體平台上來形成一圖形處理單元(GPU)。
在本說明中,一單一半導體平台可代表一專用單一半導體為
主的積體電路或晶片。必須注意到該用語「單一半導體平台」亦可代表多晶片模組,其具有可模擬晶片上作業之增加的連接器,並在利用一習用中央處理單元(CPU)及匯流排實施當中進行實質的改善。當然,多種模組亦可獨立放置或根據使用者的需要而置於多種半導體平台的組合中。
系統900亦可包括一次級儲存器910。次級儲存器910包括
例如一硬碟機及/或一可移除儲存器,其可代表一軟碟機、一磁帶機、一光碟機、數位多功能碟(DVD)機、記錄裝置、通用序列匯流排(USB)快閃記憶體。可移除式儲存器以一熟知的方式讀取及/或寫入一可移除式儲存單元。
電腦程式或電腦控制邏輯演算法可以儲存在主記憶體904
及/或次級儲存器910中。這些電腦程式在當被執行時可致能系統900來執行多種功能。記憶體904,儲存器910及/或任何其它儲存器皆為電腦可讀取媒體之可能示例。
在一具體實施例中,多種先前圖面之架構及/或功能可實作
成中央處理器901、圖形處理器906、能夠同時具有中央處理器901及圖形處理器906之能力中至少一部份的積體電路(未示出),一晶片組(即設計成用於執行相關功能之一個單元來工作及銷售的一積體電路群組),及/或為了該目的之任何其它積體電路的內容當中。
再者,多種先前圖面之架構及/或功能可實作成一通用電腦
系統、電路板系統、專屬於娛樂目的之遊戲主機系統,特定應用系統及/或任何其它想要系統之內容中。例如,系統900可採用的型式有桌上型電腦、膝上型電腦、伺服器、工作站、遊戲主機、嵌入式系統及/或任何其它類型的邏輯。另外,系統900可採取多種其它裝置的型式,其包括但不限於個
人數位助理(PDA)裝置、行動電話裝置、電視等。
另外,雖然未示出,系統900為了通訊的目的可耦合於一網路(例如電信網路、區域網路(LAN)、無線網路、廣域網路(WAN),像是網際網路、點對點網路、纜線網路等)。
當多種具體實施例已在上述說明之後,應可瞭解到它們僅係藉由示例來呈現,而非具有限制性。因此,一較佳具體實施例之廣度及範圍並不限於任何上述的範例性具體實施例,但必須僅根據下列申請專利範圍及其同等者來定義。
Claims (20)
- 一種方法,該方法包含:針對一字串的一樣本後綴陣列的每一索引,基於在微小空間中一全文字索引(FM索引)來計算對應於該索引的一區塊值;及基於該等區塊值,重建對應於該字串的該樣本後綴陣列;其中計算該樣本後綴陣列之至少兩個相對應索引的至少兩個區塊值係平行地執行。
- 如申請專利範圍第1項之方法,其中該FM索引包含該字串的一Burrows-Wheeler轉換、一向量與一出現(occurrences)表格。
- 如申請專利範圍第2項之方法,其中該向量指明在該字串中包括的每一字元的頻率。
- 如申請專利範圍第3項之方法,其中該出現表格指明在該字串的Burrows-Wheeler轉換的每一次字串(substring)中一特定字元的出現次數。
- 如申請專利範圍第2項之方法,其中該計算至少兩個該等區塊值包含將儲存在該向量中的一數值加入到儲存在該出現表格中的一數值。
- 如申請專利範圍第5項之方法,其中該計算至少兩個該等區塊值包含存取該出現表格的一壓縮版本,並解壓縮該出現表格的至少一部份來產生儲存在該出現表格中的該數值。
- 如申請專利範圍第6項之方法,其中該出現表格經由Huffman編碼進行壓縮。
- 如申請專利範圍第2項之方法,其中該出現表格被儲存為一紋理地圖。
- 如申請專利範圍第8項之方法,其中該計算至少兩個該等區塊值包含經由在一平行處理單元中一紋理單元來取樣該紋理地圖。
- 如申請專利範圍第1項之方法,另包含:設置一平行處理單元來執行一著色器程式,用於該計算至少兩個該等區塊值;產生關聯於該著色器程式的一執行緒區塊,其中該執行緒區塊的每一執行緒對應於該樣本後綴陣列的一不同索引;及在該平行處理單元的至少一串流多重處理器上執行該執行緒區塊。
- 如申請專利範圍第10項之方法,另包含:設置該平行處理器單元來執行一第二著色器程式,用於重建對應於該字串的該樣本後綴陣列;產生關聯於該第二著色器程式的一第二執行緒區塊,其中該第二執行緒區塊的每一執行緒對應於該樣本後綴陣列中至少一部份;及在該平行處理單元的至少一串流多重處理器上執行該第二執行緒區塊。
- 如申請專利範圍第11項之方法,其中在該平行處理單元的兩個或更多的串流多重處理器上執行兩個或更多的執行緒區塊。
- 如申請專利範圍第1項之方法,其中該計算至少兩個該等區塊值包含初始化一do-while迴圈。
- 如申請專利範圍第13項之方法,其中該do-while迴圈遞迴地計算一變數isa的一新數值,而該變數isa的數值並非一常數K的一整數倍數,且其中該do-while迴圈計數該do-while迴圈的遞迴次數,而該變數isa的數值並非該常數K的一整數倍數。
- 如申請專利範圍第14項之方法,其中該變數isa的該新數值係經由該變數isa的一定率函數進行計算,且其中該定率函數係基於儲存在該FM索引中的一或多個數值。
- 一種非揮發性電腦可讀取儲存媒體,其儲存當由一處理器執行時,使得該處理器執行步驟之指令,其包括:針對一字串的一樣本後綴陣列的每一索引,基於在微小空間中一全文字索引(FM索引)來計算對應於該索引的一區塊值;及基於該等區塊值重建對應於該字串的該樣本後綴陣列;其中計算該樣本後綴陣列之至少兩個相對應索引的至少兩個區塊值係平行地執行。
- 如申請專利範圍第16項之非揮發性電腦可讀取儲存媒體,其中該FM索引包含該字串的一Burrows-Wheeler轉換、一向量與一出現表格。
- 如申請專利範圍第16項之非揮發性電腦可讀取儲存媒體,該等步驟另包含: 設置一平行處理單元來執行一著色器程式,用於該計算至少兩個該等區塊值;及在該平行處理單元的兩個或更多個串流多重處理器上執行一執行緒區塊,其中該執行緒區塊的每一執行緒對應於該樣本後綴陣列的一不同索引。
- 一種系統,該系統包含:一平行處理器;及一記憶體,其儲存指令來設置該平行處理單元以執行:針對一字串的一樣本後綴陣列的每一索引,基於在微小空間中一全文字索引(FM索引)來計算對應於該索引的一區塊值,及基於該等區塊值重建對應於該字串的該樣本後綴陣列;其中計算該樣本後綴陣列之至少兩個相對應索引的至少兩個區塊值係由該平行處理單元平行地執行。
- 如申請專利範圍第19項之系統,其中該平行處理單元為一圖形處理單元,其執行一著色器用於計算該等區塊值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/666,866 US20140123147A1 (en) | 2012-11-01 | 2012-11-01 | System, method, and computer program product for parallel reconstruction of a sampled suffix array |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201439965A true TW201439965A (zh) | 2014-10-16 |
Family
ID=50489971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102139653A TW201439965A (zh) | 2012-11-01 | 2013-10-31 | 用於樣本後綴陣列的平行重建之系統、方法、與電腦程式產品 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20140123147A1 (zh) |
CN (1) | CN103810228A (zh) |
DE (1) | DE102013218594A1 (zh) |
TW (1) | TW201439965A (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9823927B2 (en) * | 2012-11-30 | 2017-11-21 | Intel Corporation | Range selection for data parallel programming environments |
US9473296B2 (en) * | 2014-03-27 | 2016-10-18 | Intel Corporation | Instruction and logic for a simon block cipher |
CN104284189B (zh) * | 2014-10-23 | 2017-06-16 | 东南大学 | 一种改进的bwt数据压缩方法及其硬件实现系统 |
CN105653567A (zh) * | 2014-12-04 | 2016-06-08 | 南京理工大学常熟研究院有限公司 | 一种文本序列数据中快速查找特征字符串的方法 |
US10395408B1 (en) * | 2016-10-14 | 2019-08-27 | Gopro, Inc. | Systems and methods for rendering vector shapes |
CN108122189B (zh) * | 2016-11-29 | 2021-11-30 | 三星电子株式会社 | 硬件中的顶点属性压缩和解压缩 |
US10121276B2 (en) * | 2016-12-01 | 2018-11-06 | Nvidia Corporation | Infinite resolution textures |
CN107015868B (zh) * | 2017-04-11 | 2020-05-01 | 南京大学 | 一种通用后缀树的分布式并行构建方法 |
CN108804204A (zh) * | 2018-04-17 | 2018-11-13 | 佛山市顺德区中山大学研究院 | 多线程并行构造后缀数组的方法及系统 |
CN109375989B (zh) * | 2018-09-10 | 2022-04-08 | 中山大学 | 一种并行后缀排序方法及系统 |
US10872173B2 (en) * | 2018-09-26 | 2020-12-22 | Marvell Asia Pte, Ltd. | Secure low-latency chip-to-chip communication |
CN110852046B (zh) * | 2019-10-18 | 2021-11-05 | 中山大学 | 一种文本后缀索引的分块归纳排序方法及系统 |
WO2022016327A1 (zh) * | 2020-07-20 | 2022-01-27 | 中山大学 | 一种安全的后缀索引外包计算方法及装置 |
CN112957068B (zh) * | 2021-01-29 | 2023-07-11 | 青岛海信医疗设备股份有限公司 | 超声信号处理方法及终端设备 |
US11921559B2 (en) * | 2021-05-03 | 2024-03-05 | Groq, Inc. | Power grid distribution for tensor streaming processors |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2012272161B2 (en) * | 2011-06-21 | 2015-12-24 | Illumina Cambridge Limited | Methods and systems for data analysis |
-
2012
- 2012-11-01 US US13/666,866 patent/US20140123147A1/en not_active Abandoned
-
2013
- 2013-09-17 DE DE102013218594.4A patent/DE102013218594A1/de not_active Ceased
- 2013-10-31 CN CN201310533431.XA patent/CN103810228A/zh active Pending
- 2013-10-31 TW TW102139653A patent/TW201439965A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN103810228A (zh) | 2014-05-21 |
DE102013218594A1 (de) | 2014-05-08 |
US20140123147A1 (en) | 2014-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201439965A (zh) | 用於樣本後綴陣列的平行重建之系統、方法、與電腦程式產品 | |
US10726583B2 (en) | System and method of encoding and decoding feature maps and weights for a convolutional neural network | |
US10706608B2 (en) | Tree traversal with backtracking in constant time | |
US9946666B2 (en) | Coalescing texture access and load/store operations | |
US9224235B2 (en) | System, method, and computer program product for compression of a bounding volume hierarchy | |
TWI656481B (zh) | 關於序列平行化消耗的方法、電腦可讀取媒體和系統 | |
US10984049B2 (en) | Performing traversal stack compression | |
CN110262907B (zh) | 用于统一应用编程接口和模型的系统和方法 | |
US10331632B2 (en) | Bounding volume hierarchies through treelet restructuring | |
US9411715B2 (en) | System, method, and computer program product for optimizing the management of thread stack memory | |
JP2021149942A (ja) | 変位メッシュ圧縮のための装置及び方法 | |
TWI632524B (zh) | 以邊緣爲基礎之覆蓋遮罩壓縮技術 | |
KR101609079B1 (ko) | 그래픽 프로세싱 유닛에서의 명령 선별 | |
US10546411B2 (en) | Directed acyclic graph path enumeration with application in multilevel instancing | |
US9665958B2 (en) | System, method, and computer program product for redistributing a multi-sample processing workload between threads | |
US11379420B2 (en) | Decompression techniques for processing compressed data suitable for artificial neural networks | |
JP2021149941A (ja) | ダイナミック量子化グリッドを用いたモーションブラー | |
CN111445003A (zh) | 神经网络生成器 | |
JP2021149934A (ja) | 安定した短い遅延の並び替え操作を実行するための装置および方法 | |
US10089964B2 (en) | Graphics processor logic for encoding increasing or decreasing values | |
US10114755B2 (en) | System, method, and computer program product for warming a cache for a task launch | |
JP2021149943A (ja) | レイトラバーサルハードウェアにおいてボックスクエリを実行するための装置及び方法 | |
US20150145871A1 (en) | System, method, and computer program product to enable the yielding of threads in a graphics processing unit to transfer control to a host processor | |
US10026142B2 (en) | Supporting multi-level nesting of command buffers in graphics command streams at computing devices | |
CN111986279A (zh) | 有效访问存储器和避免不必要的计算的技术 |