我第一次使用以下多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**)>t[i], 2*sizeof(float));
cudaFree(gtt[i]);
}
}
我在同一节点上发现了3个设备,但第二个GPU运行时出现了段故障。我的CUDA版本为4010,计算能力为2.0。
答案 0 :(得分:1)
最终我发现了问题。我通过以下方式设置了cuda性能分析环境:
export COMPUTE_PROFILE=1
export COMPUTE_PROFILE_LOG=cuda_profile.log
第二行导致问题。当不同的gpus写入同一个分析日志文件时,可能会有一些冲突。将第二行更改为:
export COMPUTE_PROFILE_LOG=cuda_profile_%p_%d.log
解决了这个问题。