OpenCL 筆記




cl_mem, program, kernel 都是在context下創建, 可用於這個context下的所有device上;

一個OpenCL kernel, 大概可以分爲兩類, 一類是對workgroup屬性沒有要求的,這種kernel就相當於不劃分workgroup也一樣,每個workitem計算的執行完全一樣;

另一類是對workgroup的大小和個數有要求的, 或這對其中之一有要求,比如是某整數倍等;

後面這種情況下的劃分, 同時也就決定了輸入 cl_mem 和 輸出cl_mem 對實際要計算數據的佈局 (因爲選定了workgroup個數後, 所有workitem覆蓋的計算範圍一定大於等於輸入和輸出cl_mem), 佈局比如說是 實際計算的數據在cl_mem的中間,或靠左靠右靠上靠下,或靠一個角,都有可能;

單不管是哪一種, 數據大小和cl_mem的留白大小也是各種可能;

因此 一般情況下, 一個kernel的參數大概可以分爲三類, 一類似是輸入輸出cl_mem 和 local cl_mem;  二是描述比如留白決定的比如跨距等一類的信息,具體決定item怎麼取操作cl_mem; 三就是計算類的參數, 比如循環次數,固定的傳參等等;

 

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