Skip to content

Commit

Permalink
containers: add entire google set
Browse files Browse the repository at this point in the history
Signed-off-by: vsoch <vsoch@users.noreply.github.com>
  • Loading branch information
vsoch committed Sep 25, 2024
1 parent 4e552c9 commit 9cd7eab
Show file tree
Hide file tree
Showing 19 changed files with 2,397 additions and 3 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@ For this first stage of work, I'm going to build a ton of containers. I am scopi
## Containers

- [aws](aws): these are typically oriented to have libfabric.
- [google](google): the same, but without libfabric

All containers will also have oras for pushing and saving artifacts.
All containers also have oras for pushing and saving artifacts.

## License

Expand Down
4 changes: 2 additions & 2 deletions aws/stream/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ ENV DEBIAN_FRONTEND=noninteractive
FROM ubuntu:22.04

# Build command
# docker build -t ghcr.io/converged-computiong/ensemble-lammps:libfabric .
# docker push ghcr.io/converged-computiong/ensemble-lammps:libfabric
# docker build -t ghcr.io/converged-computing/ensemble-stream:libfabric .
# docker push ghcr.io/converged-computing/ensemble-stream:libfabric

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
Expand Down
23 changes: 23 additions & 0 deletions google/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Containers

Note that these are all CPU containers. I would not have the funds, and I doubt the cloud have the capacity, to use GPU.
I am also taking greater care in designing the layers.

### AWS

> This typically means libfabric

| Container | Dockerfile |
|---------------------------------------------------------|--------------------------------------|
| ghcr.io/converged-computing/ensemble-amg2023 | [Dockerfile](amg2023/Dockerfile) |
| ghcr.io/converged-computing/ensemble-lammps | [Dockerfile](lammps/Dockerfile) |
| ghcr.io/converged-computing/ensemble-stream | [Dockerfile](stream/Dockerfile) |
| ghcr.io/converged-computing/ensemble-kripke | [Dockerfile](kripke/Dockerfile) |
| ghcr.io/converged-computing/ensemble-laghos | [Dockerfile](laghos/Dockerfile) |
| ghcr.io/converged-computing/ensemble-minife | [Dockerfile](minife/Dockerfile) |
| ghcr.io/converged-computing/ensemble-mixbench | [Dockerfile](mixbench/Dockerfile) |
| ghcr.io/converged-computing/ensemble-mt-gemm | [Dockerfile](mt-gemm/Dockerfile) |
| ghcr.io/converged-computing/ensemble-osu | [Dockerfile](osu/Dockerfile) |
| ghcr.io/converged-computing/ensemble-quicksilver | [Dockerfile](quicksilver/Dockerfile) |
| ghcr.io/converged-computing/ensemble-stream | [Dockerfile](stream/Dockerfile) |
91 changes: 91 additions & 0 deletions google/kripke/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive

FROM ubuntu:22.04

# Build command
# docker build -t ghcr.io/converged-computing/ensemble-kripke .
# docker push ghcr.io/converged-computing/ensemble-kripke

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get -qq install -y --no-install-recommends \
apt-utils \
autotools-dev \
autoconf \
automake \
bzip2 \
build-essential \
ca-certificates \
clang \
clang-tidy \
curl \
dnsutils \
gcc \
g++ \
git \
gfortran \
jq \
libibverbs-dev \
librdmacm-dev \
libtool \
libffi-dev \
locales \
make \
pkg-config \
python3-dev \
python3-pip \
rdma-core \
sudo \
strace \
telnet \
unzip \
wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

RUN locale-gen en_US.UTF-8
ENV LANG=C.UTF-8

WORKDIR /opt
RUN wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.2.tar.gz && \
tar -xzvf openmpi-4.1.2.tar.gz && \
cd openmpi-4.1.2 && \
./configure && \
make -j 4 && make install && ldconfig

RUN export VERSION="1.1.0" && \
curl -LO "/~https://github.com/oras-project/oras/releases/download/v${VERSION}/oras_${VERSION}_linux_amd64.tar.gz" && \
mkdir -p oras-install/ && \
tar -zxf oras_${VERSION}_*.tar.gz -C oras-install/ && \
mv oras-install/oras /usr/local/bin/ && \
rm -rf oras_${VERSION}_*.tar.gz oras-install/
ENV PATH=/usr/local/pancakes/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LD_LIBRARY_PATH=/usr/local/pancakes/lib:/usr/local/lib

RUN apt-get update && apt-get install -y openssh-client openssh-server cmake && apt-get clean
RUN echo " LogLevel ERROR" >> /etc/ssh/ssh_config && \
echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config && \
echo " UserKnownHostsFile=/dev/null" >> /etc/ssh/ssh_config && \
cd /root && \
mkdir -p /run/sshd && \
ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa && chmod og+rX . && \
cd .ssh && cat id_rsa.pub > authorized_keys && chmod 644 authorized_keys
EXPOSE 22

