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];
}
在上面的代码中,为什么我不能显示 vector 值?它给出了错误
void generateVector(count);
那说
incomplete is not allowed
为什么?怎么了可能的解决方案是什么?
最佳答案
您在函数generateVector
中错误地调用了函数displayVector
。应该是这样的:
generateVector(count);
同样,您将在函数
A
中创建 vector B
和generateVector
,这些 vector 将在该函数本地,而thrust::generate
将在这些局部 vector 上运行。全局 vector A
和B
不会被修改。您应删除局部 vector 以实现所需的效果。而是为全局 vector host_vector::resize
和A
调用B
来分配内存。最终代码应如下所示:
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;
}
关于cuda - 为什么编译器会给出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782386/