Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
38ff610
Testing Added and Flattening message buffer
eessmann Aug 16, 2024
f1c5ea4
MPI AlltoAll used for communicating node_ids
eessmann Aug 16, 2024
99a0990
Initial implementation
eessmann Aug 19, 2024
b2a497a
Fixed Memory leak
eessmann Sep 2, 2024
18599ba
Possible fix
eessmann Sep 3, 2024
6d0d468
MPI_Alltoallv is silly function
eessmann Sep 3, 2024
fcc254c
Removed at()
eessmann Sep 3, 2024
358852d
Memory leak found and fixed
eessmann Sep 3, 2024
289ac3a
parhip works
eessmann Sep 3, 2024
4ca1871
MPI to C data mapping
eessmann Sep 4, 2024
f1401d7
mpi_pack fixed
eessmann Sep 4, 2024
04ef612
Unneeded constructors and destructors removed
eessmann Sep 4, 2024
e10b734
Update parallel_contraction.cpp
eessmann Sep 6, 2024
b5c9655
Cray doesn't have spans
eessmann Sep 17, 2024
100bce2
Cray cannot deduce template types
eessmann Sep 17, 2024
e0bf6ee
Testing off by default
eessmann Sep 17, 2024
446adf1
Update parallel_contraction.cpp
eessmann Sep 17, 2024
10aca3c
Enable testing, add {cinttypes}, and update CRAY-C MPI handling
eessmann Sep 20, 2024
1e57ba8
Clean up formatting and adding documentation
eessmann Sep 20, 2024
7d6d3a0
Removed original implementation
eessmann Sep 23, 2024
03631d4
Fixed CMake so that flags work correctly
eessmann Sep 23, 2024
9d168b8
Removed unused mpi_tools::alltoallv
eessmann Sep 23, 2024
42664b8
Removing Duplicated function from class header
eessmann Sep 23, 2024
f403eca
Custom MPI Datatypes
eessmann Sep 25, 2024
34973f3
hashed graph updated
eessmann Sep 26, 2024
1e1fccc
Update CMakeLists.txt
eessmann Sep 26, 2024
b3c2a5d
WIP on mpi-collective
eessmann Sep 26, 2024
4e4347b
Isolated OpenMP
eessmann Sep 26, 2024
7d9b689
Custom type fix
eessmann Sep 27, 2024
0434215
Added reflection and custom datatypes fixed
eessmann Sep 30, 2024
776ac9b
Clean up
eessmann Sep 30, 2024
84935f7
All_to_all return type fixed
eessmann Sep 30, 2024
0784ac6
Fixed MPI types
eessmann Sep 30, 2024
bca00bf
Cleaning up types
eessmann Sep 30, 2024
afbbc03
MPI type cleanup working
eessmann Oct 2, 2024
e3b5263
Tidy up of mutex locks
eessmann Oct 3, 2024
2b57658
Added LTO
eessmann Oct 3, 2024
2781b49
Fixed include
eessmann Oct 3, 2024
85e6336
Fixed tests
eessmann Oct 3, 2024
02e2d71
Fixing concept warnings
eessmann Oct 3, 2024
005ebc8
Fixed handle leak
eessmann Oct 3, 2024
75ca671
Add Dev container for test
eessmann Oct 4, 2024
622df10
Fixing ODR issues
eessmann Oct 4, 2024
e694145
Linking fixed
eessmann Oct 4, 2024
6ab1d15
Sanitisers
eessmann Oct 7, 2024
338844f
Fixing formating and clang-tidy
eessmann Oct 7, 2024
edd22a5
Cleaning up
eessmann Oct 7, 2024
0f0afe0
Compiles on Archer
eessmann Oct 9, 2024
668838f
Namespace added
eessmann Oct 11, 2024
dfe22ab
Clang-tidy errors fixed
eessmann Oct 11, 2024
84d9b36
Parhip namespace
eessmann Oct 11, 2024
728dd85
Unity builds working
eessmann Oct 11, 2024
e6404d4
Fixing compiling flags
eessmann Oct 15, 2024
3f974a2
Project setup macro
eessmann Oct 15, 2024
d4ba62a
cmake formatted
eessmann Oct 15, 2024
95b4c79
Added options throughout
eessmann Oct 15, 2024
aac365a
Error reverted
eessmann Oct 15, 2024
4447fa3
Ranged-based loops
eessmann Oct 15, 2024
ad9e832
LTO on Cray
Oct 16, 2024
ac05b4f
Project setup macro
eessmann Oct 16, 2024
5c5caca
Testing off for caliper run
eessmann Oct 16, 2024
d835659
No more unity
eessmann Oct 17, 2024
9417340
No Warning in release mode
eessmann Oct 17, 2024
382c0c6
Edge list converter fixed
eessmann Oct 17, 2024
17fb74b
Merge origin/master into mpi-collective
eessmann Aug 31, 2026
254e696
Add CMake 4 developer dependency foundation
eessmann Aug 31, 2026
e5dc1b3
Modernize CMake target topology
eessmann Aug 31, 2026
501197b
Preserve CMake install and object ownership semantics
eessmann Aug 31, 2026
b73eeb8
Add thin MPI collective adapter
eessmann Aug 31, 2026
b888984
Harden MPI adapter failure boundaries
eessmann Aug 31, 2026
2640360
Restore ParHIP RNG and projection parity
eessmann Aug 31, 2026
de1752f
fix(parhip): strengthen Task 5 trace regressions
eessmann Aug 31, 2026
f31eea3
Harden Task 5 MPI trace identity
eessmann Aug 31, 2026
365f7af
Fix collective trace path agreement
eessmann Aug 31, 2026
3d2d985
Migrate dense owner exchanges to MPI collectives
eessmann Aug 31, 2026
e60ac4c
Harden dense collective semantic validation
eessmann Sep 1, 2026
d6afee8
fix(parhip): harden dense MPI ownership failures
eessmann Sep 1, 2026
bc9e17b
fix(parhip): make projection validation transactional
eessmann Sep 1, 2026
9564c41
test(mpi): harden lifecycle failure probe
eessmann Sep 1, 2026
87018e2
Add distributed graph neighborhood collectives
eessmann Sep 1, 2026
497f03e
Add owned asynchronous neighborhood exchanges
eessmann Sep 1, 2026
53d6398
Modernize distributed consistency ghost exchange
eessmann Sep 1, 2026
c798af3
Migrate contraction ghost CNodes to collectives
eessmann Sep 1, 2026
1624be4
Modernize contraction ghost weight exchange
eessmann Sep 1, 2026
495f170
Modernize block-down MPI propagation
eessmann Sep 1, 2026
d07b87d
Harden projection PMPI test callbacks
eessmann Sep 1, 2026
adaf339
Establish fail-fast MPI failure policy
eessmann Sep 1, 2026
c0b8950
Centralize collective semantic MPI errors
eessmann Sep 1, 2026
d851288
Add collective MPI capacity policy
eessmann Sep 1, 2026
6023eeb
Fail fast on dense MPI capacity errors
eessmann Sep 1, 2026
32df05f
Propagate fmt usage requirements
eessmann Sep 1, 2026
0e7e1c2
Fail fast before distributed graph construction
eessmann Sep 1, 2026
6610a7d
Fail fast on neighborhood MPI capacity errors
eessmann Sep 1, 2026
42fa95d
Fail fast in asynchronous neighborhood MPI
eessmann Sep 1, 2026
68b6967
Add deterministic cube partition fixtures
eessmann Sep 1, 2026
cf63d43
Migrate ghost labels to neighborhood collectives
eessmann Sep 1, 2026
f175840
Broadcast evolutionary population size safely
eessmann Sep 1, 2026
c08be05
Preserve evolutionary MPI value domains
eessmann Sep 1, 2026
967ed3d
Modernize ParHIP MPI collectives and build
eessmann Sep 1, 2026
991e54b
Clean up
eessmann Sep 2, 2026
d9383bf
Remove fmt, spdlog, Hana, and MP11 dependencies
eessmann Sep 2, 2026
be92559
Fix ParHIP seed and balance arithmetic
eessmann Sep 2, 2026
fbc0e2d
Add Cirrus test presets and Slurm runners
eessmann Sep 2, 2026
ec02a14
Test ParHIP bound and feasibility seams
eessmann Sep 2, 2026
6e80e91
Fix ParHIP imbalance diagnostics
eessmann Sep 2, 2026
8b26fa2
Complete private CMake header sets
eessmann Sep 2, 2026
709acd0
Add repaired weighted-feasibility cube oracle
eessmann Sep 2, 2026
414f54c
Fix MPI-4 quality metric failure probe
eessmann Sep 2, 2026
ea7b8d9
Stabilize MPI failure policy probes
eessmann Sep 2, 2026
d8da1f0
Stabilize async MPI failure probes
eessmann Sep 2, 2026
d7ab2f8
Restore MPI trace oracle fixtures
eessmann Sep 2, 2026
ea848f7
Reject orphaned cube repair provenance
eessmann Sep 2, 2026
04d615e
Order ParHIP balance diagnostics before abort
eessmann Sep 2, 2026
732bb0b
Fix public evolutionary bound and seed coverage
eessmann Sep 2, 2026
715d0bd
Fix ParHIP imbalance normalization
eessmann Sep 2, 2026
51460fc
Narrow binary32 imbalance normalization
eessmann Sep 2, 2026
4276715
Guard ambiguous binary32 imbalance inputs
eessmann Sep 2, 2026
937eccc
Harden ParHIP serial kernel bridge
eessmann Sep 3, 2026
2dc3fde
Close ParHIP serial bridge scale gaps
eessmann Sep 3, 2026
afeb895
Remove obsolete profile aggregation path
eessmann Sep 3, 2026
2f0940a
Complete ParHIP profile review coverage
eessmann Sep 3, 2026
1117918
Instrument checked serial profile handoffs
eessmann Sep 3, 2026
1c23c82
Make serial profile boundary tests non-vacuous
eessmann Sep 3, 2026
14d6f19
Add distributed cube scale probe
eessmann Sep 3, 2026
7eb1674
Stop tracking Task 3 report
eessmann Sep 3, 2026
e1c3064
Add Cirrus cube scale runners
eessmann Sep 3, 2026
b2857f4
Stop tracking Task 1 report
eessmann Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
BasedOnStyle: Chromium
TabWidth: 2
IndentWidth: 2
SortIncludes: CaseInsensitive
Language: Cpp
Standard: c++20
QualifierAlignment: Right
30 changes: 30 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
Checks: "*,
-abseil-*,
-altera-*,
-android-*,
-fuchsia-*,
-google-*,
-llvm*,
-modernize-use-trailing-return-type,
-zircon-*,
-readability-else-after-return,
-readability-static-accessed-through-instance,
-readability-avoid-const-params-in-decls,
-cppcoreguidelines-non-private-member-variables-in-classes,
-misc-non-private-member-variables-in-classes,
"
WarningsAsErrors: ''
HeaderFilterRegex: ''
FormatStyle: none

