首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Nvidia-Docker中运行CUFFT例程

在Nvidia-Docker中运行CUFFT例程
EN

Stack Overflow用户
提问于 2019-10-16 22:24:35
回答 1查看 151关注 0票数 2

我是Docker的新手,尤其是Nvidia-Docker。我正在尝试将代码包装到docker容器中,并在一些主机上运行它。但显然有些地方出了问题,我无法在docker中运行我的代码。我已经安装了Nvidia-docker,Dockerfile取自here。这是我完整的docker代码

代码语言:javascript
复制
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以前是由

代码语言:javascript
复制
nvcc helm3dcudafnd.cu -o cudahelm -I/usr/local/cuda/samples/common/inc/ -lcufft -lcufftw -D DOUBLE
代码语言:javascript
复制
#!/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,我使用

代码语言:javascript
复制
nvidia-docker build -t helm .
nvidia-docker run --rm -ti helm

在运行之后,我有错误

代码语言:javascript
复制
../build/cudahelmd: error while loading shared libraries: libcufft.so.9.1: cannot open shared object file: No such file or directory

我做错了什么?这是不是因为-lcufft编译选项和docker不知道从哪里获取它而发生的?并且docker在安装后没有/usr/local/cuda/目录。这看起来很奇怪,因为cuda- library -dev包含cufft库,安装成功结束。

这是我电脑上的nvcc版本,代码是在这里编译和测试的。

代码语言:javascript
复制
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版本

代码语言:javascript
复制
Docker version 19.03.3, build a872fc2f86

附言:也许有一个选项可以在docker中编译代码?

EN

回答 1

Stack Overflow用户

发布于 2019-10-17 13:17:05

问题是你正在运行一个没有COPY的多级dockerfile文件从一个容器到另一个容器,因此你最终只能得到独立的python3容器,它没有来自nvidia容器的任何东西,所以你需要在python容器中复制所需的文件,如下所示:

代码语言:javascript
复制
COPY --from=0 SOURCE DEST
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58415644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档