0
我使用推力產生在GPU上一些隨機排列如下:推力::怎麼做這種情況下的選擇拷貝
// Compute a random list on CPU
int iterations = 500;
int src_size = 2048;
thrust::host_vector<int> cpu_rand_list (iterations * 4);
for(size_t i = 0; i < cpu_rand_list.size(); ++i) {
cpu_rand_list[i] = src_size * (rand()/(1.0 + RAND_MAX));
}
// Copy the random list to GPU
thrust::device_vector<int> gpu_rand_list = cpu_rand_list;
現在gpu_rand_list
包含一些指標的整數,我有另一個數組一樣:
thrust:;device_vector<float> values(2048);
// These are now filled with some values
...
我想要做的是創造另一個列表這將只包含gpu_rand_list
對應的條目中values
不等於-1的條目。所以在CPU代碼類似的:
std::vector<int> refined;
for (int i = 0; i < gpu_rand_list.size(); ++i) {
if (values[gpu_rand_list[i]] != -1)
refined.push_back(gpu_rand_list[i]);
}
有沒有一種方法來實現這個推力?我試圖使用copy_if構造,但不能使它與這些多個數組一起工作。