出於工作需求,申請了這兩家的高級語言綜合工具,對典型算法進行了實現和評估(數據暫時保密)。
簡要談談使用體驗。
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上。
兩種工具都帶來了一定開發上的便利,但真想用好這些工具,仍然需要對計算架構、算法本身有深入的理解。