2011-10-27 38 views
2

我使用CUDA的,並使用OpenMP並行線程時給予分段錯誤:的OpenMP與CUDA在另一個GPU上運行,而不是0

#pragma omp parallel 
{ 
    unsigned int cpu_thread_id = omp_get_thread_num(); 
    cudaSetDevice(cpu_thread_id); 

    if(cpu_thread_id==0) 
    { 
     // call kernel function 
    } 
} 

它總是與cpu_thread_id工作= 0,即使我有4個GPU。所以當我將cpu_thread_id更改爲另一個數字1,2和3以進行測試時。我得到了:分段錯誤。有這個錯誤,我不知道爲什麼它是這個問題。

你有沒有注意到任何東西?

在此先感謝

+1

你可以編輯的問題,包括一些關於如何在內核中傳遞的參數正在分配(特別是線程)的信息?另外,你在做什麼CUDA版本? – talonmies

+0

你確定所有的CUDA GPU都被正確檢測到了嗎?嘗試調用cudaGetDeviceCount並查看它是否返回正確數量的GPU。 – Tudor

回答

0

我在線程之間增加了一個互斥體和它的作品。我不知道爲什麼它是這樣的...

+0

您可以嘗試使用Cuda API來確定上次遇到的Cuda錯誤並將其打印出來。 – Tudor

相關問題