2013-11-22 3 views
0

Я сейчас отладка проекта, до сих пор не понять, какую часть неправильно, но я подозреваю, что состояние гонки происходит во время создания потока:Может ли создание потока 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); 

}; 

Будет ли эта причина потенциальное состояние гонки, например другой поток создает потоки с тем же идентификатором потока еще на другом идентификаторе устройства?

+1

Не можете ли вы просто прокомментировать прагму и посмотреть, не исчезла ли проблема? :) Кроме того, создание потоков должно быть редким явлением - нет необходимости запускать его параллельно. –

ответ

1

Вы тестировали создание cudaStreams последовательным способом? Вы можете сначала создавать cudaStreams, а затем распараллеливать код, который вам нужен.

Смежные вопросы