Я выполнял некоторую процедуру CUFFT в докере и столкнулся с некоторой проблемой. Я использую следующий Dockerfile.
FROM nvidia/cuda:9.1-runtime-ubuntu16.04
ENV NVIDIA_VISIBLE_DEVICES all
ENV LD_LIBRARY_PATH /usr/local/cuda-9.1/lib64/
FROM python:3.7
COPY --from=0 /usr/local/cuda-9.1 /usr/local/cuda-9.1
ENV VIRTUAL_ENV=/opt/venv
ENV PATH="/opt/venv:$PATH"
RUN pip install numpy
RUN apt update && \
apt-get -y install gcc && \
apt-get -y install apt-utils && \
apt-get -y install g++ && \
apt-get -y install pciutils && \
apt-get -y install libc6
ADD helmsolver /helmsolver
CMD ls /usr && ls /usr/local
CMD dpkg -l | grep -i cuda
CMD cd helmsolver && bash tests.sh
Для сборки и запуска Docker я использую такие команды.
docker build -t helm .
docker run --gpus all helm
Я могу запустить свой код на хосте, но после запуска в Dockerв коде этого типа cudaMalloc((void**)&d_array, memsize)
появляется ошибка 35 (cudaErrorInsufficientDriver
). Что не так с моим кодом или просто отсутствуют некоторые .so
файлы? Вот мои CUDA, докер, nvidia-smi версии
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85
Docker version 19.03.4
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67 Driver Version: 418.67 CUDA Version: N/A |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GT 640 On | 00000000:01:00.0 N/A | N/A |
| 40% 36C P8 N/A / N/A | 48MiB / 4035MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 760 On | 00000000:02:00.0 N/A | N/A |
| 17% 36C P8 N/A / N/A | 1MiB / 4037MiB | N/A Default |
+-------------------------------+----------------------+----------------------+