2015-01-09 83 views
0

我對CUDA編程相當陌生,所以請原諒我,如果這是一個愚蠢的問題。CUDA使用較大陣列的內容填充小陣列

在CUDA中,我試圖用大型設備陣列A(〜2000萬個int元素)的內容填充一個小型設備陣列B(~20000 int元素)。 A包含大部分零,但有大約20000個非零元素,位於數組中的隨機和未知位置。我想使用CUDA填充B的非零內容。 B中元素的順序並不重要。

我看了一下SDK,發現了一些「減少」策略,例如對數組進行並行求和,但是每種方法都會將數組減少到標量,而我試圖「減少「一個陣列到一個更小的陣列。在線搜索還沒有產生任何東西。我不是在尋找完整的代碼,而只是關於如何實現這個的一些想法/鏈接。我使用C,並且如果可能的話,我想在不使用任何C++類或結構的情況下執行此操作。

非常感謝您的幫助。

回答

2

什麼你有時描述由名字流壓實

Thrust(例如copy_if)和

cub(例如DeviceSelect)提供的選項,應該有比較好的表現去。

如果您確實想自己實現它,流壓縮可能會使用一系列較低級別的並行操作,其中一個關鍵操作是前綴和。您可以在GPU Gems中瞭解簡單並行前綴總和(和流式壓縮)的構建。我只是爲了提供信息而添加這個;我並不是建議你自己實現流壓縮或前綴總和。

+0

感謝您的幫助!這正是我所期待的:未來谷歌搜索的一些條款,以及一些讓我開始的鏈接。 – user1004061 2015-01-09 20:28:05