2013-04-03 148 views
1
thrust::host_vector<int> A; 
thrust::host_vector<int> B; 

int rand_from_0_to_100_gen(void) 
{ 
    return rand() % 100; 
} 


__host__ void generateVector(int count) { 


    thrust::host_vector<int> A(count); 
    thrust::generate(A.begin(),A.end(),rand_from_0_to_100_gen); 

    thrust::host_vector<int> B(count); 
    thrust::generate(B.begin(),B.end(),rand_from_0_to_100_gen); 
} 

__host__ void displayVector(int count){ 

    void generateVector(count); 

    cout << A[1]; 


} 

在上面的代碼中,爲什麼我不能顯示矢量值?它給錯誤在爲什麼編譯器給出錯誤?

void generateVector(count); 

那說incomplete is not allowed爲什麼?這裏有什麼問題?可能的解決方案是什麼?

回答

1

您在功能displayVector中錯誤地調用功能generateVector。它應該是這樣的:

generateVector(count); 

此外,要創建載體AB功能generateVector這將是局部的功能和thrust::generate將在這些地方工作的載體裏面。全局向量AB不會被修改。你應該刪除本地載體來實現你想要的。請改爲撥打host_vector::resize以獲取全局向量AB以分配內存。

最後的代碼應該是這樣的:

thrust::host_vector<int> A; 
thrust::host_vector<int> B; 

int rand_from_0_to_100_gen(void) 
{ 
    return rand() % 100; 
} 

__host__ void generateVector(int count) 
{ 
    A.resize(count); 
    thrust::generate(A.begin(),A.end(),rand_from_0_to_100_gen); 

    B.resize(count); 
    thrust::generate(B.begin(),B.end(),rand_from_0_to_100_gen); 
} 

__host__ void displayVector(int count) 
{ 
    generateVector(count); 
    cout << A[1]<<endl; 
} 
+0

感謝在generateVector和displayVector功能你的幫助有* HDATA什麼可能是定義爲int一個參數? – user2236653

+0

你的代碼中的'hData'在哪裏? – sgarizvi

+0

這裏沒有hData。傢伙定義這個函數通過把int * hData我不知道爲什麼 – user2236653

相關問題