Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ jobs:
test_ops_spectral_geometry
test_ops_hodge
test_io_meshes
igneous-hodge

- name: Run tests
shell: bash
Expand Down Expand Up @@ -145,6 +146,7 @@ jobs:
test_ops_spectral_geometry
test_ops_hodge
test_io_meshes
igneous-hodge

- name: Run tests (Sanitizers)
shell: bash
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,8 @@
.DS_Store
__pycache__/
*.pyc
*.png
DiffusionGeometry/
notes/hodge/.venv_ref/
notes/hodge/results/*
!notes/hodge/results/.gitkeep
11 changes: 11 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,14 @@ target_link_libraries(igneous-spectral PRIVATE igneous fmt::fmt)

add_executable(igneous-hodge src/main_hodge.cpp)
target_link_libraries(igneous-hodge PRIVATE igneous fmt::fmt)

add_test(
NAME test_hodge_cli_outputs
COMMAND bash ${CMAKE_SOURCE_DIR}/tests/test_hodge_cli_outputs.sh
$<TARGET_FILE:igneous-hodge>)
set_tests_properties(test_hodge_cli_outputs PROPERTIES LABELS "hodge;cli")

add_test(
NAME test_hodge_parity_optional
COMMAND bash ${CMAKE_SOURCE_DIR}/tests/test_hodge_parity_optional.sh)
set_tests_properties(test_hodge_parity_optional PROPERTIES LABELS "hodge;parity")
26 changes: 26 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,30 @@ cmake --build build -j8
./build/igneous-hodge
```

## Reference Implementation

The diffusion/Hodge parity work in this repository is aligned against the Python
reference implementation:

- [DiffusionGeometry](https://github.com/Iolo-Jones/DiffusionGeometry)

## Hodge Parity Workflow

Standard parity round:

```bash
./scripts/hodge/run_parity_round.sh
```

Optional diagnostic plots for a parity round:

```bash
ROUND_DIR="$(ls -1dt notes/hodge/results/round_* | head -n1)"
notes/hodge/.venv_ref/bin/python \
./scripts/hodge/diagnostics/plot_hodge_outputs.py \
--round-dir "${ROUND_DIR}"
```

Set `IGNEOUS_BENCH_MODE=1` to disable heavy export paths in runtime apps.

Runtime backend controls:
Expand Down Expand Up @@ -74,6 +98,8 @@ Current suites:
- `test_ops_spectral_geometry`
- `test_ops_hodge`
- `test_io_meshes`
- `test_hodge_cli_outputs`
- `test_hodge_parity_optional` (skips unless `DiffusionGeometry/` is available, unless forced)

## Benchmarks

Expand Down
4 changes: 2 additions & 2 deletions benches/bench_dod.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ static DiffusionMesh make_diffusion_cloud(size_t n_points) {
}

mesh.topology.build({mesh.geometry.x_span(), mesh.geometry.y_span(),
mesh.geometry.z_span(), 0.05f, 32});
mesh.geometry.z_span(), 32});
return mesh;
}

Expand Down Expand Up @@ -127,7 +127,7 @@ static void bench_diffusion_build(benchmark::State &state) {

for (auto _ : state) {
mesh.topology.build({mesh.geometry.x_span(), mesh.geometry.y_span(),
mesh.geometry.z_span(), 0.05f, 32});
mesh.geometry.z_span(), 32});
benchmark::DoNotOptimize(mesh.topology.markov_values.size());
}
}
Expand Down
5 changes: 3 additions & 2 deletions benches/bench_pipelines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,10 @@ int compute_max_y_vertex(const DiffusionMesh &mesh) {
return max_y_idx;
}

void build_diffusion_topology(DiffusionMesh &mesh, float bandwidth, int k_neighbors) {
void build_diffusion_topology(DiffusionMesh &mesh, float /*bandwidth*/,
int k_neighbors) {
mesh.topology.build({mesh.geometry.x_span(), mesh.geometry.y_span(),
mesh.geometry.z_span(), bandwidth, k_neighbors});
mesh.geometry.z_span(), k_neighbors});
}

void bench_pipeline_diffusion_main(benchmark::State &state) {
Expand Down
Loading