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以进行测试时。我得到了:分段错误。有这个错误,我不知道为什么它是这个问题。
你有没有注意到任何东西?
在此先感谢
你可以编辑的问题,包括一些关于如何在内核中传递的参数正在分配(特别是线程)的信息?另外,你在做什么CUDA版本? – talonmies
你确定所有的CUDA GPU都被正确检测到了吗?尝试调用cudaGetDeviceCount并查看它是否返回正确数量的GPU。 – Tudor