天天看點

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),又能在指令行執行。上傳一張諜照。

Altera OpenCL SDK與Xilinx SDAccel的使用對比

小結

使用opencl的一大優勢就是,隻需将原來cpu、gpu上的c、c++、cuda代碼做些許改動就能運作在fpga上。

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

繼續閱讀