微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 x86 机器在 Docker 上运行 ARM CUDA 软件

如何解决从 x86 机器在 Docker 上运行 ARM CUDA 软件

这是我的情况:我有一台 x86 机器,我需要创建一个与 Jetson Nano 兼容的 Docker 映像。我没有 Jetson nano,但我想测试我的 Docker 映像是否正常工作,我需要测试一些运行 CUDA 二进制文件代码。所以我设置了我的 nano docker 镜像 nvcr.io/nvidia/l4t-pytorch:r32.4.4-pth1.6-py3 并在我的 x86 机器上运行它。然后我以交互方式进入容器并启动了一个python解释器。然后我尝试导入 PyTorch

Python 3.6.9 (default,Oct  8 2020,12:12:24) 
[GCC 8.4.0] on linux
Type "help","copyright","credits" or "license" for more information.

>>> import torch

它失败了。我的输出

Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
  File "/usr/local/lib/python3.6/dist-packages/torch/__init__.py",line 188,in <module>
    _load_global_deps()
  File "/usr/local/lib/python3.6/dist-packages/torch/__init__.py",line 141,in _load_global_deps
    ctypes.CDLL(lib_path,mode=ctypes.RTLD_GLOBAL)
  File "/usr/lib/python3.6/ctypes/__init__.py",line 348,in __init__
    self._handle = _dlopen(self._name,mode)
OSError: libcurand.so.10: cannot open shared object file: No such file or directory

我的 docker 镜像与我应该安装在我的主机上的 CUDA 二进制文件相匹配。我需要让我的代码运行,但我不确定为什么即使我使用的是 NVIDIA 认可的 docker 映像,我仍然会遇到 CUDA 二进制问题。 CUDA 二进制文件预加载到图像上。

解决方法

所以当前图像的问题:nvcr.io/nvidia/l4t-pytorch:r32.4.4-pth1.6-py3 是不支持访问主机 x86 机器上的 NVIDIA 驱动程序。如果您访问官方 nvidia-docker github,您将看到 building jetson docker containers on an x86 machine 部分。然后注意底部它说

已知限制:不幸的是,您将无法运行任何二进制文件 调用 x86 主机上的 NVIDIA 驱动程序。

这意味着验证调用 NVIDIA 二进制文件的任何代码的任务是不可能的。唯一的方法是尽可能创建最好的容器,然后验证代码在物理 Jetson 设备上是否正常工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。