2

我正在尝试 CUDA 推力。但是我正在工作的环境需要我将最后的数据复制到 achar*而不是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. 我想将它复制到 achar*以满足我的框架的需要。我该怎么做?下面的代码不起作用。

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

1 回答 1

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或显式主机端循环。

于 2013-05-05T21:09:58.460 回答