通過執行掃描操作來壓縮數組(將輸入數組中的所需元素放入輸出數組)後,輸出(壓縮)數組中可能會留下一些空白空間在需要的元素被放置之後以連續的形式。有沒有辦法在OpenCL內核代碼本身釋放這些空白空間,而不必返回主機(僅僅是爲了刪除)......?在OpenCL內核代碼中刪除數組中的某些元素
例如,我有一個100個元素的輸入數組,其中一些no.s大於50,其中一些小於50,並且希望將no.s超過50個存儲在不同的數組中,並且僅進一步處理這些數組中的元素,我不知道這個輸出數組的大小,因爲我不知道有多少no.s實際上大於50(所以我聲明這個數組的大小爲100)...然後執行掃描後,我得到輸出數組的所有元素超過50 ...但在這些元素的存儲後,輸出數組中可能會有一些空的連續空間......那麼我們如何刪除這些空間......有沒有在內核代碼中做到這一點的方法...?或者我們是否必須回到主機代碼中...?
如果我們不能刪除內核代碼本身的剩餘空間,並且如果我們不想回到主代碼中,我們如何處理這樣的壓縮數組以進行進一步處理。
您不能更改內核中數組的長度或動態數據結構的大小。如果您打算調整數組大小以節省一些空間,則需要調整主機中的數組大小。我不確定「僅僅是爲了刪除」會是一個足夠的理由去做你想做的事情。順便說一句,你想做什麼?隱式刪除這些空格的一種典型方法是對數組進行排序,以便所有空格都位於開頭(或結尾),找出有效元素的數量及其起點,並在內核中使用它來僅處理數組的一部分。 – Thomas