Konwersja ciągu :: iteratory do iz surowych wskaźników

Chcę użyć biblioteki Thrust do obliczenia sumy prefiksów tablicy urządzeń w CUDA. Moja tablica jest przydzielona za pomocącudaMalloc(). Moje wymaganie jest następujące:

main()  
{  
     Launch kernel 1 on data allocated through cudaMalloc()  
     // This kernel will poplulate some data d.  
     Use thrust to calculate prefix sum of d.  
     Launch kernel 2 on prefix sum.  
}

Chcę użyć Thrust gdzieś między moimi jądrami, więc potrzebuję metody konwersji wskaźników na iteratory urządzeń i wstecz. Co jest nie tak w następującym kodzie?

int main()                                                        
{                                                                 
    int *a;                                                   
    cudaMalloc((void**)&a,N*sizeof(int));   
    thrust::device_ptr<int> d=thrust::device_pointer_cast(a);  
    thrust::device_vector<int> v(N);                    
    thrust::exclusive_scan(a,a+N,v);                          
    return 0;                                                  
}                     

questionAnswers(2)

yourAnswerToTheQuestion