|
4 | 4 | # architectures using GCC compilers and OpenMPI. |
5 | 5 | ############################################################## |
6 | 6 |
|
7 | | -ARG OMPI_BRANCH="v4.1.4" |
8 | | - |
9 | 7 | # Base image |
10 | | -FROM ubuntu:22.04 as base |
| 8 | +FROM ubuntu:22.04 AS base |
| 9 | + |
| 10 | +ARG gcc="" |
11 | 11 |
|
12 | | -ENV DEBIAN_FRONTEND noninteractive |
| 12 | +ENV DEBIAN_FRONTEND=noninteractive |
13 | 13 |
|
14 | 14 | # Install python |
15 | 15 | RUN apt-get update && \ |
16 | | - apt-get install -y dh-autoreconf python3-venv python3-dev python3-pip |
| 16 | + apt-get install -y software-properties-common dh-autoreconf python3-venv python3-dev python3-pip |
17 | 17 |
|
18 | 18 | # Install for basic base not containing it |
19 | | -RUN apt-get install -y vim wget git flex libnuma-dev tmux \ |
20 | | - numactl hwloc curl \ |
| 19 | +RUN apt-get install -y wget flex libnuma-dev hwloc curl cmake git \ |
21 | 20 | autoconf libtool build-essential procps software-properties-common |
22 | 21 |
|
23 | | -# Install tmpi |
24 | | -RUN curl https://raw.githubusercontent.com/Azrael3000/tmpi/master/tmpi -o /usr/local/bin/tmpi |
25 | | - |
26 | | -# Install OpenGL library, necessary for the installation of GemPy |
27 | | -RUN apt-get install -y libgl1-mesa-glx |
28 | | - |
29 | | -RUN apt-get clean && apt-get autoclean && apt-get autoremove -y && \ |
30 | | - rm -rf /var/lib/apt/lists/* |
31 | | - |
32 | | -EXPOSE 8888 |
33 | | -CMD ["/bin/bash"] |
34 | | - |
35 | | -############################################################## |
36 | | -# GCC standard image |
37 | | -############################################################## |
38 | | -FROM base as gcc |
39 | | - |
40 | | -# Install gcc 13 for better hardware and software support |
41 | | -RUN add-apt-repository ppa:ubuntu-toolchain-r/test -y && apt update && \ |
42 | | - apt install gcc-13 g++-13 -y && \ |
43 | | - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100 && \ |
44 | | - update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 100 |
| 22 | +# Install gcc |
| 23 | +RUN if [ -n "$gcc" ]; then \ |
| 24 | + apt-get install libgmp-dev libmpc-dev libmpfr-dev libisl-dev binutils texinfo -y && \ |
| 25 | + cd /tmp && mkdir gcc && \ |
| 26 | + git clone git://gcc.gnu.org/git/gcc.git gcc && \ |
| 27 | + cd gcc && git checkout releases/gcc-${gcc} && \ |
| 28 | + mkdir build && cd build && \ |
| 29 | + ../configure --prefix=/opt/gcc-${gcc} --enable-languages=c,c++,fortran --disable-multilib \ |
| 30 | + --enable-shared --enable-lto --enable-libstdcxx-time=yes --enable-libgomp && \ |
| 31 | + make -j $(nproc) && make install-strip && \ |
| 32 | + # Update alternatives |
| 33 | + update-alternatives --install /usr/bin/gcc gcc /opt/gcc-${gcc}/bin/gcc 60 && \ |
| 34 | + update-alternatives --install /usr/bin/g++ g++ /opt/gcc-${gcc}/bin/g++ 60 && \ |
| 35 | + update-alternatives --install /usr/bin/gfortran gfortran /opt/gcc-${gcc}/bin/gfortran 60 && \ |
| 36 | + rm -rf /tmp/gcc; \ |
| 37 | + fi; |
45 | 38 |
|
46 | | -ARG OMPI_BRANCH="v4.1.4" |
| 39 | +ARG OMPI_BRANCH="v5.0.x" |
47 | 40 | # Install OpenMPI |
48 | | -RUN mkdir -p /deps && mkdir -p /opt/openmpi && cd /deps && \ |
| 41 | +RUN cd /tmp && mkdir openmpi && \ |
49 | 42 | git clone --depth 1 --recursive --branch ${OMPI_BRANCH} https://github.com/open-mpi/ompi.git openmpi && \ |
50 | 43 | cd openmpi && ./autogen.pl && \ |
51 | 44 | mkdir build && cd build && \ |
52 | 45 | ../configure --prefix=/opt/openmpi/ \ |
| 46 | + --disable-mpi-fortran \ |
53 | 47 | --enable-mca-no-build=btl-uct --enable-mpi1-compatibility && \ |
54 | 48 | make -j ${nproc} && \ |
55 | 49 | make install && \ |
56 | | - cd /deps && rm -rf /deps/openmpi |
| 50 | + cd /tmp && rm -rf /tmp/openmpi |
57 | 51 |
|
58 | 52 | # Set OpenMPI path |
59 | 53 | ENV PATH=${PATH}:/opt/openmpi/bin |
60 | | -ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/openmpi/lib |
| 54 | +ENV LD_LIBRARY_PATH=/opt/openmpi/lib |
| 55 | + |
| 56 | +# Cleanup |
| 57 | +RUN apt-get clean && apt-get autoclean && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* |
| 58 | + |
| 59 | +EXPOSE 8888 |
| 60 | +CMD ["/bin/bash"] |
| 61 | + |
| 62 | +############################################################## |
| 63 | +# GCC standard image |
| 64 | +############################################################## |
| 65 | +FROM base AS gcc |
61 | 66 |
|
62 | 67 | # Env vars defaults |
63 | 68 | ENV DEVITO_ARCH="gcc" |
|
0 commit comments