-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile.caliper
More file actions
126 lines (104 loc) · 3.47 KB
/
Copy pathDockerfile.caliper
File metadata and controls
126 lines (104 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Copyright 2025 Lawrence Livermore National Security, LLC and other
# Benchpark developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: Apache-2.0
# FROM ubuntu:noble
FROM fluxrm/flux-sched:noble
# ubuntu:noble added a new 'ubuntu' user in the container.
# Get rid of it!
# RUN userdel -r ubuntu
USER root
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends \
adduser \
vim \
nano \
emacs \
build-essential \
cmake \
python3 \
python3-dev \
python3-pip \
python3-venv \
git \
# NOTE: the flux-sched image already pulls and builds MPICH 4.2.2
# WITHOUT PMIx support (this is important because PMIx is a pain, and
# requires extra setup with Flux).
# openmpi-bin \
# openmpi-common \
# libopenmpi-dev \
&& rm -rf /var/lib/apt/lists/*
SHELL [ "/bin/bash", "-c" ]
RUN python3 -m venv /opt/global_py_venv
RUN . /opt/global_py_venv/bin/activate && \
python3 -m pip install pybind11
ENV CALI_INSTALL_PREFIX=/usr \
GIT_CLONE_STAGING_DIR=/tmp
RUN git clone https://github.com/LLNL/Caliper.git ${GIT_CLONE_STAGING_DIR}/Caliper && \
cd ${GIT_CLONE_STAGING_DIR}/Caliper && \
git fetch origin && \
git checkout v2.12.1 && \
git submodule update --init --recursive && \
git clone https://github.com/LLNL/Adiak.git ${GIT_CLONE_STAGING_DIR}/Adiak && \
cd ${GIT_CLONE_STAGING_DIR}/Adiak && \
git fetch origin && \
git checkout v0.4.1 && \
git submodule update --init --recursive
RUN cd ${GIT_CLONE_STAGING_DIR}/Adiak && \
mkdir build && \
cd build && \
cmake \
-DENABLE_MPI=ON \
-DCMAKE_C_COMPILER=$(which gcc) \
-DCMAKE_CXX_COMPILER=$(which g++) \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=${CALI_INSTALL_PREFIX} \
.. && \
make -j 4 && \
make install
RUN . /opt/global_py_venv/bin/activate && \
cd ${GIT_CLONE_STAGING_DIR}/Caliper && \
mkdir build && \
cd build && \
cmake \
-DWITH_TOOLS=ON \
-DWITH_MPI=ON \
-DWITH_ADIAK=ON \
-DWITH_PYTHON_BINDINGS=ON \
-Dpybind11_DIR=$(pybind11-config --cmakedir) \
-DCMAKE_PREFIX_PATH=${CALI_INSTALL_PREFIX} \
-DCMAKE_C_COMPILER=$(which gcc) \
-DCMAKE_CXX_COMPILER=$(which g++) \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=${CALI_INSTALL_PREFIX} \
.. && \
make -j 4 && \
make install
RUN rm -rf ${GIT_CLONE_STAGING_DIR}/Caliper && rm -rf ${GIT_CLONE_STAGING_DIR}/Adiak
ENV NB_USER=jovyan \
NB_UID=1000 \
HOME=/home/jovyan
RUN adduser \
--disabled-password \
--gecos "Default user" \
--uid ${NB_UID} \
--home ${HOME} \
--force-badname \
${NB_USER}
# NOTE: this should NEVER be uncommented by the time we push to GHCR
RUN adduser ${NB_USER} sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN chmod -R 777 ~/ ${HOME}
ENV SHELL=/usr/bin/bash
RUN mkdir -p ${HOME}/.local/share && \
chmod 777 ${HOME}/.local/share
RUN echo $(flux env)
RUN echo 'export PATH=/usr/bin:$PATH' >> ${HOME}/.bashrc && \
echo '. /opt/global_py_venv/bin/activate' >> ${HOME}/.bashrc && \
echo 'export LD_LIBRARY_PATH=/usr/lib:/usr/lib64:$LD_LIBRARY_PATH' >> ${HOME}/.bashrc
RUN echo 'export PATH=/usr/bin:$PATH' >> ${HOME}/.bash_profile && \
echo '. /opt/global_py_venv/bin/activate' >> ${HOME}/.bash_profile && \
echo 'export LD_LIBRARY_PATH=/usr/lib:/usr/lib64:$LD_LIBRARY_PATH' >> ${HOME}/.bash_profile
USER ${NB_USER}
WORKDIR ${HOME}