22
33` mpi-extensions ` supplies Open MPI binary packages for
44[ ` parallel_programming_course ` ] ( https://github.com/learning-process/parallel_programming_course ) .
5- The packages are built from the Open MPI git submodule at ` external/ompi ` and
6- are intended for rootless CI use: download, extract, add ` bin/ ` to ` PATH ` , and
7- let CMake discover ` mpicc ` and ` mpicxx ` .
5+ The packages are built from pinned git submodules and are intended for rootless
6+ CI use: download, extract, and pass the unpacked package prefix to the course
7+ CMake configure step .
88
99This repository publishes only one public binary channel: the moving ` nightly `
1010pre-release named ` Nightly Open MPI Extensions ` . Stable versioned releases are
1111not supported here.
1212
13- ## Open MPI pin
13+ ## Source Pins
1414
15- Open MPI is included as a git submodule, not vendored source:
15+ Open MPI and Sandia OpenSHMEM/SOS are included as git submodules, not vendored
16+ source:
1617
1718- URL: ` https://github.com/open-mpi/ompi `
1819- Path: ` external/ompi `
1920- Ref: ` v5.0.10 `
2021- Commit: ` 0d48030d410ae8f56790933135b28be1b3920ba1 `
2122
22- The same data is recorded in ` manifests/openmpi-version.json ` .
23+ - URL: ` https://github.com/Sandia-OpenSHMEM/SOS.git `
24+ - Path: ` external/sos `
25+ - Ref: ` v1.5.3 `
26+ - Commit: ` 45e6e7eb1a9b099a418237a9e677eb6603222c84 `
2327
24- Linux packages are configured with MPI and OpenSHMEM/OSHMEM enabled and bundle
25- the UCX runtime libraries used by OpenSHMEM. Open MPI 5.0.x marks OSHMEM as
26- Linux-only in its configure logic, so macOS packages are MPI-only and their
27- package manifests record OpenSHMEM validation as ` unsupported ` .
28+ The same data is recorded in ` manifests/openmpi-version.json ` and
29+ ` manifests/sos-version.json ` .
30+
31+ Linux packages are configured with MPI and Open MPI OSHMEM/OpenSHMEM enabled
32+ and bundle the UCX runtime libraries used by OpenSHMEM. Open MPI 5.0.x marks
33+ OSHMEM as Linux-only in its configure logic, so macOS packages use Open MPI for
34+ MPI and Sandia OpenSHMEM/SOS for SHMEM. SOS is built against the package's Open
35+ MPI PMIx/hwloc install and libfabric/OFI, then packaged with the needed runtime
36+ libraries for rootless CI use.
2837
2938## Nightly assets
3039
@@ -46,22 +55,22 @@ Archives unpack under a single top-level directory and contain `bin/`, `lib/`,
4655For local use from this repository:
4756
4857``` bash
49- ./scripts/install_from_nightly_release.sh \
58+ ./scripts/install_from_nightly_release.py \
5059 --repo learning-process/mpi-extensions \
5160 --platform auto \
5261 --prefix " $PWD /_deps/mpi-extensions-openmpi"
5362```
5463
5564The installer downloads only the ` nightly ` pre-release, verifies the SHA256
56- checksum, extracts into the requested prefix, and prints the environment values
57- needed by downstream builds .
65+ checksum, extracts into the requested prefix, and prints environment values for
66+ manual debugging .
5867
5968From another repository, such as ` parallel_programming_course ` , fetch the
6069installer script directly from this repository:
6170
6271``` bash
6372curl -fsSL \
64- https://raw.githubusercontent.com/learning-process/mpi-extensions/main/scripts/install_from_nightly_release.sh \
73+ https://raw.githubusercontent.com/learning-process/mpi-extensions/main/scripts/install_from_nightly_release.py \
6574 -o /tmp/install_mpi_extensions.py
6675python3 /tmp/install_mpi_extensions.py \
6776 --repo learning-process/mpi-extensions \
@@ -72,29 +81,26 @@ python3 /tmp/install_mpi_extensions.py \
7281Recommended ` parallel_programming_course ` CI setup:
7382
7483``` bash
75- export MPI_EXTENSIONS_HOME=" $PWD /_deps/mpi-extensions-openmpi"
76- export MPI_HOME=" $MPI_EXTENSIONS_HOME "
77- export OPAL_PREFIX=" $MPI_EXTENSIONS_HOME "
78- export PATH=" $MPI_EXTENSIONS_HOME /bin:$PATH "
79- export LD_LIBRARY_PATH=" $MPI_EXTENSIONS_HOME /lib:${LD_LIBRARY_PATH:- } "
80- export DYLD_LIBRARY_PATH=" $MPI_EXTENSIONS_HOME /lib:${DYLD_LIBRARY_PATH:- } "
81-
82- cmake -S . -B build
84+ MPI_EXTENSIONS_HOME=" $PWD /_deps/mpi-extensions-openmpi"
85+ cmake -S . -B build -D PPC_MPI_EXTENSIONS_HOME=" $MPI_EXTENSIONS_HOME "
8386cmake --build build --parallel
8487```
8588
86- Do not install Homebrew or apt Open MPI in the course workflow. The binary
87- package is meant to be self-contained for CMake discovery through the wrapper
88- compilers .
89+ Do not install Homebrew or apt Open MPI in the course workflow. The course CMake
90+ configuration must receive ` PPC_MPI_EXTENSIONS_HOME ` ; it then points MPI
91+ discovery and runtime setup at this package .
8992
9093## Local build
9194
95+ All repository helper scripts in ` scripts/ ` are Python executables with ` .py `
96+ extensions.
97+
9298Install the normal compiler/autotools dependencies first. On Ubuntu this
9399includes ` build-essential ` , ` autoconf ` , ` automake ` , ` libtool ` , ` flex ` , ` bison ` ,
94100` pkg-config ` , ` ccache ` , ` zlib1g-dev ` , and ` libucx-dev ` ; ` libucx-dev ` is required
95101for the Linux OpenSHMEM provider. On macOS the workflow uses Homebrew packages
96- for ` autoconf ` , ` automake ` , ` bison ` , ` ccache ` , ` flex ` , ` libtool ` , ` pkg-config ` ,
97- and ` rsync ` .
102+ for ` autoconf ` , ` automake ` , ` bison ` , ` ccache ` , ` flex ` , ` libfabric ` , ` libtool ` ,
103+ ` pkg-config ` , and ` rsync ` .
98104
99105Initialize submodules first:
100106
@@ -111,14 +117,14 @@ Build and validate on Linux:
111117``` bash
112118export CCACHE_DIR=" $MPI_EXTENSIONS_WORK_ROOT /ccache"
113119
114- ./scripts/build_openmpi.sh \
120+ ./scripts/build_openmpi.py \
115121 --prefix " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi" \
116122 --build-dir " $MPI_EXTENSIONS_WORK_ROOT /build/openmpi-linux" \
117123 --enable-shmem required \
118124 --ccache on
119- ./scripts/smoke_test_mpi.sh " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi"
120- ./scripts/smoke_test_shmem.sh " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi"
121- ./scripts/package_openmpi.sh \
125+ ./scripts/smoke_test_mpi.py " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi"
126+ ./scripts/smoke_test_shmem.py " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi"
127+ ./scripts/package_openmpi.py \
122128 --prefix " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi" \
123129 --out " $MPI_EXTENSIONS_WORK_ROOT /build/dist"
124130```
@@ -128,24 +134,28 @@ Build and validate on macOS:
128134``` bash
129135export CCACHE_DIR=" $MPI_EXTENSIONS_WORK_ROOT /ccache"
130136
131- ./scripts/build_openmpi.sh \
137+ ./scripts/build_openmpi.py \
132138 --prefix " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi" \
133139 --build-dir " $MPI_EXTENSIONS_WORK_ROOT /build/openmpi-macos" \
134140 --enable-shmem disabled \
135141 --ccache on
136- ./scripts/smoke_test_mpi.sh " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi"
137- MPI_EXTENSIONS_ALLOW_UNSUPPORTED_SHMEM=1 \
138- ./scripts/smoke_test_shmem.sh " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi"
139- ./scripts/package_openmpi.sh \
142+ ./scripts/build_sos_shmem.py \
143+ --prefix " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi" \
144+ --build-dir " $MPI_EXTENSIONS_WORK_ROOT /build/sos-macos" \
145+ --mpi-prefix " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi" \
146+ --ccache on
147+ ./scripts/smoke_test_mpi.py " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi"
148+ ./scripts/smoke_test_shmem.py " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi"
149+ ./scripts/package_openmpi.py \
140150 --prefix " $MPI_EXTENSIONS_WORK_ROOT /install/openmpi" \
141151 --out " $MPI_EXTENSIONS_WORK_ROOT /build/dist" \
142152 --platform macos-arm64 \
143- --shmem-smoke unsupported
153+ --shmem-smoke passed
144154```
145155
146- ## Updating Open MPI
156+ ## Updating Pins
147157
148- To move the pin:
158+ To move the Open MPI pin:
149159
150160``` bash
151161git -C external/ompi fetch --tags origin
@@ -154,8 +164,17 @@ git -C external/ompi submodule update --init --recursive
154164git add external/ompi manifests/openmpi-version.json README.md
155165```
156166
157- Update ` manifests/openmpi-version.json ` and this README with the exact ref and
158- commit. Use a stable tag or explicit commit, never a floating branch.
167+ To move the SOS pin:
168+
169+ ``` bash
170+ git -C external/sos fetch --tags origin
171+ git -C external/sos checkout < stable-tag-or-commit>
172+ git -C external/sos submodule update --init --recursive
173+ git add external/sos manifests/sos-version.json README.md
174+ ```
175+
176+ Update the matching manifest and this README with the exact ref and commit. Use
177+ a stable tag or explicit commit, never a floating branch.
159178
160179## Workflow
161180
0 commit comments