2013-05-05 69 views
2

我在CUDA推力下試用我的雙手。 但我工作的環境需要我將最後的數據複製到char*而不是thrust::host_vector<char> 所以我現在的代碼看起來像下面這樣。如何將Thrust :: host_vector <char>複製到char *

thrust::device_vector<unsigned int> sortindexDev(filesize); 
thrust::host_vector<char>BWThost(filesize); 
thrust::device_vector<char>BWTdev(filesize); 
thrust::device_vector<char>inputDataDev(filesize); 
    . 
    . 
    some code using thrust:: sort, thrust::transform, etc 
    . 
    . 
    . 
    . 
BWThost = BWTdev; 

當我在BWThost複製數據後。 我想將其複製到char*以滿足我的框架需求。 我該怎麼做? 下面的代碼不起作用。

for(int i = o; i < upper; i++) { 
      charData[i] = BWThost[i] 
} 

回答

3

只需使用thrust::copy,例如:

thrust::device_vector<char>BWTdev(filesize); 
char *chardata = malloc(filesize); 

thrust::copy(BWTdev.begin(), BWTdev.end(), &chardata[0]); 

[免責聲明:寫在瀏覽器中,沒有編譯或測試,在風險自負]

這是直接從device_vector副本一個主機陣列,不需要任何中間的host_vector或顯式主機端循環。

+0

太好了。謝謝。這樣可行! – 2013-05-05 21:21:15

相關問題