Запуск рутин CUFFT в Nvidia-Docker - PullRequest
       63

Запуск рутин CUFFT в Nvidia-Docker

1 голос
/ 16 октября 2019

Я новичок в Docker, особенно в Nvidia-Docker. Я пытаюсь поместить свой код в Docker-контейнер и запустить его на некоторых хостах. Но, видимо, что-то идет не так, и я не могу запустить свой код в докере. Я установил Nvidia-Docker и Dockerfile взят из здесь . Вот мой полный код Docker

FROM nvidia/cuda:9.1-runtime-ubuntu16.04
RUN apt-get update && apt-get install -y \
        cuda-command-line-tools-$CUDA_PKG_VERSION \
        cuda-libraries-dev-$CUDA_PKG_VERSION \
        cuda-minimal-build-$CUDA_PKG_VERSION \
&& \
    rm -rf /var/lib/apt/lists/*

ENV LIBRARY_PATH /usr/local/cuda/lib64/stubs

FROM python:3.7-slim
RUN pip install numpy
RUN apt update && \
    apt-get -y install gcc && \
    apt-get -y install g++
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
ADD helmsolver /helmsolver
CMD dpkg -l | grep -i cuda
CMD cd helmsolver && bash tests.sh

И код сценария bash, где cudahelmf и cudahelmd предварительно скомпилированы с помощью

nvcc helm3dcudafnd.cu -o cudahelm -I/usr/local/cuda/samples/common/inc/ -lcufft -lcufftw -D DOUBLE
#!/bin/sh
mkdir helmholtz
cd helmholtz
        mkdir build
        mkdir workdir
        mkdir src
        mkdir scripts
        ls
        cp ../cudahelmf ./build
        cp ../cudahelmd ./build
        cp ../tmp.py ./scripts/
        cd workdir
        python3 ../scripts/script1.py 21 21 1
        ../build/cudahelmd config.cfg >> results_double.txt
        ../build/cudahelmf config.cfg >> results_float.txt

Для сборки и запуска Docker я использую

nvidia-docker build -t helm .
nvidia-docker run --rm -ti helm

И после запуска у меня ошибка

../build/cudahelmd: error while loading shared libraries: libcufft.so.9.1: cannot open shared object file: No such file or directory

Что я делаю не так? Это происходит из-за опции компиляции -lcufft, а докер не знает, где ее взять? А у docker нет директории / usr / local / cuda / после установки. Это кажется странным из-за того, что cuda-library-dev включает библиотеку cufft, и установка успешно завершается.

Вот версия nvcc на моем компьютере, где код был скомпилирован и предварительно протестирован.

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

И nvidia-докер версия

Docker version 19.03.3, build a872fc2f86

PS Может есть возможность скомпилировать код в докере?

1 Ответ

1 голос
/ 17 октября 2019

проблема в том, что вы запускаете многоступенчатый докер-файл без COPY от одного к другому, поэтому вы будете иметь дело только с автономным контейнером python3, который не имеет ничего из контейнера nvidia, поэтому вам нужно скопировать необходимыйтакие файлы в python контейнере:

COPY --from=0 SOURCE DEST
...