我想使用我的两张图形卡片来进行CUDA Thrust计算。
我有两张图形卡片。单独运行每张卡片都可以正常工作,即使我将两个设备向量存储在std::vector中也是如此。
如果我同时使用两张卡片,循环中的第一次运行可以正常工作并且没有错误。但是在第一次运行后,会出现错误,可能是因为设备指针无效。
我不确定确切的问题是什么,或者如何使用两张卡片进行计算。
最小代码示例:
我有两张图形卡片。单独运行每张卡片都可以正常工作,即使我将两个设备向量存储在std::vector中也是如此。
如果我同时使用两张卡片,循环中的第一次运行可以正常工作并且没有错误。但是在第一次运行后,会出现错误,可能是因为设备指针无效。
我不确定确切的问题是什么,或者如何使用两张卡片进行计算。
最小代码示例:
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;
}
执行时的错误信息:
terminate called after throwing an instance of 'thrust::system::system_error'
what(): invalid argument