Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal

运行caffe例程包出现上面的错误Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal

这个问题的原因是设置的训练GPU数量和真实物理机上的显卡数量不相等!

弄清楚原因之后就很可以很愉快的解决问题了。

Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal

回到solover文件下,或者caffe的python执行文件,设置运行的GPU数量和指定GPU。

这是由于GPU数量不匹配造成的,如果训练自己的数据,那么我们只需要将solver.prototxt文件中的device_id项改为自己的GPU块数,一块就是0,两块就是1,以此类推。

但是SSD配置时的例子是将训练语句整合成一个python文件ssd_pascal.py,所以需要改此代码。相关配置训练方法请参看转载博文:http://blog.****.net/xunan003/article/details/78427446

解决方法:将ssd_pascal.py文件中第332行gpus = "0,1,2,3"的GPU选择改为gpus = "0",后面的1,2,3都删掉即可。再次训练即可。

当然,由于博主只有一块GPU且电脑运行内存有限,还需要将ssd_pascal.py文件中的337行batch_size = 32和338行accum_batch_size = 32都改小一倍,即更改批量大小,不然会出现“Check failed: error == cudaSuccess (2 vs. 0)  invalid ...”的错误。


总结:

1、error == cudaSuccess (10 vs. 0)还是error == cudaSuccess (2 vs. 0)错误关键是看其后面的具体信息。这个才是分析问题的关键!!!


参考:

https://blog.****.net/xunan003/article/details/78433383