Skip to content

2026-08-13 Engineering Team #129

Closed
Closed

Description

@joecastiglione

Agenda

ActivitySim

PopulationSim

Performance-testing infrastructure

  • #1078 Performance-test subarea: dataset now meets the approximately 30-minute target; decide repository/PR location, QA requirements, and benchmark metrics.

Activity

  1. jpn-- commented on Aug 13, 2026

    @jpn--
    Member

    ActivitySim Engineering Team Meeting Notes — August 13, 2026

    Meeting Overview

    Participants

    Duration

    43 minutes

    Executive Summary

    The team focused on closing Phase 11 work and reducing the outstanding pull-request backlog before Phase 12 begins. A proposed memory-aware chunking contribution prompted agreement that low-memory operation is an important ActivitySim need, but the contributor must first provide a clearer problem statement and evidence of memory and runtime performance. The team also reviewed RNG improvements, Parquet-based skim loading, and a compact performance-testing dataset, agreeing that performance testing should become a standard part of evaluating new features. Several ActivitySim and PopulationSim pull requests received specific next steps for review, testing, cleanup, or follow-up.

    Meeting Notes

    Phase 11 Backlog and Deprecation Work

    • The meeting's primary objective was to clear Phase 11 work so Phase 12 can begin with a clean backlog.
    • ActivitySim PR #1094, which deprecates older code, was considered ready to merge following David's review.
    • The PR preserves tracing columns. David recommended adding focused tests for tracing functionality in a separate pull request rather than expanding the current PR.
    • The global-constant pull request was approved and can be merged after its test suite passes.

    Memory-Aware Chunking and Low-Memory Operation

    • An outside user submitted an external contribution for memory-aware chunking. The team was hesitant to invest substantial review effort because the pull request did not clearly explain the underlying problem, why explicit chunking was insufficient, or how well the proposed approach performed.
    • The team agreed to ask for a clearer problem statement, justification for an adaptive approach rather than a wrapper around explicit chunking, and demonstrated memory and runtime profiles across different machines.
    • Bo described an attempt to run a full TransLink model on lower-memory hardware. Reducing memory requirements from 256 GB to 64 GB was only possible at a 20% household sample, with the bottleneck occurring before explicit chunking took effect.
    • Ray reported similar concerns from local stakeholders, who view a 256 GB memory requirement as a barrier to adopting ActivitySim models.
    • The discussion confirmed that consortium agencies have a real need for models that can run on readily available hardware, even if lower-memory execution takes longer. Low-memory operation is expected to be an important Phase 12 consideration.

    RNG Improvements and Parquet Skim Loading

    • Jeff opened a pull request incorporating RNG improvements developed with David. The changes provide a modest speed improvement, and Jan was asked to review the work as someone independent of its development.
    • Jeff also opened a pull request adding support for reading skim data from Parquet instead of OMX.
    • Initial testing did not show a dramatic speed advantage over a well-optimized OMX read. Results may depend on compression libraries, hardware, and workload, so broader performance testing is needed before offering user guidance.
    • The team distinguished between confirming that an existing path has not regressed and evaluating whether a new path meets an appropriate performance target.
    • Joe Castiglione emphasized that performance testing should be part of the normal acceptance process for new features, citing the vehicle type choice model as an example where insufficient testing led to expensive post-merge remediation. The team agreed that functional correctness alone is not enough for performance-sensitive features.

    Performance-Testing Dataset and Suite

    • Joe Flood created a compact dataset for performance testing using approximately 29,000 households from Oceanside, Vista, Carlsbad, and Camp Pendleton. A run took approximately 27 minutes, and the data files total less than 62 MB.
    • Joe Flood observed warnings in the log that should be reviewed before the dataset becomes a standard benchmark, although a preliminary review of the results appeared reasonable.
    • The team discussed whether the dataset and testing code should live in the main ActivitySim repository, the SANDAG ABM 3 example repository, or external storage with a download script.
    • Because a roughly 62 MB dataset would add unnecessary weight to ordinary source checkouts, the group left the final repository and storage design to Joe Flood. The testing configuration and runner should be contributed through a pull request regardless of where the data files reside.

    Remaining ActivitySim Pull Requests

    • David pushed an update to the unused skim-loading pull request. It is considered ready pending Jeff's review and approval.
    • The park-and-ride pull request remains valuable but requires additional work from David.
    • The memory-cleanup pull request is waiting on WSP testing. Jeff may complete it with AI assistance after other backlog items are resolved if the original contributors do not finish it first.
    • The shadow-pricing segmentation pull request remains on hold pending feedback from SANDAG. Its goal is to avoid requiring users to duplicate work- and school-location segmentation settings in the shadow-pricing configuration.
    • Sijia noted that the shadow-pricing work likely still needs a unit test and a full model run. Jeff will first ask Bhargava Sana whether SANDAG has reached any conclusions from its testing.
    • Work on the application analysis guide is continuing.

    PopulationSim Pull Requests

    • Nick's PopulationSim pull request has expanded to address nondeterministic results across machines in addition to its original scope.
    • Nick will clean up the changes and mark the pull request as a draft until it is ready for review.
    • To avoid duplicate work and merge conflicts, Nick expects to reopen Joe Flood's intermediate-geographies work under Joe's commit and take over the pull request workflow.

    Action Items

    • Jeff Newman (@jpn--) will respond to the memory-aware chunking pull request, requesting a clearer problem statement, justification for not using explicit chunking, and demonstrated memory and runtime profiles before the consortium invests further review effort.
    • Jan Zill (@janzill) will review the RNG improvements pull request.
    • Jeff Newman (@jpn--) will follow up with Amir about performance testing for the Parquet skim-loading pull request.
    • Joe Flood (@JoeJimFlood) will send Jeff a SharePoint link for the performance-testing dataset.
    • Joe Flood (@JoeJimFlood) will open a pull request for the performance-testing suite and choose an appropriate location for the dataset and supporting code.
    • Jeff Newman (@jpn--) will review David's update to the unused skim-loading pull request.
    • David Hensle (@dhensle) will continue work on the park-and-ride pull request.
    • Jeff Newman (@jpn--) will contact Bhargava Sana (@bhargavasana) for an update on SANDAG's conclusions regarding shadow-pricing segmentation.
    • Nick Fournier (@nick-fournier) will mark the PopulationSim pull request as "ready for review" when it is.
    • Nick Fournier (@nick-fournier) will take over Joe Flood's PopulationSim intermediate-geographies work while preserving Joe's commit attribution.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    meetingMeeting notes.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions