2016-12-28 54 views
0

從器件陣列獲得的單個元素的最優化的方式,我有巨大的長度的設備和一些條件檢查我想從中間訪問(在主機/ CPU)只有一個元素的數組(說第N個元素)。什麼可能是這樣做的最佳方式。什麼是CUDA

我是否需要寫從src數組單個元素數組寫入第N個位置的內核,然後我複製單個器件陣列的主機?

回答

1

可以複製使用cudaMemcpy陣列的單個元件。 比方說,你要複製數組N個元素:

int * dSourceArray

可變

int hTargetVariable

您可以在主機上應用設備指針算術。所有你需要做的是通過N元素螞蟻拷貝單個元素移動dSourceArray指針:

cudaMemcpy(&hTargetVariable, dSourceArray+N, sizeof(int), cudaMemcpyDeviceToHost) 

請記住,如果你使用多個數據流,你想傳送數據之前,設備同步。

+0

這不意味着主機已經知道N了嗎?如果不是,會發生什麼? – talonmies

+0

如果N以某種方式在設備上計算,那麼使用一些全局的__device__變量就可以實現。首先,您將使用cudaMemcpyFromSymbol()從全局__device__變量中複製N的值,然後複製N元素,如上所述。 – pSoLT

相關問題