Guidance on Building or Running CPE on a Container

CPE Container Options

Alongside our official release on our support site https://myenterpriselicense.hpe.com/cwp-ui/software, we also have a monolithic container, also found on our support site, mimicking a complete installation of CPE with all required dependencies. If you want to build a subset of those components (e.g. CCE only), please look at some examples of Dockerfiles below. These are experimental examples only tested lightly, please provide any feedback to our Slack Channel.

No Official Support

Please note that using this method of downloading, installing, configuring, or building software is not officially supported. Please join our Slack Workspace and start a discussion in our #hpe-cray-programming-environment channel.

CCE-Focused Example Dockerfile

cce.Dockerfile:

FROM registry.suse.com/suse/sles15sp5:latest as base

ARG prereq="\
  cray-modules-3.2.11.7 \
  cpe-prgenv-cray \
  craype-2.7.32 \
  # Needed for the time being
  gcc gcc-c++ gcc-fortran \
  "

ARG packages="\
  cce-18.0.1.3 \
  cray-pmi-6.1.15 \
  cray-pmi-devel-6.1.15 \
  cray-pals-1.3.2 \
  cray-dsmml-0.3.0 \
  cray-libsci-24.07.0-cray170 \
  craype-targets-ex-1.13.2 \
  cray-xpmem-2.7.4 \
  cray-libxpmem0-2.7.4 \
  cray-libxpmem-devel-2.7.4 \
  "

# Reset pip package index
RUN rm /etc/pip.conf

RUN rpm --import https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/HPE-RPM-PROD-KEY-FIPS.public
RUN zypper ref

RUN zypper addrepo -f https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/<version>/<type>/<os_ver>/<arch> cpe \
  && zypper --non-interactive install $prereq $packages

FROM base as production

RUN zypper removerepo cpe

CMD ["/bin/bash"]

MPT-Focused Example Dockerfile

Note: Requires libfabric and libcxi packages

mpt.Dockerfile:

FROM registry.suse.com/suse/sles15sp5:latest as base

ARG prereq="cray-modules-3.2.11.7 \
            craype-2.7.32"

ARG packages=" \
    cray-dsmml-0.3.0 \
    cray-mpich-8.1.30-amd60 \
    cray-mpich-8.1.30-amd60-ucx \
    cray-mpich-8.1.30-aocc41 \
    cray-mpich-8.1.30-aocc41-ucx \
    cray-mpich-8.1.30-cray170 \
    cray-mpich-8.1.30-cray170-ucx \
    cray-mpich-8.1.30-doc \
    cray-mpich-8.1.30-gnu123 \
    cray-mpich-8.1.30-gnu123-ucx \
    cray-mpich-8.1.30-gtl \
    cray-mpich-8.1.30-intel20221 \
    cray-mpich-8.1.30-intel20221-ucx \
    cray-mpich-8.1.30-ioutils \
    cray-mpich-8.1.30-nvidia233 \
    cray-mpich-8.1.30-nvidia233-ucx \
    cray-openshmemx-11.7.2 \
    cray-pmi-6.1.15 \
    cray-pmi-devel-6.1.15 \
    cray-pmi-doc-6.1.15"

# Reset pip package index
RUN rm /etc/pip.conf

RUN rpm --import https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/HPE-RPM-PROD-KEY-FIPS.public
RUN zypper ref

RUN zypper addrepo -f https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/<version>/<type>/<os_ver>/<arch> cpe \
  && zypper --non-interactive install $prereq $packages

FROM base as production

RUN zypper removerepo cpe

CMD ["/bin/bash"]

Debugging Tools Focused Example Dockerfile

debugging.Dockerfile:

FROM registry.suse.com/suse/sles15sp5:latest as base

ARG prereq="cray-modules-3.2.11.7"
ARG packages="atp cray-ccdb cray-stat gdb4hpc sanitizers4hpc totalviewsup-2023.2.15 valgrind4hpc"


# Reset pip package index
RUN rm -f /etc/pip.conf

RUN rpm --import https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/HPE-RPM-PROD-KEY-FIPS.public
RUN zypper ref

RUN zypper addrepo -f https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/<version>/<type>/<os_ver>/<arch> cpe \
  && zypper --non-interactive install $prereq $packages

# CDST products need upgraded libstdc++6
RUN zypper refresh -r sles15sp4-Module-Basesystem-update
RUN zypper --non-interactive --no-gpg-checks update libstdc++6

# cray-pe-set-default is needed before other packages
RUN zypper --non-interactive install cray-pe-set-default
RUN zypper --non-interactive install $prereq $packages
RUN zypper removerepo cpe

FROM base as production

CMD ["/bin/bash"]

CSML-Focused Example Dockerfile

Note: Requires libfabric and libcxi packages

csml.Dockerfile:

FROM registry.suse.com/suse/sles15sp5:latest as base

ARG prereq="gcc12 gcc12-c++ gcc12-fortran Modules make m4 automake cray-lmod-8.7.32 lmod_scripts-3.2.1 cray-modules-3.2.11.7 craype-2.7.31 cpe-gcc-mpfr-3.1.4 cray-pals-1.3.2 cray-pmi-6.1.14 cray-pmi-devel-6.1.14 cce-17.0.1 craypkg-gen-1.3.32 craype-targets-ex-1.13.0 cpe-gcc-native-12.3 cpe-prgenv-cray-8.5.0 cray-mpich-8.1.29-cray170 cray-libelf-0.8.16 cray-dwarf-0.8.0"
ARG packages=" \
    cray-fftw-3.3.10.7 \
    cray-libsci-24.03.0-cray170 \
    cray-libsci-acc-24.03.1-cray \
    cray-netcdf-4.9.0.11-crayclang170 \
    cray-parallel-netcdf-1.12.3.11-crayclang170 \
    cray-hdf5-1.12.2.11-crayclang170 \
    "

# Reset pip package index
RUN rm /etc/pip.conf

RUN zypper repos && zypper refresh

RUN rpm --import https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/HPE-RPM-PROD-KEY-FIPS.public
RUN zypper ref

RUN zypper addrepo -f https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/<version>/<type>/<os_ver>/<arch> cpe \
  && zypper --non-interactive install $prereq $packages

FROM base as production

RUN zypper removerepo cpe

CMD ["/bin/bash"]

Performance Tools-Focused Example Dockerfile

perftools.Dockerfile:

FROM registry.suse.com/suse/sles15sp5:latest as base

ARG prereq="cray-modules-3.2.11.7 craype-2.7.23 cray-dwarf-0.7.0"
ARG packages=" \
    cray-libelf-0.8.16 \
    cray-papi-7.0.1.1 \
    perftools-23.09.0 \
    "

# Reset pip package index
RUN rm /etc/pip.conf

RUN rpm --import https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/HPE-RPM-PROD-KEY-FIPS.public
RUN zypper ref

RUN zypper addrepo -f https://<email-address>:<token>@update1.linux.hpe.com/repo/cpe/<version>/<type>/<os_ver>/<arch> cpe \
  && zypper --non-interactive install $prereq $packages

FROM base as production

RUN zypper removerepo cpe

CMD ["/bin/bash"]