CUDA Thrust での計算に 2 枚のグラフィック カードを使用したいと考えています。
私は2枚のグラフィックカードを持っています。std::vector に 2 つの device_vector を格納している場合でも、1 枚のカードで実行すると、両方のカードで問題なく動作します。
両方のカードを同時に使用すると、ループの最初のサイクルが機能し、エラーは発生しません。最初の実行後にエラーが発生します。これはおそらく、デバイス ポインタが無効であるためです。
正確な問題が何であるか、または両方のカードを計算に使用する方法がわかりません。
最小限のコード サンプル:
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