Я хочу использовать две мои графические карты для расчета с помощью CUDA Thrust.Использование нескольких графических процессоров с помощью CUDA Thrust
У меня есть две графические карты. Работа на одиночных картах хорошо работает для обеих карт, даже когда я храню два устройства_объектов в 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
Вы используете копию с хоста или используете хост для буферов? –
Не знаю, что вы имеете в виду. Этот код копирует с хоста на устройство. – dgrat
Значит, они не в режиме SLI? –