新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > FPGA 是實現綠色搜索技術的關鍵

        FPGA 是實現綠色搜索技術的關鍵

        作者: 時間:2010-10-09 來源:網絡 收藏

        如上所述采用查詢表架構和文檔流格式,實際的查詢和評分系統(圖 3)會非常直接。我們只需掃描輸入流以檢查報頭和腳注字即可。報頭字將文檔得分設為 0,而腳注字則收集并輸出文檔得分。對于文檔中的每四個配置文件詞,Bloom 過濾器首先丟棄否定詞結果,再從 SRAM 讀取四個配置文件詞。并行計算并添加(圖 4)每個詞的得分。實際上,四分之三的配置文件詞 ID 不會匹配于文檔詞 ID;只對第四個進行實際計算。將文檔中所有詞的得分進行累加,最后得分流在輸出到主機存儲器之前與限值進行比較過濾。

        主機— 接口將文檔流從存儲器緩沖器中傳輸至 ,并將得分流返回至客戶端中。一旦從客戶端接收到配置文檔 ID 表,子進程即從主進程中分叉出來,以構建實際的配置文件,將其載入 SRAM 并在 上運行算法。每個子進程都會產生一個獨立的輸出線程,以對從 FPGA 獲得的得分進行緩沖,并通過 TCP/IP 將這些得分傳輸到客戶端,從而使用網絡對得分流進行多路復用。若沒有該線程,網絡吞吐量的波動就會降低系統性能。這種主機接口架構的主要優勢在于,它具有很高的可擴展性,能輕松滿足大量 FPGA 的需求。

        大幅度提速

        為了評估 FPGA 加速型過濾應用的性能,我們進行了一系列實驗,將基于 FPGA 的實施方案與采用 C++ 編寫的運行于 Altix 之上的優化參考實施方案進行了比較。在比較過程中,我們使用了三個 IR 測試集合(參見表 1):一個是文本檢索會議 (TREC) 提供的基準參考集合 TREC Aquaint,還有兩個分別是美國專利與商標署 (USPTO) 和歐洲專利署 (EPO) 提供的專利集合。我們選擇上述測試集合來評估不同文檔長度和大小對過濾時間的影響。

        集合

        文檔數

        平均文檔長度

        平均獨有名詞

        Aquaint

        1,033,461

        437

        169

        USPTO

        1,406,200

        1,718

        353

        EPO

        989,507

        3,863

        705

        表 1——集合統計

        為了仿真眾多不同的過濾器,我們通過選擇隨機文檔并用標題作為請求,隨后再選擇請求服務器返回的固定數量的文檔作為偽相關文檔,來為每個測試集合構建配置文件。我們接下來使用返回的文檔構建相關性模型,該模型定義了文檔集合中每個文檔應當匹配(就好像從網絡進行流處理一樣)的配置文件。配置文件中的文檔數量從 1 到 50 不等,可確定增加配置文件的大小(詞數和文檔數)會對性能有何影響。我們將上述進程重復 30 次,并計算平均處理時間。

        我們在表 2 和圖 5 中對有關結果進行了總結。從表中可以清晰地看出,FPGA 實施方案在速度方面通常比標準實施方案快一個數量級。從圖中可以看出,配置文件大小(需要匹配的詞數)增加后,標準實施方案變得越來越慢,而 FPGA 實施方案的速度相對保持不變。這是因為 FPGA 實施方案支持配置文件評分的流分線操作,這樣無論配置文件大小如何,時延基本保持不變。

        這些結果清晰表明,FPGA 對加速 IR 任務有著巨大的潛力。FPGA 的提速幅度已然相當大(特別對大型配置文件而言尤其明顯),而且仍有進一步提高的空間。通過仿真,我們確認 FPGA 算法給一個文檔詞評分需要兩個時鐘周期。制約因素為每周期 128 位的 SRAM 存取速度,這需要兩個周期才能讀取四個配置文件詞。如果時鐘速度為 100 MHz,則意味著 FPGA 能在 15 秒之內完成整個 EPO 文檔集合的評分。當前應用在四個 FPGA 上需要約 8.5 秒,因此原則上我們至少可以讓性能再翻一番。

        差異的原因在于 I/O 流 (streaming I/O):通過主機操作系統設備驅動器可將文檔流從用戶存儲器空間傳輸至 NUMAlink,這需要直接存儲器存取 (DMA) 傳輸。驅動器可傳輸流的緩存模塊。目前,對所傳輸模塊的大小來說,這一傳輸并不是以最優的方式實施的,進而導致無法達到最高吞吐量。此外,用獨立的線程進行傳輸排序也能避免傳輸時延。

        遇到的問題和吸取的經驗

        這一項目的意義不僅在于它展示了 FPGA 作為信息檢索任務加速器的優勢,而且還為我們提供了 FPGA 加速系統軟硬件要求的重要信息。

        至主機系統的 I/O 是確保性能的關鍵:NUMA 存儲器與 FPGA 之間的 DMA 機制必須獲得 Mitrionics SDK 和 SGI RASClib 的支持。在此前的項目中,我們必須先將數據傳輸到電路板上的 SRAM 中才能進行處理,但這會嚴重影響性能,因為數據的載入和結果的卸載會造成非常大的開銷。此外,我們也清晰地認識到,IR 任務尤其需要大量的片上和板上存儲器,才能實現效率最大化。

        此外,為了充分使用 FPGA,未來的平臺必須具備兩個重要特性,一是必需能在 FPGA 之間直接傳輸數據,二是必需能夠關閉主機處理器(或用一個主機處理器控制多個 FPGA)。關閉主機處理器的功能尤其重要:在 Altix 平臺上,即便 Itanium 處理器完全處于空閑狀態也不能關閉。但是,空閑的 Itanium 處理器的功耗也高達工作狀態下所需功耗的 90%。因此,盡管 FPGA 加速的節能效果明顯,但我們目前的系統即便在加速器運行過程中主機存儲器空閑狀態下,其總體節能作用仍然有限。

        開發 FPGA 加速型系統的另一重要領域就是軟件。我們的經驗明確反映出,主要的復雜問題在于FPGA 和主機系統之間的接口連接:Mitrion-C 中的實際 FPGA 應用開發效率非常高;采用 Lemur 工具套件構建查詢和服務文檔的框架也相對容易開發。但是,采用 RASClib 開發連接主機應用和FPGA 接口的代碼非常復雜,而且由于并發性問題,還非常難以調試。因而,接口代碼的開發占據了絕大部分的開發時間。


        集合

        配置文件文檔數

        處理器獨有名詞數

        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 —— 時間(秒)和配置文件中文檔數量的對比圖

        FPGA 高級編程的最后一個問題是編譯速度。習慣于 C++ 或 Java 等語言的開發人員認為即便應用非常復雜,構建時間也應該比較短。除了最基本的設計之外,當前的 FPGA 工具執行綜合以及放置路由工作幾乎都需要一整天的時間。非常長的構建時間會嚴重影響工作效率,因而時間應當縮短到一般性軟件構建時間,這樣才能使 FPGA 加速更具吸引力。

        定制硬件平臺

        我們用這個項目探討了 FPGA 加速的可能性,并展示了 FPGA 作為數據中心綠色環保技術的巨大潛力。我們希望進一步擴展這項研究,調查文檔處理所需的全系列工作任務,如語法分析、詞干、索引、搜索以及過濾等。我們清楚地認識到,現有系統在節能潛力方面很有限,我們希望研究能以業界最高效率專門執行信息檢索任務的可定制硬件平臺。這樣,我們就能顯著加速算法的執行,同時大幅度降低能耗,從而開發出更加環保、速度更快的數據中心。


        上一頁 1 2 3 下一頁

        關鍵詞: FPGA 綠色搜索技術

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 丰县| 靖边县| 青海省| 同仁县| 从化市| 宁安市| 克拉玛依市| 子洲县| 金寨县| 德清县| 昭通市| 临城县| 临沭县| 衡东县| 海南省| 巩留县| 台中县| 玛沁县| 沧州市| 城固县| 雅江县| 桂阳县| 沂南县| 呼伦贝尔市| 门源| 新田县| 湖口县| 东乡| 鹤壁市| 台南市| 凭祥市| 怀安县| 夏津县| 隆德县| 乐平市| 沾益县| 于田县| 凉城县| 临颍县| 弥渡县| 中超|