forked from deepmodeling/abacus-develop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.intel
50 lines (43 loc) · 3.36 KB
/
Dockerfile.intel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
FROM debian:bullseye-slim
RUN apt-get update && apt-get install -y bc cmake git gnupg gcc g++ python3 sudo wget vim unzip
# Following steps by https://software.intel.com/content/www/us/en/develop/documentation/installation-guide-for-intel-oneapi-toolkits-linux/top/installation/install-using-package-managers/apt.html .
RUN cd /tmp && \
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB && \
apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB && \
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB && \
echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
# To save disk space, only install the required components, but not the whole intel-hpckit.
RUN apt-get update --allow-unauthenticated \
&& apt-get install -y \
intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic \
intel-oneapi-compiler-fortran \
intel-oneapi-mkl-devel \
intel-oneapi-mpi-devel
# These environment variables are the most essential part generated by `source /opt/intel/oneapi/setvars.sh`.
# It is recommended to do it again if this docker image is used for development.
ENV I_MPI_ROOT=/opt/intel/oneapi/mpi/latest \
LIBRARY_PATH=/opt/intel/oneapi/tbb/latest/env/../lib/intel64/gcc4.8:/opt/intel/oneapi/mpi/latest//libfabric/lib:/opt/intel/oneapi/mpi/latest//lib/release:/opt/intel/oneapi/mpi/latest//lib:/opt/intel/oneapi/mkl/latest/lib/intel64:/opt/intel/oneapi/compiler/latest/linux/compiler/lib/intel64_lin:/opt/intel/oneapi/compiler/latest/linux/lib \
LD_LIBRARY_PATH=/opt/intel/oneapi/tbb/latest/env/../lib/intel64/gcc4.8:/opt/intel/oneapi/mpi/latest//libfabric/lib:/opt/intel/oneapi/mpi/latest//lib/release:/opt/intel/oneapi/mpi/latest//lib:/opt/intel/oneapi/mkl/latest/lib/intel64:/opt/intel/oneapi/debugger/10.1.2/gdb/intel64/lib:/opt/intel/oneapi/debugger/10.1.2/libipt/intel64/lib:/opt/intel/oneapi/debugger/10.1.2/dep/lib:/opt/intel/oneapi/compiler/latest/linux/lib:/opt/intel/oneapi/compiler/latest/linux/lib/x64:/opt/intel/oneapi/compiler/latest/linux/lib/emu:/opt/intel/oneapi/compiler/latest/linux/compiler/lib/intel64_lin \
PATH=/opt/intel/oneapi/mpi/latest//libfabric/bin:/opt/intel/oneapi/mpi/latest//bin:/opt/intel/oneapi/mkl/latest/bin/intel64:/opt/intel/oneapi/dev-utilities/latest/bin:/opt/intel/oneapi/debugger/10.1.2/gdb/intel64/bin:/opt/intel/oneapi/compiler/latest/linux/bin/intel64:/opt/intel/oneapi/compiler/latest/linux/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
MKLROOT=/opt/intel/oneapi/mkl/latest \
I_MPI_ROOT=/opt/intel/oneapi/mpi/latest
# Using the Intel Compilers with mpi wrapper.
# Further test on oneAPI Compilers needed: icx, icpx, ifx
ENV CC=/opt/intel/oneapi/mpi/latest/bin/mpiicc \
CXX=/opt/intel/oneapi/mpi/latest/bin/mpiicpc \
FC=/opt/intel/oneapi/mpi/latest/bin/mpiifort
SHELL ["/bin/bash", "-c"]
RUN source /opt/intel/oneapi/setvars.sh \
&& cd /tmp \
&& wget https://elpa.mpcdf.mpg.de/software/tarball-archive/Releases/2021.05.002/elpa-2021.05.002.tar.gz \
&& tar xzf elpa-2021.05.002.tar.gz && rm elpa-2021.05.002.tar.gz \
&& cd elpa-2021.05.002 && mkdir build && cd build \
&& ../configure FCFLAGS="-mkl=cluster" \
&& make -j8 \
&& make PREFIX=/usr/local install \
&& ln -s /usr/local/include/elpa-2021.05.002/elpa /usr/local/include/ \
&& cd /tmp && rm -rf elpa-2021.05.002
RUN cd /tmp \
&& git clone https://github.com/USCiLab/cereal.git \
&& cp -r cereal/include /usr/local \
&& rm -rf cereal