Skip to content

Commit e16079f

Browse files
committed
Try pangea2 spec
1 parent d76e3f6 commit e16079f

3 files changed

Lines changed: 226 additions & 11 deletions

File tree

.github/workflows/docker_build_tpls.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ jobs:
2020

2121
matrix:
2222
include:
23-
#- name: Pangea 2 (centos 7.6, gcc 8.3.0, open-mpi 2.1.5, mkl 2019.3)
24-
# DOCKER_REPOSITORY: geosx/pangea2-gcc8.3.0-openmpi2.1.5-mkl2019.3
25-
# DOCKERFILE: docker/TotalEnergies/Dockerfile
26-
# DOCKER_ROOT_IMAGE: totogaz/pangea2-gcc8.3.0-openmpi2.1.5-mkl2019.3-no-geosx:0.0.1
27-
# INSTALL_DIR_ROOT: /workrd/SCR/GEOSX/install/gcc8
23+
- name: Pangea 2 (centos 7.6, gcc 8.3.0, open-mpi 2.1.5, mkl 2019.3)
24+
DOCKER_REPOSITORY: geosx/pangea2-gcc8.3.0-openmpi2.1.5-mkl2019.3
25+
DOCKERFILE: docker/TotalEnergies/Dockerfile
26+
DOCKER_ROOT_IMAGE: totogaz/pangea2-gcc8.3.0-openmpi2.1.5-mkl2019.3-no-geosx:0.0.1
27+
INSTALL_DIR_ROOT: /workrd/SCR/GEOSX/install/gcc8
2828
#- name: Pecan GPU (centos 7.7, gcc 8.2.0, open-mpi 4.0.1, mkl 2019.5, cuda 11.5.119)
2929
# DOCKER_REPOSITORY: geosx/pecan-gpu-gcc8.2.0-openmpi4.0.1-mkl2019.5-cuda11.5.119
3030
# DOCKERFILE: docker/TotalEnergies/Dockerfile

docker/TotalEnergies/Dockerfile

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,18 @@ RUN yum install -y \
1515
ca-certificates \
1616
curl \
1717
python3 \
18-
zlib-devel
18+
zlib-devel \
19+
# Additional spack dependencies
20+
python3-pip \
21+
pkgconfig \
22+
# xz \
23+
unzip \
24+
bzip2 \
25+
&& pip3 install virtualenv
26+
27+
# Install clingo for Spack
28+
RUN python3 -m pip install --upgrade pip && \
29+
python3 -m pip install clingo
1930

2031
RUN --mount=src=.,dst=$SRC_DIR $SRC_DIR/docker/install-cmake.sh
2132

@@ -29,19 +40,50 @@ RUN yum install -y \
2940
file \
3041
bison \
3142
flex \
32-
patch
43+
patch \
44+
# `ca-certificates` needed by `git` to download GEOS repo.
45+
ca-certificates \
46+
autoconf \
47+
automake \
48+
git
3349

34-
ARG HOST_CONFIG
50+
# Clone branch with spack configs
51+
# TODO decide landing place of spack recipes
52+
RUN git clone --branch feature/han12/wip_docker_spack_recipes \
53+
--depth 1 \
54+
--single-branch \
55+
https://github.com/GEOS-DEV/GEOS.git
3556

36-
RUN --mount=src=.,dst=$SRC_DIR $SRC_DIR/docker/configure-tpl.sh
37-
WORKDIR $BLD_DIR
38-
RUN --mount=src=.,dst=$SRC_DIR make
57+
# Run uberenv
58+
# Have to create install directory first for uberenv
59+
# -k flag is to ignore SSL errors
60+
# Remove generated host-config for lvarray
61+
RUN --mount=src=.,dst=$SRC_DIR cd GEOS && \
62+
mkdir -p ${GEOSX_TPL_DIR} && \
63+
git submodule init scripts/uberenv && \
64+
git submodule update && \
65+
./scripts/uberenv/uberenv.py \
66+
--spec "%gcc@8.3.0~pygeosx" \
67+
--spack-env-file=${SRC_DIR}/docker/total-spack.yaml \
68+
--project-json=.uberenv_config.json \
69+
--prefix ${GEOSX_TPL_DIR} \
70+
-k && \
71+
# Remove host-config generated for LvArray
72+
rm lvarray* && \
73+
# Rename and copy spack-generated host-config to root directory
74+
cp *.cmake /spack-generated.cmake && \
75+
# Remove extraneous spack files
76+
cd ${GEOSX_TPL_DIR} && \
77+
rm -rf bin/ build_stage/ misc_cache/ spack/ spack-env/ .spack-db/
3978

4079
FROM tpl_toolchain_intersect_geosx_toolchain AS geosx_toolchain
4180
ARG SRC_DIR
4281

4382
COPY --from=tpl_toolchain $GEOSX_TPL_DIR $GEOSX_TPL_DIR
4483

84+
# Extract the generated host-config
85+
COPY --from=tpl_toolchain /spack-generated.cmake /
86+
4587
RUN yum -y install \
4688
openssh-clients \
4789
ca-certificates \

