2011-09-21 45 views
0

非常感谢你的答案在Cuda Thrust Custom function推力计数迭代内部功能

最后一两件事,如果我想通过另一种载体复制的值,如本?

for (i=0;i<n;i++) 
     for (j=0;j<n;j++) 
      y[i*n+j]=h1[i]*a1[pos*n+j]; 

它仍然不清楚如何将值传递给创建的函数谢谢!

+0

我不确定我是否按照这个问题。如果你想在不同的向量中得到结果,你不能只用'thrust :: copy'来创建输入向量的副本,然后使用'thrust :: transform'来完成这个操作。副本? – talonmies

+0

是的,但它不只是一个普通的副本...此外,它将不得不通过向量2次与此... 不能我做一个变换一次吗? –

回答

1
thrust::transform(
    thrust::make_permutation_iterator(h1.begin(), 
     thrust::make_transform_iterator(thrust::make_counting_iterator(0), 
      IndexDivFunctor(n))), 
    thrust::make_permutation_iterator(h1.begin(), 
     thrust::make_transform_iterator(thrust::make_counting_iterator(0), 
      IndexDivFunctor(n))) + n * n, 
    thrust::make_permutation_iterator(a1.begin(), 
     thrust::make_transform_iterator(thrust::make_counting_iterator(0), 
      Indexa1Functor(n, pos))), 
    y.begin(), 
    thrust::multiplies<double>());