2016-06-15 166 views

回答

4

這確保了正確的工作組規模在過去。通常情況下,本地存儲的必要規模的工作組大小的函數。例如。在一張16x16的圖片上工作。

E.g.可以這樣寫:

__attribute__((reqd_work_group_size(16, 16, 1))) 
kernel foo void(...) { 
    local float tile[16][16]; // compiler allocates local memory 
    ... 
} 

編譯器分配本地內存,我們不需要將它作爲顯式參數傳遞。但是,我們需要確保工作組大小符合該假設。這個屬性確實如此。

+0

因此設置工作組大小是硬代碼,對吧?無論如何要動態設置工作組大小? – ThSorn

+0

您可以在內核編譯時將它作爲#define傳遞(並且可以在運行時或事先編譯各種預定義的大小並在運行時交換),但據我所知,您不能擁有一個真實的動態調整大小的本地數組 –

+0

您可以將本地緩衝區作爲內核參數傳遞,並使用'clSetKernelArg'在入列NDRange時調整大小。這使得它在NDRange之間變得動態。 – Tim

相關問題