如何解决“RuntimeError: CUDA error: invalid device ordinal”?

新手上路,请多包涵

我正在尝试运行这段代码。我不知道它有什么问题,但这段代码没有运行。而且我不知道如何解决这个问题。

 import cv2
from facial_emotion_recognition import EmotionRecognition

emotion_detector = EmotionRecognition(device='gpu', gpu_id=1)
camera = cv2.VideoCapture(0)

while True:
    image = camera.read()[1]
    image = emotion_detector.recognise_emotion(image, return_type='BGR')
    cv2.imshow('Camera', image)

    key = cv2.waitKey(1)
    if key == 27:
        break

camera.release()
cv2.destroyAllWindows()

但我收到此错误:

 Traceback (most recent call last):
  File "/home/fahim/Documents/Python_projects/Python tutorials/pantech AI Master/Computer_Vision/Day 8 Face emotion recognition/emotion.py", line 4, in <module>
    emotion_detector = EmotionRecognition(device='gpu', gpu_id=1)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/facial_emotion_recognition/facial_emotion_recognition.py", line 25, in __init__
    self.network = NetworkV2(in_c=1, nl=32, out_f=7).to(self.device)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 607, in to
    return self._apply(convert)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 354, in _apply
    module._apply(fn)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 354, in _apply
    module._apply(fn)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 376, in _apply
    param_applied = fn(param)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 605, in convert
    return t.to(device, dtype if t.is_floating_point() else None, non_blocking)
RuntimeError: CUDA error: invalid device ordinal

Process finished with exit code 1

这是我电脑的配置: GPU:NVIDIA GeForce MX130 CPU:Intel i5-10210U (8) @ 4.200GHz 请帮我解决这个问题。

原文由 Fahim kamal Ahmed 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

尝试改变:

 emotion_detector = EmotionRecognition(device='gpu', gpu_id=1)

到:

 emotion_detector = EmotionRecognition(device='gpu', gpu_id=0)

gpu_id 仅在检测到多个 GPU 时有效,您似乎只有一个 GPU,因此它会抛出错误,因为您告诉函数获取 GPU 2(因为我们从 0 开始计数)。

原文由 funie200 发布,翻译遵循 CC BY-SA 4.0 许可协议

在我的例子中,它不小心设置了 CUDA_VISIBLE_DEVICES=0 并试图将进程设置为 0 以外的设备。要解决这个问题,您可以运行

unset CUDA_VISIBLE_DEVICES

或者

export CUDA_VISIBLE_DEVICES=1,2,3,4,...

取决于您拥有/想要使用的 GPU 数量。

原文由 David White 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题