CheckOptions:
- key: readability-identifier-length.IgnoredVariableNames
value: 'x|y|z|i|j|k|G|Q'
- key: readability-identifier-length.IgnoredParameterNames
value: 'x|y|z|i|j|k|G|Q'





10 changes: 10 additions & 0 deletions .gersemirc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
cache: true
color: false
definitions: [cmake]
indent: 4
line_length: 80
list_expansion: favour-inlining
quiet: false
unsafe: false
warn_about_unknown_commands: true
workers: max
118 changes: 95 additions & 23 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: C/C++ CI
name: Linux MPI CI

on:
push:
Expand All @@ -11,31 +11,103 @@ on:

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
CMAKE_VERSION: "4.3.4"
VCPKG_BASELINE: "3f7b5a12ef0a55e7b59339b2b69cac4b56d6dbf9"
VCPKG_MAX_CONCURRENCY: "2"
CMAKE_BUILD_PARALLEL_LEVEL: "2"
CTEST_PARALLEL_LEVEL: "2"
OMPI_MCA_rmaps_base_oversubscribe: "1"
OMPI_MCA_hwloc_base_binding_policy: none

jobs:
build:
runs-on: ubuntu-latest
continue-on-error: true
mpi:
name: ${{ matrix.compiler }} / ${{ matrix.mpi }}
runs-on: ubuntu-24.04
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
compiler:
- { name: Clang, cc: clang, cxx: clang++ }
- { name: GNU, cc: gcc, cxx: g++ }
argument: ["", "BUILDPYTHONMODULE", "-DDETERMINISTIC_PARHIP=On"]
timeout-minutes: 60
include:
- compiler: GNU
cc: gcc
cxx: g++
preset: ci-mpi-gcc
mpi: OpenMPI 4.1 (MPI 3.1 floor)
mpi_packages: libopenmpi-dev openmpi-bin
capability_profile: mpi3-floor
- compiler: Clang
cc: clang
cxx: clang++
preset: ci-mpi-clang
mpi: OpenMPI 4.1 (MPI 3.1 floor)
mpi_packages: libopenmpi-dev openmpi-bin
capability_profile: mpi3-floor
- compiler: GNU
cc: gcc
cxx: g++
preset: ci-mpi-gcc
mpi: MPICH 4 (MPI-4 capability)
mpi_packages: libmpich-dev mpich
capability_profile: mpi4
- compiler: Clang
cc: clang
cxx: clang++
preset: ci-mpi-clang
mpi: MPICH 4 (MPI-4 capability)
mpi_packages: libmpich-dev mpich
capability_profile: mpi4
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
VCPKG_ROOT: ${{ runner.temp }}/vcpkg
steps:
- name: Install dependencies
run: sudo apt-get install -y libopenmpi-dev pybind11-dev
- uses: actions/checkout@v5
with:
submodules: 'recursive'
- name: Export compiler
run: |
echo CXX=${{ matrix.compiler.cxx }} >> $GITHUB_ENV
echo CC=${{ matrix.compiler.cc }} >> $GITHUB_ENV
- name: Build
run: ./compile_withcmake.sh ${{ matrix.argument }}
- name: Test Python interface
if: matrix.argument == 'BUILDPYTHONMODULE'
run: python3 ./deploy/callkahipfrompython.py
- uses: actions/checkout@v5
with:
submodules: recursive

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
ninja-build pkg-config python3-venv \
gcc g++ clang \
${{ matrix.mpi_packages }}

