@@ -35,127 +35,12 @@ RUN wget -q https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-
3535 unzip -q /tmp/libtorch.zip -d /opt && rm -f /tmp/libtorch.zip
3636ENV CMAKE_PREFIX_PATH=/opt/libtorch/share/cmake:${CMAKE_PREFIX_PATH}
3737
38-
39- ###### PEXSI PART: pexsi and gklib and metis and parmetis and superlu_dist
40- ENV GKLIB_VERSION="master"
41- ENV METIS_VERSION="master"
42- ENV PARMETIS_VERSION="main"
43- ENV SUPERLU_DIST_VERSION=7.2.0
44- ENV PEXSI_VERSION="master"
45- ENV GKLIB_ROOT=/usr/local/gklib-${GKLIB_VERSION}
46- ENV METIS32_ROOT=/usr/local/metis32-${METIS_VERSION}
47- ENV PARMETIS32_ROOT=/usr/local/parmetis32-${PARMETIS_VERSION}
48- ENV PEXSI32_ROOT=/usr/local/pexsi32-${PEXSI_VERSION}
49- ENV SUPERLU_DIST32_ROOT=/usr/local/superlu_dist32-${SUPERLU_DIST_VERSION}
50-
51- # 2. install GKlib
52- RUN wget --no-check-certificate --quiet --tries=3 --timeout=30 \
53- https://codeload.github.com/KarypisLab/GKlib/zip/refs/heads/${GKLIB_VERSION} \
54- -O GKlib-${GKLIB_VERSION}.zip && \
55- unzip GKlib-${GKLIB_VERSION}.zip && \
56- cd GKlib-${GKLIB_VERSION} && \
57- make config shared=1 prefix=${GKLIB_ROOT} openmp=set && \
58- make -j $(nproc) && \
59- make install && \
60- ls ${GKLIB_ROOT}/lib && \
61- cp -n ${GKLIB_ROOT}/lib/libGKlib.so.0 ${GKLIB_ROOT}/lib/libGKlib.so || true && \
62- cd / && rm -rf GKlib-${GKLIB_VERSION} GKlib-${GKLIB_VERSION}.zip
63- #.so file CANNOT be found otherwise.
64- # 2. install METIS
65- RUN export LD_LIBRARY_PATH=${GKLIB_ROOT}/lib:${LD_LIBRARY_PATH} && \
66- wget --no-check-certificate --quiet --tries=3 --timeout=30 \
67- https://codeload.github.com/KarypisLab/METIS/zip/refs/heads/${METIS_VERSION} \
68- -O METIS-${METIS_VERSION}.zip && \
69- unzip METIS-${METIS_VERSION}.zip && \
70- cd METIS-${METIS_VERSION} && \
71- make config shared=1 prefix=${METIS32_ROOT} gklib_path=${GKLIB_ROOT} && \
72- make -j $(nproc) && \
73- make install && \
74- cd / && rm -rf METIS-${METIS_VERSION} METIS-${METIS_VERSION}.zip
75-
76- # 3. install ParMETIS
77- RUN export LD_LIBRARY_PATH=${METIS32_ROOT}/lib:${GKLIB_ROOT}/lib:${LD_LIBRARY_PATH} && \
78- wget --no-check-certificate --quiet --tries=3 --timeout=30 \
79- https://codeload.github.com/KarypisLab/ParMETIS/zip/refs/heads/${PARMETIS_VERSION} \
80- -O ParMETIS-${PARMETIS_VERSION}.zip && \
81- unzip ParMETIS-${PARMETIS_VERSION}.zip && \
82- cd ParMETIS-${PARMETIS_VERSION} && \
83- make config shared=1 prefix=${PARMETIS32_ROOT} gklib_path=${GKLIB_ROOT} metis_path=${METIS32_ROOT} && \
84- make -j $(nproc) && \
85- make install && \
86- cd / && rm -rf ParMETIS-${PARMETIS_VERSION} ParMETIS-${PARMETIS_VERSION}.zip
87-
88- # 4. install SuperLU_DIST
89- RUN wget --no-check-certificate --quiet --tries=3 --timeout=30 \
90- https://codeload.github.com/xiaoyeli/superlu_dist/tar.gz/refs/tags/v${SUPERLU_DIST_VERSION} \
91- -O v${SUPERLU_DIST_VERSION}.tar.gz && \
92- tar -xzf v${SUPERLU_DIST_VERSION}.tar.gz && \
93- cd superlu_dist-${SUPERLU_DIST_VERSION} && \
94- mkdir build && cd build && \
95- cmake .. \
96- -DTPL_ENABLE_PARMETISLIB=ON \
97- -DTPL_PARMETIS_LIBRARIES="${PARMETIS32_ROOT}/lib/libparmetis.so;${METIS32_ROOT}/lib/libmetis.so;${GKLIB_ROOT}/lib/libGKlib.so" \
98- -DTPL_PARMETIS_INCLUDE_DIRS="${PARMETIS32_ROOT}/include;${METIS32_ROOT}/include;${GKLIB_ROOT}/include" \
99- -DTPL_ENABLE_INTERNAL_BLASLIB=OFF \
100- -DTPL_ENABLE_LAPACKLIB=ON \
101- -DTPL_ENABLE_COMBBLASLIB=OFF \
102- -DTPL_ENABLE_CUDALIB=OFF \
103- -Denable_complex16=ON \
104- -DXSDK_INDEX_SIZE=32 \
105- -DBUILD_SHARED_LIBS=ON \
106- -DCMAKE_INSTALL_PREFIX=${SUPERLU_DIST32_ROOT} \
107- -DCMAKE_C_FLAGS="-O3 -fopenmp" \
108- -DCMAKE_CXX_FLAGS="-O3 -fopenmp" \
109- -DXSDK_ENABLE_Fortran=ON \
110- -DCMAKE_Fortran_COMPILER=mpiifx && \
111- make -j $(nproc) && \
112- make install && \
113- cd / && rm -rf superlu_dist-${SUPERLU_DIST_VERSION} v${SUPERLU_DIST_VERSION}.tar.gz
114-
115- ### -DCMAKE_C_COMPILER=mpiicc \
116- ### -DCMAKE_CXX_COMPILER=mpiicpc \
117- ### -DCMAKE_CUDA_COMPILER=nvcc \
118-
119- # 5. install PEXSI
120- RUN export LD_LIBRARY_PATH=${SUPERLU_DIST32_ROOT}/lib:${METIS32_ROOT}/lib:${PARMETIS32_ROOT}/lib:${GKLIB_ROOT}/lib:${LD_LIBRARY_PATH} && \
121- export LIBRARY_PATH=${SUPERLU_DIST32_ROOT}/lib:${METIS32_ROOT}/lib:${PARMETIS32_ROOT}/lib:${GKLIB_ROOT}/lib:${LIBRARY_PATH} && \
122- export PKG_CONFIG_PATH=${SUPERLU_DIST32_ROOT}/lib/pkgconfig:${METIS32_ROOT}/lib/pkgconfig:${PARMETIS32_ROOT}/lib/pkgconfig:${GKLIB_ROOT}/lib/pkgconfig:${PKG_CONFIG_PATH} && \
123- export CPATH=${SUPERLU_DIST32_ROOT}/include:${PARMETIS32_ROOT}/include:${METIS32_ROOT}/include:${GKLIB_ROOT}/include:${CMAKE_PREFIX_PATH} && \
124- export CMAKE_PREFIX_PATH=${SUPERLU_DIST32_ROOT}:${PARMETIS32_ROOT}:${METIS32_ROOT}:${GKLIB_ROOT}:${CMAKE_PREFIX_PATH} && \
125- wget --no-check-certificate --quiet --tries=3 --timeout=30 \
126- https://codeload.github.com/MCresearch/pexsi/tar.gz/refs/heads/${PEXSI_VERSION} \
127- -O pexsi-${PEXSI_VERSION}.tar.gz && \
128- tar -xzf pexsi-${PEXSI_VERSION}.tar.gz && \
129- cd pexsi-${PEXSI_VERSION} && \
130- sed -i 's/^add_pexsi_f_example_exe/# add_pexsi_f_example_exe/g' fortran/CMakeLists.txt && \
131- sed -i 's/^add_pexsi_example_exe/# add_pexsi_example_exe/g' examples/CMakeLists.txt && \
132- sed -i 's/add_executable/# add_executable/g' fortran/CMakeLists.txt && \
133- sed -i 's/add_executable/# add_executable/g' examples/CMakeLists.txt && \
134- mkdir build && cd build && \
135- cmake .. \
136- -DCMAKE_INSTALL_PREFIX=${PEXSI32_ROOT} \
137- -DPEXSI_ENABLE_OPENMP=ON \
138- -DPEXSI_ENABLE_FORTRAN=OFF && \
139- make pexsi -j $(nproc) && \
140- make install && \
141- cd / && rm -rf pexsi-${PEXSI_VERSION} pexsi-${PEXSI_VERSION}.tar.gz
142-
143- ENV LD_LIBRARY_PATH=${GKLIB_ROOT}/lib:${METIS32_ROOT}/lib:${PARMETIS32_ROOT}/lib:${SUPERLU_DIST32_ROOT}/lib:${PEXSI32_ROOT}/lib:${LD_LIBRARY_PATH}
144- ENV PKG_CONFIG_PATH=${GKLIB_ROOT}/lib/pkgconfig:${METIS32_ROOT}/lib/pkgconfig:${PARMETIS32_ROOT}/lib/pkgconfig:${SUPERLU_DIST32_ROOT}/lib/pkgconfig:${PEXSI32_ROOT}/lib/pkgconfig:${PKG_CONFIG_PATH}
145- ENV CPATH=${GKLIB_ROOT}/include:${METIS32_ROOT}/include:${PARMETIS32_ROOT}/include:${SUPERLU_DIST32_ROOT}/include:${PEXSI32_ROOT}/include:${CPATH}
146- ENV CMAKE_PREFIX_PATH=${PEXSI32_ROOT}:${SUPERLU_DIST32_ROOT}:${PARMETIS32_ROOT}:${METIS32_ROOT}:${GKLIB_ROOT}:${CMAKE_PREFIX_PATH}
147-
148- ### -DCMAKE_C_COMPILER=mpiicc \
149- ### -DCMAKE_CXX_COMPILER=mpiicpc \
150- ###### END of PEXSI PART
151-
15238# Clone and build abacus (optional during image build; keep for CI image)
15339ADD https://api.github.com/repos/deepmodeling/abacus-develop/git/refs/heads/develop /dev/null
15440RUN cd /tmp && git clone https://github.com/deepmodeling/abacus-develop.git --depth 1 && \
15541 cd abacus-develop && \
15642 cmake -B build \
15743 -DENABLE_MLALGO=ON \
158- -DENABLE_PEXSI=ON \
15944 -DENABLE_LIBXC=ON \
16045 -DENABLE_LIBRI=ON \
16146 -DENABLE_RAPIDJSON=ON \
0 commit comments