WORKDIR /opt
COPY ./gke.cmake /opt/gke.cmake

RUN git clone /~https://github.com/LLNL/Kripke && \
cd Kripke && \
git submodule update --init --recursive && \
mkdir build && \
mv /opt/gke.cmake /opt/Kripke/host-configs/gke.cmake && \
cd /opt/Kripke/build && \
cmake -C../host-configs/gke.cmake ../ && make && \
mv /opt/Kripke/build/kripke.exe /usr/local/bin/kripke && \
rm -rf /opt/Kripke

# Put those bad bois on the path!
ENV PATH=/opt/Kripke:/opt/Kripke/build/bin:$PATH
WORKDIR /opt/Kripke
29 changes: 29 additions & 0 deletions google/kripke/gke.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
##
## Copyright (c) 2016, Lawrence Livermore National Security, LLC.
##
## Produced at the Lawrence Livermore National Laboratory.
##
## All rights reserved.
##
##

set(RAJA_COMPILER "RAJA_COMPILER_GNU" CACHE STRING "")
set(RAJA_HOST_CONFIG_LOADED On CACHE Bool "")

set(CMAKE_C_COMPILER "gcc" CACHE PATH "")
set(CMAKE_CXX_COMPILER "g++" CACHE PATH "")
set(CMAKE_LINKER "g++" CACHE PATH "")

set(CMAKE_CXX_FLAGS "" CACHE STRING "")
set(CMAKE_CXX_FLAGS_RELEASE "-O3" CACHE STRING "")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g" CACHE STRING "")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g" CACHE STRING "")

set(ENABLE_OPENMP Off CACHE BOOL "")
set(ENABLE_CHAI On CACHE BOOL "")
set(ENABLE_MPI On CACHE BOOL "")
set(ENABLE_MPI_WRAPPER Off CACHE BOOL "")

set(RAJA_HOST_CONFIG_LOADED On CACHE Bool "")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")
set(CMAKE_EXE_LINKER_FLAGS "-lstdc++ -pthread" CACHE STRING "")
115 changes: 115 additions & 0 deletions google/laghos/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
FROM ubuntu:22.04

# Build command
# docker build -t ghcr.io/converged-computing/ensemble-laghos:libfabric .
# docker push ghcr.io/converged-computing/ensemble-laghos:libfabric

# Compilers, autotools
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get -qq install -y --no-install-recommends \
apt-utils \
autotools-dev \
autoconf \
automake \
bzip2 \
build-essential \
ca-certificates \
clang \
clang-tidy \
curl \
dnsutils \
gcc \
g++ \
git \
gfortran \
jq \
libibverbs-dev \
librdmacm-dev \
libtool \
libffi-dev \
locales \
make \
pkg-config \
python3-dev \
python3-pip \
rdma-core \
sudo \
strace \
telnet \
unzip \
wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

RUN locale-gen en_US.UTF-8
ENV LANG=C.UTF-8

WORKDIR /opt
RUN git clone -b v1.21.1 /~https://github.com/ofiwg/libfabric.git /opt/libfabric && \
cd /opt/libfabric && ./autogen.sh && \
./configure --enable-efa=yes --enable-tcp=yes --enable-udp=yes --enable-sockets=yes --enable-verbs=yes --enable-shm=yes --enable-mrail=yes --enable-rxd=yes --enable-rxm=yes && \
make -j 4 && make install

RUN wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.2.tar.gz && \
tar -xzvf openmpi-4.1.2.tar.gz && \
cd openmpi-4.1.2 && \
./configure --with-ofi=/usr/local && \
make -j 4 && make install && ldconfig

# Finally, install oras for saving artifacts
RUN export VERSION="1.1.0" && \
curl -LO "/~https://github.com/oras-project/oras/releases/download/v${VERSION}/oras_${VERSION}_linux_amd64.tar.gz" && \
mkdir -p oras-install/ && \
tar -zxf oras_${VERSION}_*.tar.gz -C oras-install/ && \
mv oras-install/oras /usr/local/bin/ && \
rm -rf oras_${VERSION}_*.tar.gz oras-install/
ENV PATH=/usr/local/pancakes/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LD_LIBRARY_PATH=/usr/local/pancakes/lib:/usr/local/lib

RUN apt-get update && apt-get install -y openssh-client openssh-server cmake && apt-get clean
RUN echo " LogLevel ERROR" >> /etc/ssh/ssh_config && \
echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config && \
echo " UserKnownHostsFile=/dev/null" >> /etc/ssh/ssh_config && \
cd /root && \
mkdir -p /run/sshd && \
ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa && chmod og+rX . && \
cd .ssh && cat id_rsa.pub > authorized_keys && chmod 644 authorized_keys
EXPOSE 22

