0
從器件陣列獲得的單個元素的最優化的方式,我有巨大的長度的設備和一些條件檢查我想從中間訪問(在主機/ CPU)只有一個元素的數組(說第N個元素)。什麼可能是這樣做的最佳方式。什麼是CUDA
我是否需要寫從src數組單個元素數組寫入第N個位置的內核,然後我複製單個器件陣列的主機?
從器件陣列獲得的單個元素的最優化的方式,我有巨大的長度的設備和一些條件檢查我想從中間訪問(在主機/ CPU)只有一個元素的數組(說第N個元素)。什麼可能是這樣做的最佳方式。什麼是CUDA
我是否需要寫從src數組單個元素數組寫入第N個位置的內核,然後我複製單個器件陣列的主機?
可以複製使用cudaMemcpy
陣列的單個元件。 比方說,你要複製數組N
個元素:
int * dSourceArray
可變
int hTargetVariable
您可以在主機上應用設備指針算術。所有你需要做的是通過N
元素螞蟻拷貝單個元素移動dSourceArray
指針:
cudaMemcpy(&hTargetVariable, dSourceArray+N, sizeof(int), cudaMemcpyDeviceToHost)
請記住,如果你使用多個數據流,你想傳送數據之前,設備同步。
這不意味着主機已經知道N了嗎?如果不是,會發生什麼? – talonmies
如果N以某種方式在設備上計算,那麼使用一些全局的__device__變量就可以實現。首先,您將使用cudaMemcpyFromSymbol()從全局__device__變量中複製N的值,然後複製N元素,如上所述。 – pSoLT