0

我第一次拥有以下多 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。

4

1 回答 1

1

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

export COMPUTE_PROFILE=1
export COMPUTE_PROFILE_LOG=cuda_profile.log

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

export COMPUTE_PROFILE_LOG=cuda_profile_%p_%d.log

解决问题。

于 2012-12-20T19:55:59.273 回答