为什么多个GPU CUDA代码失败了?

时间:2012-12-19 22:10:37

标签: cuda gpu-programming

我第一次使用以下多GPU CUDA代码:

int main( void ) { 
    int count;
    cudaGetDeviceCount( &count );
    float** gtt = new float*[count];
    for (int i=0; i< count; i++) {
        cudaSetDevice(i);
        int j;
        cudaGetDevice(&j);
        printf("get device %d\n",j);
        cudaMalloc((void**)&gtt[i], 2*sizeof(float));
        cudaFree(gtt[i]);
    }   
}

我在同一节点上发现了3个设备,但第二个GPU运行时出现了段故障。我的CUDA版本为4010,计算能力为2.0。

1 个答案:

答案 0 :(得分:1)

最终我发现了问题。我通过以下方式设置了cuda性能分析环境:

export COMPUTE_PROFILE=1
export COMPUTE_PROFILE_LOG=cuda_profile.log

第二行导致问题。当不同的gpus写入同一个分析日志文件时,可能会有一些冲突。将第二行更改为:

export COMPUTE_PROFILE_LOG=cuda_profile_%p_%d.log

解决了这个问题。