我正在編寫OpenCL程序,但是我的全局工作大小不是本地工作大小的倍數。在OpenCL中,全局工作大小必須能夠被當地工作大小整除,所以我讀到的一個解決方案是添加一些額外的工作項目,這些工作項目無法收集全局工作大小的大小並使其可以被選定的本地工作大小整除。如何添加額外的工作項目以使全局工作大小成爲本地工作大小的倍數
舉例來說,假設地方工作大小爲4和全球工作尺寸爲62(你有一個內核需要對它們進行操作62元)
這裏的想法是添加2個工作項只是閒置,爲了使全球工作規模爲64.因此,64可以被4整除,一切都很好。
關於如何實現這樣的閒置工作的任何想法?如果我簡單地將全局工作大小增加到64,我有兩次額外的內核執行,這會改變程序正在執行的計算結果,最終會產生錯誤的結果。
你將不得不增加內核內部邊界檢查,這確保只有那些線程執行計算其全球指數落在有效數據範圍內。 – sgarizvi