- name: Install tested CMake 4.x
run: |
python3 -m venv "$RUNNER_TEMP/cmake"
"$RUNNER_TEMP/cmake/bin/python" -m pip install \
--disable-pip-version-check "cmake==$CMAKE_VERSION"
echo "$RUNNER_TEMP/cmake/bin" >> "$GITHUB_PATH"

- name: Verify the required systemd memory scope
run: |
ci/run-limited true
ci/run-limited bash -c \
'[[ "$(cmake --version | head -n 1)" == "cmake version ${CMAKE_VERSION}" ]]'

- name: Bootstrap manifest-pinned vcpkg
run: ci/run-limited ci/bootstrap-vcpkg.sh

- name: Configure
run: ci/run-limited cmake --preset "${{ matrix.preset }}"

- name: Verify MPI feature profile
run: |
ci/run-limited cmake \
"-DBUILD_DIR=$GITHUB_WORKSPACE/out/build/${{ matrix.preset }}" \
"-DPROFILE=${{ matrix.capability_profile }}" \
-P ci/verify-mpi-capabilities.cmake

- name: Build (at most two jobs)
run: ci/run-limited cmake --build --preset "build-${{ matrix.preset }}"

- name: Run strict tests except large and performance
run: ci/run-limited ctest --preset "test-${{ matrix.preset }}"

