2018년 8월 10일 금요일

AC922 에서 cuda를 사용하는Docker image 만들기 (RHEL 7.5, CUDA 9.2 runtime)

Docker hub 에 가보면, NVIDIA 에서 각각의 플랫폼 별로 사용할 수 있도록 cuda 환경의 Docker image를 미리 만들어서 올려두었습니다.

아래 경로로 가보시면 Minsky, AC922 서버에서 사용 가능하도록 미리 cuda를 버전별로 설치해놓은 ppc64le용 Docker 이미지들이 보입니다.
https://hub.docker.com/r/nvidia/cuda-ppc64le/

다만 위 링크에서는 Ubuntu와 CentOS에 대해서만 Docker Image를 제공하므로, Redhat 7.5 Base 에서 CUDA 9.2 버전의 base, runtime 관련 패키지를 설치하여 새로운 Docker image 를 만들었습니다. 아래는 Dockerfile 입니다. 미리 RHEL 7.5 base 를 Docker image 형태로 만들어두었으며, Host 서버에서는 RHEL subscription이 등록되어 있어야 합니다. (RHEL에서 제공하는 각 rpms 패키지들을 repository로 미리 등록해두고 사용하기 위해서입니다.)

# vi Dockerfile

#FROM registry.access.redhat.com/rhel7.5:latest
FROM brlee/rhel7.5_base_ppc64le:latest

RUN wget -P /docker http://developer.download.nvidia.com/compute/cuda/repos/rhel7/ppc64le/cuda-repo-rhel7-9.2.148-1.ppc64le.rpm
RUN rpm -i /docker/cuda-repo-rhel7-9.2.148-1.ppc64le.rpm
RUN yum repolist

# Update image
# 'local' means rhel local repository
# To use these repos below in building process, you must set up the RHEL subscription and enable these repos on your host system first.
RUN yum-config-manager --enable local
RUN yum-config-manager --enable rhel-7-for-power-9-rpms
RUN yum-config-manager --enable rhel-7-for-power-9-optional-rpms
RUN yum-config-manager --enable rhel-7-for-power-9-extras-rpms

ENV CUDA_VERSION 9.2.148
ENV CUDA_PKG_VERSION $CUDA_VERSION-1
ENV CUDA_PKG_INSTALL_VERSION 9-2

RUN yum install -y \
        cuda-cudart-$CUDA_PKG_INSTALL_VERSION && \
    ln -s cuda-9.2 /usr/local/cuda

RUN yum install -y \
        cuda-libraries-$CUDA_PKG_INSTALL_VERSION \
        cuda-nvtx-$CUDA_PKG_INSTALL_VERSION

#RUN yum install -y \
#        cuda-libraries-dev-$CUDA_PKG_INSTALL_VERSION \
#        cuda-nvml-dev-$CUDA_PKG_INSTALL_VERSION \
#        cuda-minimal-build-$CUDA_PKG_INSTALL_VERSION \
#        cuda-command-line-tools-$CUDA_PKG_INSTALL_VERSION && \
#    rm -rf /var/cache/yum/*

# nvidia-docker 1.0
LABEL com.nvidia.volumes.needed="nvidia_driver"
LABEL com.nvidia.cuda.version="${CUDA_VERSION}"

RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \
    echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf

ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64/stubs

# nvidia-container-runtime
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
ENV NVIDIA_REQUIRE_CUDA "cuda>=9.2"

RUN yum clean all &&  rm -rf /var/cache/yum/*


[root@p57a22 files]# docker build -t brlee/ppc64le_cuda:rhel7.5_cuda9.2_runtime .
Sending build context to Docker daemon 3.255 GB
Step 1/23 : FROM brlee/rhel7.5_base_ppc64le:latest
 ---> 42a89e2543ed

[root@p57a22 files]# docker tag f32309318e81 brlee/ppc64le_cuda:latest
[root@p57a22 files]# docker push brlee/ppc64le_cuda:latest
[root@p57a22 files]# docker push brlee/ppc64le_cuda:rhel7.5_cuda9.2_runtime

아래의 명령어로 RHEL 7.5, Cuda9.2 runtime을 제공하는 Docker image를 받아서 사용하실 수 있습니다.

# docker pull brlee/rhel7.5_base_ppc64le:latest
# docker pull brlee/ppc64le_cuda:rhel7.5_cuda9.2_runtime

댓글 없음:

댓글 쓰기