WORKDIR /opt

ENV MAKE_CXX_FLAG="MPICXX=mpic++"

# Install hypre
RUN apt-get install -y libc6-dev && \
export hypre_options="--disable-fortran --without-fei --enable-bigint" && \
wget --no-verbose /~https://github.com/hypre-space/hypre/archive/v2.31.0.tar.gz && \
tar -xzf v2.31.0.tar.gz && \
mv hypre-2.31.0 hypre && \
cd hypre/src && \
./configure ${hypre_options} CC=mpicc CXX=mpic++ && \
make -j 4

# Metis
RUN wget --no-verbose /~https://github.com/mfem/tpls/raw/gh-pages/metis-4.0.3.tar.gz && \
tar -xzf metis-4.0.3.tar.gz && \
mv metis-4.0.3 metis-4.0 && \
make -j 4 -C metis-4.0/Lib CC=mpicc OPTFLAGS="-Wno-error=implicit-function-declaration -O2"

RUN wget /~https://github.com/mfem/mfem/archive/refs/tags/v4.7.tar.gz && \
tar -xzvf v4.7.tar.gz && \
mv mfem-4.7 /opt/mfem && \
cd /opt/mfem && \
unset LD_LIBRARY_PATH && \
make config MFEM_USE_MPI=YES MPICXX=mpiCC MFEM_MPI_NP=2 MFEM_DEBUG=${DEBUG} CPPFLAGS="${CPPFLAGS}" && \
make -j 4

WORKDIR /opt
RUN wget /~https://github.com/CEED/Laghos/archive/refs/tags/v3.1.tar.gz && \
tar -xzvf v3.1.tar.gz && \
mv Laghos-3.1 /opt/laghos && \
cd /opt/laghos && \
make -j 4

WORKDIR /opt/laghos
90 changes: 90 additions & 0 deletions google/lammps/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
FROM ubuntu:22.04

# Build command
# docker build -t ghcr.io/converged-computing/ensemble-lammps .
# docker push ghcr.io/converged-computing/ensemble-lammps

# Compilers, autotools
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get -qq install -y --no-install-recommends \
apt-utils \
autotools-dev \
autoconf \
automake \
bzip2 \
build-essential \
ca-certificates \
clang \
clang-tidy \
curl \
dnsutils \
gcc \
g++ \
git \
gfortran \
jq \
libibverbs-dev \
librdmacm-dev \
libtool \
libffi-dev \
locales \
make \
pkg-config \
python3-dev \
python3-pip \
rdma-core \
sudo \
strace \
telnet \
unzip \
wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

RUN locale-gen en_US.UTF-8
ENV LANG=C.UTF-8

WORKDIR /opt
RUN wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.2.tar.gz && \
tar -xzvf openmpi-4.1.2.tar.gz && \
cd openmpi-4.1.2 && \
./configure && \
make -j 4 && make install && ldconfig

# Finally, install oras for saving artifacts
RUN export VERSION="1.1.0" && \
curl -LO "/~https://github.com/oras-project/oras/releases/download/v${VERSION}/oras_${VERSION}_linux_amd64.tar.gz" && \
mkdir -p oras-install/ && \
tar -zxf oras_${VERSION}_*.tar.gz -C oras-install/ && \
mv oras-install/oras /usr/local/bin/ && \
rm -rf oras_${VERSION}_*.tar.gz oras-install/
ENV PATH=/usr/local/pancakes/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LD_LIBRARY_PATH=/usr/local/pancakes/lib:/usr/local/lib

RUN apt-get update && apt-get install -y openssh-client openssh-server cmake && apt-get clean
RUN echo " LogLevel ERROR" >> /etc/ssh/ssh_config && \
echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config && \
echo " UserKnownHostsFile=/dev/null" >> /etc/ssh/ssh_config && \
cd /root && \
mkdir -p /run/sshd && \
ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa && chmod og+rX . && \
cd .ssh && cat id_rsa.pub > authorized_keys && chmod 644 authorized_keys
EXPOSE 22

WORKDIR /opt
RUN mkdir lammps && \
cd lammps && \
git init && \
git remote add origin /~https://github.com/lammps/lammps.git && \
git fetch --depth 1 origin a8687b53724b630fb5f454c8d7be9f9370f8bb3b && \
git checkout FETCH_HEAD && \
mkdir build && \
cd build && \
cmake ../cmake -D PKG_REAXFF=yes -D BUILD_MPI=yes -D PKG_OPT=yes -D FFT=FFTW3 \
-D CMAKE_INSTALL_PREFIX=/usr \
&& make && make install

WORKDIR /code
RUN cp -R /opt/lammps/examples/reaxff/HNS/* /code/ && \
chown -R 1000 /code /opt/lammps
Loading

0 comments on commit 9cd7eab

Please sign in to comment.