Dockerfile 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. # To build: $ sudo docker build -t myimage:1.0 .
  2. # To run: $ sudo docker run --rm -it --gpus=all -p 8888:8888 myimage:1.0
  3. # To run Jupyter inside the container: $ jupyter notebook --ip 0.0.0.0 --port 8888 --no-browser --allow-root
  4. FROM nvcr.io/hpc/pgi-compilers:ce
  5. RUN apt-get update && \
  6. apt-get dist-upgrade -y && \
  7. apt-get install --no-install-recommends -y \
  8. openssh-server m4 vim-nox emacs-nox nano zip && \
  9. rm -rf /var/lib/apt/cache/*
  10. #useradd -k /etc/skel -m -s /usr/local/bin/entrypoint.sh -p openacc openacc && \
  11. #echo 'openacc:openacc' | chpasswd && \
  12. #mkdir /var/run/sshd
  13. RUN apt-get install --no-install-recommends -y python3 python3-pip
  14. RUN pip3 install --upgrade pip
  15. RUN apt-get install --no-install-recommends -y python3-setuptools
  16. RUN apt-get install --no-install-recommends -y git-core
  17. RUN apt-get install --no-install-recommends -y openssh-client
  18. RUN apt-get install --no-install-recommends -y inotify-tools
  19. RUN pip3 install jupyter
  20. RUN pip3 install netcdf4
  21. RUN apt-get install --no-install-recommends -y curl
  22. RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
  23. RUN apt-get install --no-install-recommends -y git-lfs
  24. RUN git lfs install
  25. # NVIDIA Nsight Systems
  26. RUN apt-get update -y && \
  27. DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
  28. apt-transport-https \
  29. ca-certificates \
  30. gnupg \
  31. wget && \
  32. echo "deb https://developer.download.nvidia.com/devtools/repo-deb/x86_64/ /" >> /etc/apt/sources.list.d/nsight.list && \
  33. apt-get update -y
  34. RUN apt-get update -y
  35. # NVIDIA Nsight Systems 2020.3.1
  36. RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends nsight-systems-2020.3.1
  37. #RUN apt-get update && apt-get install -y --no-install-recommends && \
  38. # echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list && \
  39. # echo "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/nvidia-ml.list
  40. # NVIDIA Nsight Systems 2019.3.7
  41. #RUN apt-get update -y && \
  42. # apt-get install -y cuda-nsight-systems-10-1 nsight-systems-2019.3.7
  43. RUN apt-get install --no-install-recommends -y build-essential
  44. ##### START : netcdf installation #####
  45. RUN cd /usr && \
  46. mkdir netcdf && \
  47. cd netcdf && \
  48. mkdir WORK_DIR && \
  49. cd /usr/netcdf/WORK_DIR && \
  50. mkdir zlib hdf5 netCDF netCDF-C++ netCDF-Fortran
  51. RUN cd /usr/netcdf/WORK_DIR/zlib && \
  52. wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/zlib-1.2.8.tar.gz && \
  53. tar -xvzf zlib-1.2.8.tar.gz
  54. RUN cd /usr/netcdf/WORK_DIR/hdf5 && \
  55. wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/hdf5-1.8.12.tar.gz && \
  56. tar -xvzf hdf5-1.8.12.tar.gz
  57. RUN cd /usr/netcdf/WORK_DIR/netCDF && \
  58. wget ftp://ftp.unidata.ucar.edu/pub/netcdf/old/netcdf-4.3.0.tar.gz && \
  59. tar -xvzf netcdf-4.3.0.tar.gz
  60. RUN cd /usr/netcdf/WORK_DIR/netCDF-C++ && \
  61. wget https://github.com/Unidata/netcdf-cxx4/archive/v4.2.1.tar.gz && \
  62. tar -xvzf v4.2.1.tar.gz
  63. RUN cd /usr/netcdf/WORK_DIR/netCDF-Fortran && \
  64. wget ftp://ftp.unidata.ucar.edu/pub/netcdf/old/netcdf-fortran-4.2.tar.gz && \
  65. tar -xvzf netcdf-fortran-4.2.tar.gz
  66. ENV CC=pgcc CFLAGS="-O tp=p7-64" CXX=pgc++ CXXFLAGS="-O tp=p7-64" FC=pgfortran FCFLAGS="-O tp=p7-64" F77=pgfortran FFLAGS="-O tp=p7-64" CPPFLAGS="-DpgiFortran"
  67. RUN mkdir -p /usr/local && \
  68. mkdir -p /usr/local/bin && \
  69. mkdir -p /usr/local/include && \
  70. mkdir -p /usr/local/lib
  71. ENV PATH="$PATH:/usr/local/bin:/opt/anaconda3/bin:/usr/bin" LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" LIBRARY_PATH="$LIBRARY_PATH:/usr/local/lib" CPATH="$CPATH:/usr/local/include"
  72. # zlib
  73. RUN cd /usr/netcdf/WORK_DIR/zlib/zlib-1.2.8 && \
  74. ./configure --prefix=/usr/local && \
  75. make && \
  76. make install
  77. # hdf5
  78. RUN cd /usr/netcdf/WORK_DIR/hdf5/hdf5-1.8.12 && \
  79. unset CPP && \
  80. ./configure --prefix=/usr/local --enable-fortran --enable-c++ && \
  81. make && \
  82. make install
  83. # netcdf
  84. RUN export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" && \
  85. export CFLAGS="-O tp=p7-64 -I /usr/local/include" && \
  86. export LDFLAGS="-L/usr/local/lib -L/usr/local/lib" && \
  87. cd /usr/netcdf/WORK_DIR/netCDF/netcdf-4.3.0 && \
  88. ./configure --prefix=/usr/local && \
  89. make && \
  90. make install
  91. # netcdf-c++
  92. RUN export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/hdf5/lib:/usr/local/lib" && \
  93. export CFLAGS="-O tp=p7-64 -I /usr/local/include -I /usr/local/include" && \
  94. export CPPFLAGS="-DpgiFortran -I /usr/local/include -I /usr/local/include" && \
  95. export LDFLAGS="-L/usr/local/lib -L/usr/local/lib" && \
  96. cd /usr/netcdf/WORK_DIR/netCDF-C++/netcdf-cxx4-4.2.1 && \
  97. ./configure --prefix=/usr/local && \
  98. make && \
  99. make install
  100. # netcdf-fortran
  101. RUN export CFLAGS="-O tp=p7-64 -I /usr/local/include -I /usr/local/include" && \
  102. export FCFLAGS="-O tp=p7-64 -I /usr/local/include -I /usr/local/include" && \
  103. export FFLAGS="-O tp=p7-64 -I /usr/local/include -I /usr/local/include" && \
  104. export CPPFLAGS="-DpgiFortran -I /usr/local/include -I /usr/local/include" && \
  105. unset LDFLAGS && \
  106. cd /usr/netcdf/WORK_DIR/netCDF-Fortran/netcdf-fortran-4.2 && \
  107. ./configure --prefix=/usr/local && \
  108. make && \
  109. make install
  110. ##### END : netcdf installation #####
  111. RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
  112. bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/anaconda3 && \
  113. rm Miniconda3-latest-Linux-x86_64.sh && \
  114. /opt/anaconda3/bin/conda install -y -q netcdf4
  115. ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/pgi/linux86-64-llvm/2019/cuda/10.1/lib64/"
  116. ADD miniapps-profiler /labs