docker/total-spack.yaml

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
spack:
2+
config:
3+
install_tree:
4+
root: $spack/..
5+
projections:
6+
all: '{compiler.name}-{compiler.version}/{name}-{version}-{hash}'
7+
misc_cache: $spack/../misc_cache
8+
test_stage: $spack/../test_stage
9+
build_stage::
10+
- $spack/../build_stage
11+
12+
# Regular TPLs do not need views
13+
view: false
14+
15+
compilers::
16+
# Pangea 2 compiler
17+
- compiler:
18+
environment: {}
19+
extra_rpaths: []
20+
flags:
21+
cflags: -pthread
22+
cxxflags: -pthread
23+
modules: []
24+
operating_system: centos7
25+
paths:
26+
cc: /data_local/sw/gcc/RHEL7/8.3.0/bin/gcc
27+
cxx: /data_local/sw/gcc/RHEL7/8.3.0/bin/g++
28+
f77: /data_local/sw/gcc/RHEL7/8.3.0/bin/gfortran
29+
fc: /data_local/sw/gcc/RHEL7/8.3.0/bin/gfortran
30+
spec: gcc@8.3.0
31+
target: x86_64
32+
33+
packages:
34+
all:
35+
target: [x86_64]
36+
compiler: [gcc, clang]
37+
providers:
38+
blas: [intel-mkl]
39+
lapack: [intel-mkl]
40+
mpi: [openmpi]
41+
42+
43+
blt:
44+
require: "@git.5a792c1775e7a7628d84dcde31652a689f1df7b5=develop"
45+
46+
hypre:
47+
require: "@git.d475cdfc63ac59ea9a554493a06e4033b8d6fade"
48+
49+
chai:
50+
require: "@git.6fe3470ad020303530af2f3dbbfe18826bd3319b=develop"
51+
52+
umpire:
53+
require: "@git.4bd9b2ded81d3216b3f62e2aad62d0e34fe2c256=develop"
54+
55+
raja:
56+
require: "@git.e330b2560747d5417cd7bd265fab3fb91d32ecbd=develop"
57+
58+
camp:
59+
require: "@git.ac34c25b722a06b138bc045d38bfa5e8fa3ec9c5=main"
60+
61+
uncrustify:
62+
require: "@git.401a4098bce9dcc47e024987403f2d59d9ba7bd2"
63+
64+
superlu-dist:
65+
require: "@git.0f6efc377df2440c235452d13d28d2c717f832a1"
66+
67+
autoconf:
68+
version: [2.71]
69+
buildable: false
70+
externals:
71+
- spec: autoconf@2.71
72+
prefix: /usr
73+
automake:
74+
version: [1.16.5]
75+
buildable: false
76+
externals:
77+
- spec: automake@1.16.5
78+
prefix: /usr
79+
bison:
80+
version: [3.8.2]
81+
buildable: false
82+
externals:
83+
- spec: bison@3.8.2
84+
prefix: /usr
85+
cmake:
86+
version: [3.23.1]
87+
buildable: false
88+
externals:
89+
- spec: cmake@3.23.1
90+
prefix: /usr/local
91+
cuda:
92+
buildable: False
93+
externals:
94+
- spec: cuda@11.8.0 +allow-unsupported-compilers
95+
prefix: /usr/local/cuda
96+
flex:
97+
version: [2.6.4]
98+
buildable: false
99+
externals:
100+
- spec: flex@2.6.4
101+
prefix: /usr
102+
103+
# Lock down blas, lapack implementation
104+
intel-mkl:
105+
buildable: False
106+
externals:
107+
# LC
108+
#- spec: intel-mkl@2020.0.166 threads=openmp
109+
# prefix: /usr/tce/packages/mkl/mkl-2020.0/
110+
111+
# Pangea 2
112+
- spec: intel-mkl@2019.3.199 threads=openmp
113+
prefix: /opt/intel/compilers_and_libraries_2019.3.199/linux/mkl/
114+
blas:
115+
buildable: false
116+
117+
lapack:
118+
buildable: false
119+
120+
m4:
121+
buildable: false
122+
externals:
123+
- spec: m4@1.4.18
124+
prefix: /usr
125+
126+
# Spack may grab for mpi & we don't want to use them
127+
mpi:
128+
buildable: false
129+
#mpfr:
130+
# buildable: false
131+
# externals:
132+
# - spec: mpfr@4.1.0
133+
# prefix: /usr
134+
135+
openmpi:
136+
externals:
137+
- spec: openmpi@2.1.5%gcc@8.3.0
138+
prefix: /data_local/sw/OpenMPI/RHEL7/2.1.5/gcc/8.3.0
139+
perl:
140+
buildable: false
141+
externals:
142+
- spec: perl@5.34.0
143+
prefix: /usr
144+
pkg-config:
145+
buildable: false
146+
externals:
147+
- spec: pkg-config@0.29.2
148+
prefix: /usr
149+
py-sphinx:
150+
buildable: false
151+
externals:
152+
- spec: py-sphinx@4.3.2
153+
prefix: /usr
154+
python:
155+
buildable: false
156+
externals:
157+
- spec: python@3.10.12
158+
prefix: /usr
159+
tar:
160+
buildable: false
161+
externals:
162+
- spec: tar@1.34
163+
prefix: /usr
164+
unzip:
165+
buildable: false
166+
externals:
167+
- spec: unzip@6.0
168+
prefix: /usr
169+
xz:
170+
buildable: false
171+
externals:
172+
- spec: xz@5.2.5
173+
prefix: /usr

0 commit comments

Comments
 (0)