2013-05-05 4 views
2

Я пытаюсь изо всех сил нажимать CUDA. , но среда, в которой я работаю, нуждается в копировании данных в конце в char*, а не thrust::host_vector<char> Так что мой код сейчас выглядит примерно так.как скопировать a 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

Отлично. Благодарю. это работает! –

 Смежные вопросы

  • Нет связанных вопросов^_^