导入错误:libcudart.so.10.1:无法打开共享对象文件:没有那个文件或目录。

3

我尝试了下面的代码,并且出现了ImportError: libcudart.so.10.1: 无法打开共享对象文件:没有那个文件或目录。

我正在使用 cuda-10.0 torch-1.4.0 mmdet-1.2.0

import mmcv
from mmdet.apis import init_detector, inference_detector, show_result_pyplot

我在这里提供错误的完整回溯信息:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-11-fd733e93e63e> in <module>
      1 import mmcv
----> 2 from mmdet.apis import init_detector, inference_detector, show_result_pyplot
/table/CascadeTabNet/mmdetection/mmdet/apis/__init__.py in <module>
----> 1 from .inference import (async_inference_detector, inference_detector,
      2                         init_detector, show_result, show_result_pyplot)
      3 from .test import multi_gpu_test, single_gpu_test
      4 from .train import get_root_logger, set_random_seed, train_detector
      5 
/table/CascadeTabNet/mmdetection/mmdet/apis/inference.py in <module>
      9 from mmcv.runner import load_checkpoint
     10 
---> 11 from mmdet.core import get_classes
     12 from mmdet.datasets.pipelines import Compose
     13 from mmdet.models import build_detector
/table/CascadeTabNet/mmdetection/mmdet/core/__init__.py in <module>
      5 from .mask import *  # noqa: F401, F403
      6 from .optimizer import *  # noqa: F401, F403
----> 7 from .post_processing import *  # noqa: F401, F403
      8 from .utils import *  # noqa: F401, F403
/table/CascadeTabNet/mmdetection/mmdet/core/post_processing/__init__.py in <module>
----> 1 from .bbox_nms import multiclass_nms
      2 from .merge_augs import (merge_aug_bboxes, merge_aug_masks,
      3                          merge_aug_proposals, merge_aug_scores)
      4 
      5 __all__ = [
/table/CascadeTabNet/mmdetection/mmdet/core/post_processing/bbox_nms.py in <module>
      1 import torch
      2 
----> 3 from mmdet.ops.nms import nms_wrapper
      4 
      5 
/table/CascadeTabNet/mmdetection/mmdet/ops/__init__.py in <module>
      1 from .context_block import ContextBlock
----> 2 from .conv import build_conv_layer
      3 from .conv_module import ConvModule
      4 from .conv_ws import ConvWS2d, conv_ws_2d
      5 from .dcn import (DeformConv, DeformConvPack, DeformRoIPooling,
/table/CascadeTabNet/mmdetection/mmdet/ops/conv.py in <module>
      2 
      3 from .conv_ws import ConvWS2d
----> 4 from .dcn import DeformConvPack, ModulatedDeformConvPack
      5 
      6 conv_cfg = {
/table/CascadeTabNet/mmdetection/mmdet/ops/dcn/__init__.py in <module>
----> 1 from .deform_conv import (DeformConv, DeformConvPack, ModulatedDeformConv,
      2                           ModulatedDeformConvPack, deform_conv,
      3                           modulated_deform_conv)
      4 from .deform_pool import (DeformRoIPooling, DeformRoIPoolingPack,
      5                           ModulatedDeformRoIPoolingPack, deform_roi_pooling)
/table/CascadeTabNet/mmdetection/mmdet/ops/dcn/deform_conv.py in <module>
      9 
     10 from mmdet.utils import print_log
---> 11 from . import deform_conv_cuda
     12 
     13 
ImportError: libcudart.so.10.1: cannot open shared object file: No such file or directory

请帮我解决这个错误


你的系统上安装了那个库吗? - undefined
1
如果你有不同版本的libcudart.so,那么你可能需要重新编译相关的Python模块,以便与你实际拥有的版本进行链接。 - undefined
就libcudart而言,它是一个C库,安装它的典型方式是使用您发行版的软件包管理器。根据您运行的操作系统,可能是apt-getyum或其他类似的工具。 - undefined
CUDA 10.0和CUDA 10.1不是同一件事。您已安装了CUDA 10.0。您需要CUDA 10.1。 - undefined
4个回答

1

您的Pytorch/CUDA版本与所需的detectron2 Pytorch/CUDA版本不兼容。

首先确定您可以使用哪个CUDA版本。

nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 455.45.01    Driver Version: 455.45.01    CUDA Version: 11.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce RTX 2070    On   | 00000000:07:00.0  On |                  N/A |
| N/A   47C    P8     9W /  N/A |    393MiB /  7973MiB |      3%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

我有CUDA 11.1版本,因此前往此处的安装页面,然后转到CUDA版本表格并运行命令,对于我来说是这样。
python -m pip install detectron2 -f \
  https://dl.fbaipublicfiles.com/detectron2/wheels/cu111/torch1.8/index.html

3
要注意,nvidia-smi命令返回的CUDA版本是已安装驱动程序支持的最高版本,而不是实际安装的版本。您可以使用"nvcc -V"命令检查已安装的版本(几乎是活动版本)。 - undefined

0

只需安装适当版本的CUDA:

conda install pytorch torchvision cudatoolkit=10.1 -c pytorch

0

解决方案是:

$ sudo apt install nvidia-cuda-toolkit

你可以通过输入以下内容来了解:

$ nvcc --version

Command 'nvcc' not found, but can be installed with:

sudo apt install nvidia-cuda-toolkit

0

你可以尝试使用CUDA版本10.1重新安装PyTorch,然后重建MMDetection。

我这样做了,问题得到了解决。

问题可能是你的CUDA与PyTorch不兼容,而CUDA与MMCV(或MMDet)也不兼容。

提示:从“nvcc -V”和“nvidia-smi”获取的CUDA版本不同,我一开始误解了它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接