CAPI SNAP開發(fā)及應(yīng)用教程
在之前的OpenPOWER歐洲峰會上,我們推出了全新的框架,旨在便于開發(fā)者開始采用CAPI加速其應(yīng)用開發(fā)。CAPI存儲、網(wǎng)絡(luò)和分析編程框架,或者簡稱為CAPI SNAP,通過OpenPOWER成員的多家公司共同協(xié)作努力開發(fā)而成,如今將與多家前期應(yīng)用合作伙伴展開內(nèi)部測試。
但是CAPI SNAP到底是什么呢?為了回答這個問題,我希望為各位深入介紹一下CAPI SNAP的運(yùn)行原理。該框架通過簡化API(對加速功能的調(diào)用)和加速功能的編碼,從而可以擴(kuò)展CAPI技術(shù)。利用CAPI SNAP,通過FPGA加速可以提高您的應(yīng)用性能,因為計算資源與海量數(shù)據(jù)的關(guān)系更加密切。
簡潔的API
ISV尤其關(guān)注這個框架的編程支持功能。該框架API可以支持應(yīng)用調(diào)用加速功能。創(chuàng)新的FPGA框架邏輯可以實(shí)施所有計算工程接口邏輯、數(shù)據(jù)移動、高速緩存和預(yù)取工作——讓程序員只專注于加速器功能的開發(fā)。
沒有框架,應(yīng)用程序員必須創(chuàng)建運(yùn)行時加速庫,執(zhí)行如圖1所示的任務(wù)。
但現(xiàn)在借助CAPI SNAP,應(yīng)用僅僅需要如圖2所示的那樣的調(diào)用功能。這種簡潔的API擁有源數(shù)據(jù)(地址/位置),可以執(zhí)行的特定加速操作,以及發(fā)送結(jié)果數(shù)據(jù)的目標(biāo)(地址/位置)。
圖2:使用CAPI SNAP調(diào)用加速功能該框架能夠?qū)?shù)據(jù)移動到加速器,并儲存結(jié)果。
拉近計算與數(shù)據(jù)的距離
API參數(shù)的簡潔性兼具出色和強(qiáng)大的特點(diǎn)。源地址和目標(biāo)地址不僅是凝聚系統(tǒng)內(nèi)存單元,他們也是附加存儲、網(wǎng)絡(luò)或內(nèi)存地址。例如,如果框架卡具有附加存儲,應(yīng)用可能會通過存儲獲得一個大型模塊(或多個模塊)的數(shù)據(jù),對FPGA中的數(shù)據(jù)執(zhí)行搜索、交叉或合并這樣的操作,并將搜索結(jié)果發(fā)送給主系統(tǒng)內(nèi)存的指定目標(biāo)地址。與圖3所示的標(biāo)準(zhǔn)軟件方法相比,這種方法具有更大的性能優(yōu)勢。
圖3:軟件中的應(yīng)用搜索功能(無加速框架)
圖4所示為源數(shù)據(jù)通過QSFP+端口流入加速器的方式,其中FPGA執(zhí)行搜索功能。該框架然后會將搜索結(jié)果轉(zhuǎn)發(fā)給系統(tǒng)內(nèi)存。
圖4:采用加速框架搜索引擎的應(yīng)用
該框架的性能優(yōu)勢提高了兩倍:
1. 通過拉近計算與數(shù)據(jù)之間的距離(在這種情況下,即指搜索),F(xiàn)PGA可以提高訪問存儲的帶寬。
2. FPGA的加速搜索比軟件搜索速度更快。
表1的數(shù)據(jù)對比了兩種方法,表明性能提高了3倍。通過拉近計算與數(shù)據(jù)之間的距離,與將整體數(shù)據(jù)移動到系統(tǒng)內(nèi)存這種方法相比,F(xiàn)PGA提高了輸入(或輸出)速度。
POWER+CAPI SNAP框架
只有軟件
輸入100GB的數(shù)據(jù)
兩個100Gb/s端口:4秒
一個PCI-E Gen3&TImes;8 NIC:12.5秒
執(zhí)行搜索
<1微秒
<100微秒
發(fā)送結(jié)果到系統(tǒng)內(nèi)存
<400納秒
0
總時間
4.0000014秒
12.50001秒
簡化加速操作的編程
編程API不僅是CAPI SNAP的唯一簡化功能。該框架還簡化了FPGA中“操作碼”的編程。該框架能夠檢索源數(shù)據(jù)(無論是在系統(tǒng)內(nèi)存、存儲、網(wǎng)絡(luò)等),并將結(jié)果發(fā)送到指定目標(biāo)。使用高級語言(如C/C++或Go)編程的程序員只需要專注其數(shù)據(jù)轉(zhuǎn)換或“操作”即可。與框架兼容的編譯器可將高級語言轉(zhuǎn)化為Verilog,然后利用Xilinx的Vivado工具集加以合成。
開源版本將會包括多種全功能實(shí)例加速器,為用戶提供所需的起點(diǎn)和全端口聲明,以便接收源數(shù)據(jù)并返回目標(biāo)數(shù)據(jù)。