我正在捕捉視頻幀。每幀都作爲Image2D傳遞到內核中。我有大約五種簡單的圖像處理算法(模糊,銳化等)供用戶選擇(也可以是不同的組合)。我在這裏看到三種可能性:如何在內核中處理可變數量的算法?
- 一個內核:在運行時構建內核與 選擇算法的字符串和編譯(和採取的一次性 編譯延遲開銷)
- 一個內核:使用標誌處理選定的算法(雖然我明白,條件分支是不可取的)
- 許多內核(每個算法一個):似乎是問題,即
Image2D
可以是read_only
或write_only
,我需要重複地複製圖像作爲內核的一個輸出圖像是GPU輸入下一個內核的映像。
是否有建議的經驗法則遵循哪種方式?
關於條件執行:您所談論的分支類型可能並不是那麼糟糕。每個工作項目對於給定的內核執行仍然沿着相同的路徑。這是不同的工作項目向不同方向分支的情況,這些情況會真正殺死你的表現。 – James 2012-02-10 02:20:26
謝謝詹姆斯,我會評估它。 – rdoubleui 2012-02-10 10:10:10