Altera OpenCL SDK與Xilinx SDAccel的使用對比

出於工作需求,申請了這兩家的高級語言綜合工具,對典型算法進行了實現和評估(數據暫時保密)。

簡要談談使用體驗。


1. Altera OpenCL SDK

首先需要安裝Quartus(13.1版本以上)和配套的SoC EDS,分別申請兩個license,一個用於OpenCL SDK,一個用於SoCEDS,缺一不可。

然後需要有實現平臺,我用的是DE1-SoC開發板。該平臺提供了Open CL BSP,用給出的examples改改就能實現自己的算法。

SoCEDS用來編譯Host代碼,這裏是ARM;

Open CLSDK用來編譯device代碼,生成.aocx二進制文件,運行時需要藉助ARM對FPGA進行配置。

開發週期較長的是編譯Open CL工程,在我的筆記本(CPU 酷睿i5-4300,8GB內存)上大約需要40min。

優化Open CL可以通過編譯選項、編譯指導語句#pragma進行。

Open CL BSP自帶的硬件工程可以用Quartus打開查看,但裏面的Open CL相關邏輯是加密的,無法修改。

Open CL SDK不帶圖形界面,只能在命令行下運行,自動調用quartus_map, quartus_fit, quartus_sta等工具。


2. Xilinx SDAccel

前面文章介紹過Xilinx Vivado和Vivado HLS工具。按照我的猜想,SDAccel只是一層包裝,裏面內容還是HLS。果然如此。

軟件安裝比較省事,只申請SDAccel license就能使用所有Xilinx軟件功能。這點比Altera做得人性化。

用過HLS工具的童鞋都知道,這玩意開發起來飛快,但其實只完成了10%進度,麻煩事在後頭呢,系統集成會花掉剩下90%的時間。

SDAccel就是這樣一個用於開發完整項目的工具。

利用Open CL編寫的代碼會先轉化爲HLS工程,其優化策略也都一一映射爲HLS的優化,所以前面學過HLS的童鞋可以很容易轉到SDAccel上來。

最重要的步驟都有工具自動完成。只需build_system, package_system,等上幾十分鐘就能得到一個可直接運行的安裝包。

SDAccel不需要你真的有一塊開發板,它可以直接用CPU仿真,便於調試。

SDAccel既能使用圖形界面開發(類似HLS),又能在命令行執行。上傳一張諜照。



小結

使用OpenCL的一大優勢就是,只需將原來CPU、GPU上的C、C++、CUDA代碼做些許改動就能運行在FPGA上。

兩種工具都帶來了一定開發上的便利,但真想用好這些工具,仍然需要對計算架構、算法本身有深入的理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章