Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 13 additions & 14 deletions scripts/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
FROM ubuntu:20.04
FROM ubuntu:24.04


#For OneAPI compilers, the compilers must be added to the builders path
#FROM intel/oneapi-basekit:devel-ubuntu18.04
Expand All @@ -21,19 +22,17 @@ RUN apt-get update -y && apt-get install -y \
automake \
libtool \
flex \
python \
libhwloc-dev

#Packages added on Travis
RUN apt-get install -y libev-libevent-dev \
python3 \
libhwloc-dev \
libev-libevent-dev \
libev-dev \
mpich

# Build Libevent
WORKDIR $SOS_INSTALL
RUN wget -c https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gz
RUN tar -xzvf libevent-2.1.10-stable.tar.gz
WORKDIR libevent-2.1.10-stable
WORKDIR $SOS_INSTALL/libevent-2.1.10-stable
RUN ./autogen.sh
RUN ./configure --prefix=$SOS_INSTALL/libevent-2.1.10-stable/install
RUN make clean all install
Expand All @@ -42,15 +41,15 @@ RUN make clean all install
WORKDIR $SOS_INSTALL
RUN wget -c https://www.mpich.org/static/downloads/4.0/hydra-4.0.tar.gz
RUN tar -xzvf hydra-4.0.tar.gz
WORKDIR hydra-4.0
WORKDIR $SOS_INSTALL/hydra-4.0
RUN ./autogen.sh
RUN ./configure --prefix=$SOS_INSTALL/hydra-4.0/install
RUN make all install

# Build PMIx
WORKDIR $SOS_INSTALL
RUN git clone -b v4.1.1rc6 --depth 10 https://github.com/pmix/pmix pmix
WORKDIR pmix
WORKDIR $SOS_INSTALL/pmix
RUN ./autogen.pl
RUN ./configure --prefix=$SOS_INSTALL/pmix/install --with-libevent=$SOS_INSTALL/libevent-2.1.10-stable/install --without-libev --disable-debug CFLAGS=-O3 --disable-shared --enable-static
RUN make -j
Expand All @@ -59,7 +58,7 @@ RUN make install
# Build PRRTE
WORKDIR $SOS_INSTALL
RUN git clone -b v2.0.0 --depth 10 https://github.com/pmix/prrte prrte
WORKDIR prrte
WORKDIR $SOS_INSTALL/prrte
RUN ./autogen.pl
RUN ./configure --prefix=$SOS_INSTALL/prrte/install --with-pmix=$SOS_INSTALL/pmix/install --without-slurm --with-libevent=$SOS_INSTALL/libevent-2.1.10-stable/install --without-libev --disable-shared --enable-static
RUN make -j
Expand All @@ -68,7 +67,7 @@ RUN make install
# Build Libfabric
WORKDIR $SOS_INSTALL
RUN git clone -b v1.7.x --depth 10 https://github.com/ofiwg/libfabric.git libfabric
WORKDIR libfabric
WORKDIR $SOS_INSTALL/libfabric
RUN ./autogen.sh
# To build basic Libfabric
RUN ./configure --prefix=$SOS_INSTALL/libfabric/install
Expand All @@ -79,8 +78,8 @@ RUN make install

# Build Portals 4
WORKDIR $SOS_INSTALL
RUN git clone --depth 10 https://github.com/regrant/portals4.git portals4
WORKDIR portals4
RUN git clone --depth 10 https://github.com/sandialabs/portals4.git portals4
Comment thread
shivnshshrma marked this conversation as resolved.
WORKDIR $SOS_INSTALL/portals4
RUN ./autogen.sh
RUN ./configure --prefix=$SOS_INSTALL/portals4/install --enable-zero-mrs --enable-reliable-udp --disable-pmi-from-portals
RUN make -j
Expand All @@ -98,7 +97,7 @@ RUN make install
# Build SOS
WORKDIR $SOS_INSTALL
RUN git clone --recurse-submodules https://github.com/Sandia-OpenSHMEM/SOS.git
WORKDIR SOS
WORKDIR $SOS_INSTALL/SOS
RUN ./autogen.sh
# To build SOS w/ basic Libfabric
RUN ./configure --prefix=$SOS_INSTALL/SOS/install --with-ofi=$SOS_INSTALL/libfabric/install --without-ucx --without-portals4 --enable-pmi-simple --disable-fortran
Expand Down
26 changes: 13 additions & 13 deletions scripts/docker/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Sandia OpenSHMEM Docker Image
Sandia OpenSHMEM (SOS) utlizes Docker images to provide users a means to create
Sandia OpenSHMEM (SOS) utilizes Docker images to provide users a means to create
containers that provide a configurable Ubuntu sandbox for running SOS
applications and benchmarks.

Expand All @@ -22,7 +22,7 @@ $ docker build -t <name-of-image> .
Where `<name-of-image>` represents the name being used to label the image.
The "docker build" command will use the Dockerfile to build the docker image
from which containers can be created.
To create an interactive container from the image run the following command:
To create an interactive container from the image, run the following command:

```
$ docker run -it <name-of-image>
Expand All @@ -32,19 +32,19 @@ Where the `-it` option makes the container interactive and allows the user to
actually step into the container and execute commands in the new environment.

### Dockerfile Options
Throughout the Dockerfile there are lines that can be commented/uncommented to
Throughout the Dockerfile, there are lines that can be commented/uncommented to
configure a particular testing environment and SOS build.

#### Ubuntu Image
The first option this file provides is the type of Ubuntu image docker
The first option this file provides is the type of Ubuntu image Docker
should pull from.

By default the Dockerfile pulls a lightweight Ubuntu 20.04 image.
The other option (which is commnented out) is for OneAPI image which uses
Ubunutu 18.04. The idea for this image was to allow users to test/run SOS
applications with non-gcc compilers.
By default, the Dockerfile pulls a lightweight Ubuntu 20.04 image.
The other option (which is commented out) is for the OneAPI image which uses
Ubuntu 18.04. The idea for this image was to allow users to test/run SOS
applications with non-GCC compilers.

Note: Currently, building the UCX libraries with the `icx` compiler leads to a
**Note:** Currently, building the UCX libraries with the `icx` compiler leads to a
build error. When starting from the OneAPI image and using the `icx` compiler,
the Dockerfile lines which build UCX (the lines directly under "Build UCX") must
be commented out.
Expand All @@ -55,10 +55,10 @@ The next set of options are presented when it comes time to build Libfabric.
By default, a basic Libfabric configuration is built and installed to an
"install" directory (This option is currently uncommented).
The other option is to enable the GNI provider while building Libfabric. (For
this option uncomment the line of code under "To build Libfabric to use GNI provider")
this option, uncomment the line of code under "To build Libfabric to use GNI provider")

#### Building SOS
Another set of options are presented when Building SOS.
Another set of options are presented when building SOS.

By default, SOS is built with a basic Libfabric provider.
The next few options are:
Expand All @@ -67,14 +67,14 @@ The next few options are:
* Build SOS with Portals 4
* Build SOS with UCX

As a reminder, the chosen SOS configuration option must be uncommented, while
**Reminder:** The chosen SOS configuration option must be uncommented, while
the other options must be commented out.

#### Enabling the PRRTE Server
The last portion of code that is optional in this Dockerfile is that which
enables the PRRTE Server.
This is mostly used to run SOS tests when the GNI provider has been enabled in
the Libfabric build.
When testing on the GNI provider uncomment the lines under "Start PRRTE server
When testing on the GNI provider, uncomment the lines under "Start PRRTE server
and use prun to run tests" to build a container which runs "make check" on the
PRRTE server.