2013-03-14 5 views
1

Я не имею Ферми в данный момент, но ориентируетесь платформа тесла/Ферми, вопрос, который я хочу спросить, если поддержка Ферми Open MP, как это:CUDA и Open MP

#pragma omp parallel for num_threads(N) 

for (int i=0; i<1000; ++i) 
{ 
    int threadID=omp_get_thread_num(); 
    cudafunctions<<<blocks, threads, 1024, streams[threadID]>>>(input+i*colsizeofinput); 
}//where there are N streams created. 

ответ

1

Да, что-то вроде это is possible. OpenMP не дает каких-либо особых преимуществ при попытке запуска нескольких ядер на одно и то же устройство (помимо того, какие потоки предоставляют), и не требуется для одновременного выполнения ядер, если это ваше намерение.

Типичный пример использования OpenMP с CUDA: to manage multiple devices.

+0

Ну, если я правильно понимаю потоки, то без параллелизма, думаю, мне нужно использовать вложенные for-loops с ненужными синхронизациями потоков (что может повредить производительность) для достижения этого (задача состоит в том, чтобы позволить ограниченное количество потоков проводить некоторый анализ на столбцах очень большой матрицы одновременно). – user0002128

+2

Стоит отметить, что этот подход может работать только на CUDA 4 или более поздней версии. До CUDA 4 контексты не были потокобезопасными и нуждались в явной миграции через API миграции контекста. – talonmies

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