加载yolov5 模型到cuda0和加载resnet50模型到cuda1出错处理

  先说下我工程:我需要使用yolov5的模型给出一张图中的检测结果,然后把这些检测结果再次送到resnet50的分类器中进行分类,刚开始我把两个模型都加载到了cuda0,一切完美运行.为了加速,我把yolov5的模型加载到了cuda0上(说明下我有4块gpu),resnet50的分类器模型加载到了cuda1上.想法是美好的,但执行上述流程时出现了意想不到的错误:

RuntimeError: CUDA error: invalid device ordinal
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

不明所以,于是在网上一通搜索,找到好多相同错误的博客,大多是说训练是类别数不匹配当前的训练数目,如RuntimeError: CUDA error: device-side assert triggered 问题的解决思路_Penta_Kill_5的博客-CSDN博客或者是https://blog.csdn.net/weixin_35848967/article/details/120200055RuntimeError: CUDA error: device-side assert triggered 问题的解决思路_Penta_Kill_5的博客-CSDN博客,可是我只是执行了下把他们加载到不同cuda上啊就出错了,百思不得其解,一顿迷糊后,我决定把加载的顺序调整下,原来的顺序是首先加载yolov5模型到cuda0,然后加载resnet50的分类器模型到cuda1,现在我先resnet50到cuda1,后yolov5到cuda0,程序居然可以了,结果也正确

        这样的结局固然是好的,但也十分迷糊,不知道具体啥原因造成的

你可能感兴趣的:(Pytorch,#,YOLO,深度学习,人工智能)