Я сейчас отладка проекта, до сих пор не понять, какую часть неправильно, но я подозреваю, что состояние гонки происходит во время создания потока:Может ли создание потока cuda вызвать состояние гонки данных?
Учитывая следующий код:
#pragma omp parallel num_threads(4)
{
int threadId = omp_get_thread_num();
cudaSetDevice(threadId);
cudaStream_t streams[20];
for (int i=0; i<20; ++i) cudaStreamCreate(streams+i);
};
Будет ли эта причина потенциальное состояние гонки, например другой поток создает потоки с тем же идентификатором потока еще на другом идентификаторе устройства?
Не можете ли вы просто прокомментировать прагму и посмотреть, не исчезла ли проблема? :) Кроме того, создание потоков должно быть редким явлением - нет необходимости запускать его параллельно. –