- name: Verify staged install and pkg-config consumers
run: |
ci/run-limited ctest \
--test-dir "out/build/${{ matrix.preset }}" \
--output-on-failure --stop-on-failure --no-tests=error \
-L install -LE "(large|performance)"
104 changes: 83 additions & 21 deletions .github/workflows/build_nompi.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: C/C++ CI without OpenMPI
name: Linux serial and sanitizer CI

on:
push:
Expand All @@ -11,29 +11,91 @@ on:

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
CMAKE_VERSION: "4.3.4"
VCPKG_BASELINE: "3f7b5a12ef0a55e7b59339b2b69cac4b56d6dbf9"
VCPKG_MAX_CONCURRENCY: "2"
CMAKE_BUILD_PARALLEL_LEVEL: "2"
CTEST_PARALLEL_LEVEL: "2"

jobs:
build:
runs-on: ubuntu-latest
continue-on-error: true
serial:
name: ${{ matrix.name }}
runs-on: ubuntu-24.04
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
compiler:
- { name: GNU, cc: gcc, cxx: g++ }
timeout-minutes: 60
include:
- name: GNU serial release
cc: gcc
cxx: g++
preset: ci-serial-gcc
asan_options: ""
ubsan_options: ""
- name: GNU serial 64-bit package release
cc: gcc
cxx: g++
preset: ci-serial-gcc-64bit
asan_options: ""
ubsan_options: ""
- name: Clang serial release
cc: clang
cxx: clang++
preset: ci-serial-clang
asan_options: ""
ubsan_options: ""
- name: Clang ASan and UBSan
cc: clang
cxx: clang++
preset: ci-sanitizer-clang
asan_options: detect_leaks=1:halt_on_error=1
ubsan_options: print_stacktrace=1:halt_on_error=1
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
VCPKG_ROOT: ${{ runner.temp }}/vcpkg
ASAN_OPTIONS: ${{ matrix.asan_options }}
UBSAN_OPTIONS: ${{ matrix.ubsan_options }}
steps:
- name: Install dependencies
run: sudo apt-get install -y libopenmpi-dev pybind11-dev
- uses: actions/checkout@v5
with:
submodules: 'recursive'
- name: Export compiler
run: |
echo CXX=${{ matrix.compiler.cxx }} >> $GITHUB_ENV
echo CC=${{ matrix.compiler.cc }} >> $GITHUB_ENV
- name: Build
run: ./compile_withcmake.sh -DNOMPI=On
- name: Test Python interface
if: matrix.argument == 'BUILDPYTHONMODULE'
run: python3 ./deploy/callkahipfrompython.py
- uses: actions/checkout@v5
with:
submodules: recursive

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
ninja-build pkg-config python3-venv \
gcc g++ clang

