2011-09-21 47 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>());