如何将Thrust :: host_vector <char>复制到char * </char>

时间:2013-05-05 20:58:20

标签: cuda nvidia thrust

我正在尝试CUDA推力。 但我正在工作的环境需要我将最后的数据复制到char*而不是thrust::host_vector<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]
}

1 个答案:

答案 0 :(得分: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或显式主机端循环。