我想用CUDA Thrust使用我的两张显卡进行计算.
我有两张图形卡.即使我在std :: vector中存储两个device_vectors,在单张卡上运行也能很好地适用于这两种卡.
如果我同时使用两个卡,则循环中的第一个循环起作用并且不会导致错误.第一次运行后,它会导致错误,可能是因为设备指针无效.
我不确定究竟是什么问题,或者如何使用两张卡进行计算.
最小代码示例:
std::vector<thrust::device_vector<float> > TEST() {
std::vector<thrust::device_vector<float> > vRes;
unsigned int iDeviceCount = GetCudaDeviceCount();
for(unsigned int i = 0; i < iDeviceCount; i++) {
checkCudaErrors(cudaSetDevice(i) );
thrust::host_vector<float> hvConscience(1024);
// first run works, runs afterwards cause errors ..
vRes.push_back(hvConscience); // this push_back causes the error on exec
}
return vRes;
}
Run Code Online (Sandbox Code Playgroud)
执行时出错:
terminate called after throwing an instance of 'thrust::system::system_error'
what(): invalid argument
Run Code Online (Sandbox Code Playgroud)