- name: Install tested CMake 4.x
run: |
python3 -m venv "$RUNNER_TEMP/cmake"
"$RUNNER_TEMP/cmake/bin/python" -m pip install \
--disable-pip-version-check "cmake==$CMAKE_VERSION"
echo "$RUNNER_TEMP/cmake/bin" >> "$GITHUB_PATH"

- name: Verify the required systemd memory scope
run: |
ci/run-limited true
ci/run-limited bash -c \
'[[ "$(cmake --version | head -n 1)" == "cmake version ${CMAKE_VERSION}" ]]'

- name: Bootstrap manifest-pinned vcpkg
run: ci/run-limited ci/bootstrap-vcpkg.sh

- name: Configure
run: ci/run-limited cmake --preset "${{ matrix.preset }}"

- name: Build (at most two jobs)
run: ci/run-limited cmake --build --preset "build-${{ matrix.preset }}"

- name: Run strict tests except large and performance
run: ci/run-limited ctest --preset "test-${{ matrix.preset }}"

- name: Verify staged install and pkg-config consumers
run: |
ci/run-limited ctest \
--test-dir "out/build/${{ matrix.preset }}" \
--output-on-failure --stop-on-failure --no-tests=error \
-L install -LE "(large|performance)"
76 changes: 57 additions & 19 deletions .github/workflows/build_windows.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Windows CI
name: Windows serial CI

on:
push:
Expand All @@ -11,24 +11,62 @@ on:

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
CMAKE_VERSION: "4.3.4"
VCPKG_BASELINE: "3f7b5a12ef0a55e7b59339b2b69cac4b56d6dbf9"
VCPKG_MAX_CONCURRENCY: "2"
CMAKE_BUILD_PARALLEL_LEVEL: "2"
CTEST_PARALLEL_LEVEL: "2"

jobs:
build:
runs-on: windows-latest
continue-on-error: true
timeout-minutes: 60
serial:
runs-on: windows-2022
timeout-minutes: 90
env:
VCPKG_ROOT: ${{ runner.temp }}/vcpkg
steps:
- uses: actions/checkout@v5
with:
submodules: 'recursive'
- name: Configure
run: |
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DNOMPI=On
- name: Build
run: cmake --build build --config Release
- name: Test interface
run: |
cd build/Release
.\interface_test.exe
- uses: actions/checkout@v5
with:
submodules: recursive

- uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64

- name: Install Ninja and pkg-config
run: choco install --no-progress -y ninja pkgconfiglite

- name: Install tested CMake 4.x
shell: pwsh
run: |
py -3 -m venv "$env:RUNNER_TEMP/cmake"
& "$env:RUNNER_TEMP/cmake/Scripts/python.exe" -m pip install `
--disable-pip-version-check "cmake==$env:CMAKE_VERSION"
Add-Content $env:GITHUB_PATH "$env:RUNNER_TEMP/cmake/Scripts"

- name: Bootstrap manifest-pinned vcpkg
shell: pwsh
run: ./ci/bootstrap-vcpkg.ps1

# Windows is the documented exception: systemd user scopes do not exist.
- name: Verify CMake version (Windows systemd exception)
shell: pwsh
run: |
$actual = cmake --version | Select-Object -First 1
if ($actual -ne "cmake version $env:CMAKE_VERSION") {
throw "Expected CMake $env:CMAKE_VERSION, found '$actual'"
}

- name: Configure (Windows systemd exception)
run: cmake --preset ci-windows-serial

- name: Build with at most two jobs (Windows systemd exception)
run: cmake --build --preset build-ci-windows-serial

- name: Run strict tests except large and performance (Windows systemd exception)
run: ctest --preset test-ci-windows-serial

- name: Verify staged install and pkg-config consumers (Windows systemd exception)
run: >-
ctest --test-dir out/build/ci-windows-serial
--output-on-failure --stop-on-failure --no-tests=error
-L install -LE "(large|performance)"
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
.cache/
build/
deploy/
.idea
**/.DS_Store
cmake-build-*
/out/
/CMakeUserPresets.json
/vcpkg_installed/
/.devenv*
/devenv.local.nix
Loading