问题描述
在使用MXNet多个GPU的时候,突然报 了Check failed: exec_ctx.dev_id < device_count_错误,因为电脑上有4个GPU,所以之前用mx.gpu(0)、mx.gpu(1)、mx.gpu(2)、mx.gpu(3)的时候都是正常的,今天突然报错了。
详细错误
mxnet.base.MXNetError: [14:29:41] src/engine/threaded_engine.cc:330: Check failed: exec_ctx.dev_id < device_count_ (2 vs. 1) Invalid GPU Id: 2, Valid device id should be less than device_count: 1
从错误上来看,意思是说我指定的GPU id 2是无效的,能够用的GPU Id是小于1的,也就是只有0能够使用,期间尝试卸载重新安装MXNet还是没能解决这个问题
解决办法
- 首先确认你的电脑有几块GPU,如果只有1块GPU,那么肯定只有0能用,其他都不行
- 如果电脑确认有多块GPU,请按下面的方法来解决
import mxnet as mx
#查看电脑可用的GPU个数
mx.test_utils.list_gpus()
我在使用上面代码的时候输出的是range(0,4),指的是电脑可用的有四块GPU,即(0,1,2,3)四块,然后再尝试使用下面代码,看是否会报错
import mxnet as mx
#查看第一块GPU是否真的可用
mx.nd.ones((1,1),mx.gpu(0))
使用上面代码测试GPU是否真的可用,如果这里出现问题,使用下面代码即可解决问题
export CUDA_VISIBLE_DEVICES=0,1,2,3
上面的0,1,2,3根据电脑的GPU个数进行设置