5

デバイスにコピーしたい (ホスト上の)int *h_a多数のデータ ポイントを参照するポインターがあります。N私もです:

thrust::host_vector<int> ht_a(h_a, h_a + N);
thrust::device_vector<int> dt_a = ht_a;

ただし、作成はそれを参照するのではなく、ht_a暗黙的にコピー するようです。これは、 .h_ah_a

を指すht_aようなものを作成したいだけです-これを行う方法は?&ht_a[0]h_a[0]

どうもありがとう。

または、デバイス メモリへのコピー以外は実際には何もしていないので、 と の間をht_a直接移動できるかどうか知りたいです。int*thrust::device_vector<int>

4

1 に答える 1

5

デバイスからホストにコピーバックする方法も示すようにコードを編集しました。

#include <stdio.h>
#include <thrust/device_vector.h>
#include <thrust/copy.h>

int main() {

 int N = 10;
 int *h_a;
 int *h_b;
 h_a = (int *)malloc(N*sizeof(int));
 h_b = (int *)malloc(N*sizeof(int));
 for (int i=0; i<N; i++) {
   h_a[i] = i;
   h_b[i] = 0;
   }

 thrust::device_vector<int> dt_a(h_a, h_a + N);

 thrust::copy(dt_a.begin(), dt_a.end(), h_b);

 for (int i=0; i<N; i++)
   printf("h_b[%d] = %d\n", i, h_b[i]);
 return 0;
}
于 2013-01-14T22:59:46.950 に答える