Enhanced data reading capability - #82
Merged
Merged
Conversation
for more information, see https://pre-commit.ci
The two activitysim-examples jobs have been failing with exit code 143 (runner terminated due to memory exhaustion). Mitigations: - run each collected test in its own pytest process so memory is fully released between model runs - restore/save the persistent sharrow flow cache (including numba on-disk cache files) across CI runs, so warm runs skip most numba compilation; saved even on failure to seed the cache - set MALLOC_ARENA_MAX=2 to limit glibc arena memory retention and pin NUMBA_NUM_THREADS to the runner core count - add a background memory monitor that samples system memory every 15s and reports a peak-usage summary at job end Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Iteration 2: per-test process isolation confirmed the two non-sharrow MTC tests pass in under a minute each, but the sharrow-enabled test exhausts runner memory on its own during cold-cache numba compilation (~47 min in). The abrupt runner shutdown also skipped the if:always() steps, so the flow cache was never saved and the memory report was lost. Changes: - add an 8GB swapfile to absorb the transient compilation memory peak - stream memory samples into the live step log so the data survives an abrupt runner shutdown - add a watchdog that stops pytest gracefully when memory (incl. swap) is nearly exhausted, so the cache-save step still runs; each attempt then saves whatever flows it compiled, and subsequent runs resume from that warm cache instead of starting over Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces several improvements to the documentation, testing workflow, and dependency management for the project. The most significant changes include enhanced memory management and test reliability in the CI workflow, updates to installation and development instructions to use
uv, the addition of a new user guide for loading skims from various formats, and expanded support for Parquet-based skim loading. Dependency specifications have also been broadened and updated for better compatibility.Continuous Integration and Testing Improvements:
Documentation Enhancements:
loading-skims.ipynb, demonstrating how to load skim matrices from Zarr, OMX, and Parquet formats, and updated the table of contents to include it. [1] [2]docs/intro.mdto recommend usinguvfor all workflows, replacing conda-based instructions, and clarified testing and documentation build steps. [1] [2]Feature Additions:
sharrow.dataset.from_parquet_3dfunction in the API reference for loading 3D skim data from Parquet files.Dependency Updates:
pyproject.toml, and environment files to support newer versions and additional plugins (e.g.,h5py,hdf5plugin,python-blosc2, and less restrictive version pins for core libraries). [1] [2] [3] [4]