FPGA 是實(shí)現綠色搜索技術(shù)的關(guān)鍵
如上所述采用查詢(xún)表架構和文檔流格式,實(shí)際的查詢(xún)和評分系統(圖 3)會(huì )非常直接。我們只需掃描輸入流以檢查報頭和腳注字即可。報頭字將文檔得分設為 0,而腳注字則收集并輸出文檔得分。對于文檔中的每四個(gè)配置文件詞,Bloom 過(guò)濾器首先丟棄否定詞結果,再從 SRAM 讀取四個(gè)配置文件詞。并行計算并添加(圖 4)每個(gè)詞的得分。實(shí)際上,四分之三的配置文件詞 ID 不會(huì )匹配于文檔詞 ID;只對第四個(gè)進(jìn)行實(shí)際計算。將文檔中所有詞的得分進(jìn)行累加,最后得分流在輸出到主機存儲器之前與限值進(jìn)行比較過(guò)濾。
主機—FPGA 接口將文檔流從存儲器緩沖器中傳輸至 FPGA,并將得分流返回至客戶(hù)端中。一旦從客戶(hù)端接收到配置文檔 ID 表,子進(jìn)程即從主進(jìn)程中分叉出來(lái),以構建實(shí)際的配置文件,將其載入 SRAM 并在 FPGA 上運行算法。每個(gè)子進(jìn)程都會(huì )產(chǎn)生一個(gè)獨立的輸出線(xiàn)程,以對從 FPGA 獲得的得分進(jìn)行緩沖,并通過(guò) TCP/IP 將這些得分傳輸到客戶(hù)端,從而使用網(wǎng)絡(luò )對得分流進(jìn)行多路復用。若沒(méi)有該線(xiàn)程,網(wǎng)絡(luò )吞吐量的波動(dòng)就會(huì )降低系統性能。這種主機接口架構的主要優(yōu)勢在于,它具有很高的可擴展性,能輕松滿(mǎn)足大量 FPGA 的需求。
大幅度提速
為了評估 FPGA 加速型過(guò)濾應用的性能,我們進(jìn)行了一系列實(shí)驗,將基于 FPGA 的實(shí)施方案與采用 C++ 編寫(xiě)的運行于 Altix 之上的優(yōu)化參考實(shí)施方案進(jìn)行了比較。在比較過(guò)程中,我們使用了三個(gè) IR 測試集合(參見(jiàn)表 1):一個(gè)是文本檢索會(huì )議 (TREC) 提供的基準參考集合 TREC Aquaint,還有兩個(gè)分別是美國專(zhuān)利與商標署 (USPTO) 和歐洲專(zhuān)利署 (EPO) 提供的專(zhuān)利集合。我們選擇上述測試集合來(lái)評估不同文檔長(cháng)度和大小對過(guò)濾時(shí)間的影響。
集合 | 文檔數 | 平均文檔長(cháng)度 | 平均獨有名詞 |
Aquaint | 1,033,461 | 437 | 169 |
USPTO | 1,406,200 | 1,718 | 353 |
EPO | 989,507 | 3,863 | 705 |
表 1——集合統計
為了仿真眾多不同的過(guò)濾器,我們通過(guò)選擇隨機文檔并用標題作為請求,隨后再選擇請求服務(wù)器返回的固定數量的文檔作為偽相關(guān)文檔,來(lái)為每個(gè)測試集合構建配置文件。我們接下來(lái)使用返回的文檔構建相關(guān)性模型,該模型定義了文檔集合中每個(gè)文檔應當匹配(就好像從網(wǎng)絡(luò )進(jìn)行流處理一樣)的配置文件。配置文件中的文檔數量從 1 到 50 不等,可確定增加配置文件的大?。ㄔ~數和文檔數)會(huì )對性能有何影響。我們將上述進(jìn)程重復 30 次,并計算平均處理時(shí)間。
我們在表 2 和圖 5 中對有關(guān)結果進(jìn)行了總結。從表中可以清晰地看出,FPGA 實(shí)施方案在速度方面通常比標準實(shí)施方案快一個(gè)數量級。從圖中可以看出,配置文件大?。ㄐ枰ヅ涞脑~數)增加后,標準實(shí)施方案變得越來(lái)越慢,而 FPGA 實(shí)施方案的速度相對保持不變。這是因為 FPGA 實(shí)施方案支持配置文件評分的流分線(xiàn)操作,這樣無(wú)論配置文件大小如何,時(shí)延基本保持不變。
這些結果清晰表明,FPGA 對加速 IR 任務(wù)有著(zhù)巨大的潛力。FPGA 的提速幅度已然相當大(特別對大型配置文件而言尤其明顯),而且仍有進(jìn)一步提高的空間。通過(guò)仿真,我們確認 FPGA 算法給一個(gè)文檔詞評分需要兩個(gè)時(shí)鐘周期。制約因素為每周期 128 位的 SRAM 存取速度,這需要兩個(gè)周期才能讀取四個(gè)配置文件詞。如果時(shí)鐘速度為 100 MHz,則意味著(zhù) FPGA 能在 15 秒之內完成整個(gè) EPO 文檔集合的評分。當前應用在四個(gè) FPGA 上需要約 8.5 秒,因此原則上我們至少可以讓性能再翻一番。
差異的原因在于 I/O 流 (streaming I/O):通過(guò)主機操作系統設備驅動(dòng)器可將文檔流從用戶(hù)存儲器空間傳輸至 NUMAlink,這需要直接存儲器存取 (DMA) 傳輸。驅動(dòng)器可傳輸流的緩存模塊。目前,對所傳輸模塊的大小來(lái)說(shuō),這一傳輸并不是以最優(yōu)的方式實(shí)施的,進(jìn)而導致無(wú)法達到最高吞吐量。此外,用獨立的線(xiàn)程進(jìn)行傳輸排序也能避免傳輸時(shí)延。
遇到的問(wèn)題和吸取的經(jīng)驗
這一項目的意義不僅在于它展示了 FPGA 作為信息檢索任務(wù)加速器的優(yōu)勢,而且還為我們提供了 FPGA 加速系統軟硬件要求的重要信息。
至主機系統的 I/O 是確保性能的關(guān)鍵:NUMA 存儲器與 FPGA 之間的 DMA 機制必須獲得 Mitrionics SDK 和 SGI RASClib 的支持。在此前的項目中,我們必須先將數據傳輸到電路板上的 SRAM 中才能進(jìn)行處理,但這會(huì )嚴重影響性能,因為數據的載入和結果的卸載會(huì )造成非常大的開(kāi)銷(xiāo)。此外,我們也清晰地認識到,IR 任務(wù)尤其需要大量的片上和板上存儲器,才能實(shí)現效率最大化。
此外,為了充分使用 FPGA,未來(lái)的平臺必須具備兩個(gè)重要特性,一是必需能在 FPGA 之間直接傳輸數據,二是必需能夠關(guān)閉主機處理器(或用一個(gè)主機處理器控制多個(gè) FPGA)。關(guān)閉主機處理器的功能尤其重要:在 Altix 平臺上,即便 Itanium 處理器完全處于空閑狀態(tài)也不能關(guān)閉。但是,空閑的 Itanium 處理器的功耗也高達工作狀態(tài)下所需功耗的 90%。因此,盡管 FPGA 加速的節能效果明顯,但我們目前的系統即便在加速器運行過(guò)程中主機存儲器空閑狀態(tài)下,其總體節能作用仍然有限。
開(kāi)發(fā) FPGA 加速型系統的另一重要領(lǐng)域就是軟件。我們的經(jīng)驗明確反映出,主要的復雜問(wèn)題在于FPGA 和主機系統之間的接口連接:Mitrion-C 中的實(shí)際 FPGA 應用開(kāi)發(fā)效率非常高;采用 Lemur 工具套件構建查詢(xún)和服務(wù)文檔的框架也相對容易開(kāi)發(fā)。但是,采用 RASClib 開(kāi)發(fā)連接主機應用和FPGA 接口的代碼非常復雜,而且由于并發(fā)性問(wèn)題,還非常難以調試。因而,接口代碼的開(kāi)發(fā)占據了絕大部分的開(kāi)發(fā)時(shí)間。
集合 | 配置文件文檔數 | 處理器獨有名詞數 | CPU(秒) | FPGA(秒) | 增益 |
Aquaint | 1 | 254 | 21.3 | 2.6 | 8.3x |
10 | 1,444 | 27.4 | 2.6 | 10.5x | |
50 | 4,713 | 34.5 | 2.6 | 13.2x | |
USPTO | 1 | 28 | 64.0 | 7.2 | 8.9x |
10 | 148 | 68.3 | 7.1 | 9.6x | |
50 | 615 | 76.9 | 7.5 | 10.3x | |
EPO | 1 | 1,327 | 107.3 | 8.4 | 12.7x |
10 | 4935 | 153.3 | 8.1 | 19.0x | |
50 | 12,314 | 177.1 | 8.5 | 20.8x |
表 2 —— 性能統計數據
圖 5 —— 時(shí)間(秒)和配置文件中文檔數量的對比圖
FPGA 高級編程的最后一個(gè)問(wèn)題是編譯速度。習慣于 C++ 或 Java 等語(yǔ)言的開(kāi)發(fā)人員認為即便應用非常復雜,構建時(shí)間也應該比較短。除了最基本的設計之外,當前的 FPGA 工具執行綜合以及放置路由工作幾乎都需要一整天的時(shí)間。非常長(cháng)的構建時(shí)間會(huì )嚴重影響工作效率,因而時(shí)間應當縮短到一般性軟件構建時(shí)間,這樣才能使 FPGA 加速更具吸引力。
定制硬件平臺
我們用這個(gè)項目探討了 FPGA 加速的可能性,并展示了 FPGA 作為數據中心綠色環(huán)保技術(shù)的巨大潛力。我們希望進(jìn)一步擴展這項研究,調查文檔處理所需的全系列工作任務(wù),如語(yǔ)法分析、詞干、索引、搜索以及過(guò)濾等。我們清楚地認識到,現有系統在節能潛力方面很有限,我們希望研究能以業(yè)界最高效率專(zhuān)門(mén)執行信息檢索任務(wù)的可定制硬件平臺。這樣,我們就能顯著(zhù)加速算法的執行,同時(shí)大幅度降低能耗,從而開(kāi)發(fā)出更加環(huán)保、速度更快的數據中心。
評論