From 0f783fe02d16fe1c783c370fcc982216acec6ae1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:46:01 +0000 Subject: [PATCH 1/2] Initial plan From 4de6ff2db944c6cf190992d3940decd14a95c34d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:47:25 +0000 Subject: [PATCH 2/2] Clamp chunk to [1, nbodies] to prevent HDF5 chunk dims exceeding dataset extent Co-authored-by: The9Cat <25960766+The9Cat@users.noreply.github.com> Agent-Logs-Url: https://github.com/EXP-code/EXP/sessions/50498858-ea92-42e1-8f2b-1e11e7a0f23c --- src/Component.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Component.cc b/src/Component.cc index a5e51b8ef..304b41844 100644 --- a/src/Component.cc +++ b/src/Component.cc @@ -2504,10 +2504,12 @@ void Component::write_HDF5(HighFive::Group& group, bool masses, bool IDs) if (H5compress or H5chunk) { int chunk = H5chunk; - // Sanity - if (H5chunk >= nbodies and nbodies >= 8) { + // Clamp chunk to [1, nbodies]: use nbodies/8 as a downsize when + // H5chunk would exceed the dataset extent, then ensure at least 1 + if (H5chunk >= nbodies) { chunk = nbodies/8; } + chunk = std::max(1, std::min(chunk, nbodies)); dcpl1.add(HighFive::Chunking(chunk)); if (H5shuffle) dcpl1.add(HighFive::Shuffle()); @@ -2639,11 +2641,13 @@ void Component::write_H5(H5::Group& group) if (H5compress or H5chunk) { // Set chunking if (H5chunk) { - // Sanity + // Clamp chunk to [1, nbodies]: use nbodies/8 as a downsize when + // H5chunk would exceed the dataset extent, then ensure at least 1 int chunk = H5chunk; - if (H5chunk >= nbodies and nbodies >= 8) { + if (H5chunk >= nbodies) { chunk = nbodies/8; } + chunk = std::max(1, std::min(chunk, nbodies)); hsize_t chunk_dims[1] = {static_cast(chunk)}; dcpl.setChunk(1, chunk_dims); }