2011-10-27 41 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

相关问题