Skip to content

GFQL #2073 follow-ups: GPU aggregation execution, validation, and entity result contracts #2074

Description

@lmeyerov

All follow-ups are merged and final verification is complete.

Repository / PR Merge commit
pygraphistry #2077 f7a7253bc95d9cc0663bd130a53a03f2f355cbcd
pygraphistry #2078 d20c6ae1af73e64b05aa4b24459dfd3ba247edf9
pygraphistry #2079 65c359b5d94231224010ce00f7bcbbfadcb1e4fb
tck-gfql #201 84b098c2784849a47e1c3c12bbf0766a2ffe3b4b
pyg-bench #261 26e90c745f3233578230a96923b27b6bd7505ca9

The actual merged product graphistry/ tree exactly matches the tested combined ffa52d8abaaf81f1a3508f2723a7f79bdcda2db0; only CHANGELOG differs. The final benchmark workflow pins product 65c359b5d94231224010ce00f7bcbbfadcb1e4fb.

Priority / issue Root cause and impact Implementing PR
P1 — #2075 Explicit PolarsGPU row aggregation could run eagerly on CPU. Earlier GPU traversal did not prove aggregate execution. Predates2073. #2077: strict aggregate collectors/E110, native expressions/constants/global shapes, null/empty and ordered-DISTINCT semantics.
P2 — #2076 Parser failure became an empty dependency list, admitting malformed sources. Qualified operands and lexical shadowing exposed additional validation drift during amplification. #2078: literal precedence, structured syntax/type/dependency errors, visible dotted columns and correctly scoped bindings. Merged after #2077.
P2 — graphistry/tck-gfql#200 Flattened entities/properties and absent/present-null rows could not be distinguished from IDs or nullable values alone. #2079 plus graphistry/tck-gfql#201: typed independent kind/presence, snapshots and OPTIONAL/reentry alignment. Both merged in order.
P2 — #2082, explicitly deferred Polars1.21 endpoint is_in shape errors reproduce in all33 cases on exact unmodified master92. Current construction traces to Aug15/19, before2073; first affected release unknown. Separate old-version compatibility fix. Current Polars/RAPIDS26 succeeds. Failures remain visible.

Priority was challenged against impact: silent execution on the wrong requested backend comes first; validation and entity correctness follow independently. The old-version traversal defect is independently reproducible baseline debt, not a reason to weaken follow-up oracles. #2075/#2076 were not skipped: #2077/#2078 implement them.

Final verification:

Final product CI34888725964 SUCCESS: 83 successful jobs, 2 conditional skips (no-plans-in-repo, changed-line-coverage). CodeQL SUCCESS.

Current six-module DGX evidence:

Image/lane Result Limits
RAPIDS25/cuDF25.2.2/Polars1.21 1053passed,215skipped,33failed All33 failures are baseline CPU-Polars traversal; exact master92 control matches IDs/error types.
RAPIDS26/cuDF26.2.1/Polars1.35.2 1086passed,215skipped cuDF and CPU coverage.
PolarsGPU1.35.2/RAPIDS26 1301passed,0skipped Actual strict GPU execution and structured capability declines; PolarsGPU25 not claimed.

Boundaries cover valid/invalid syntax, literal-looking columns, constants, missing/qualified operands, lexical scopes, schema changes, empty/all-null/global/grouped behavior, key-only versus zero-output forms, null keys, DISTINCT order/multiplicity, absent versus present-null entities, stale metadata, OPTIONAL alignment and caller immutability. Coalesce validation is valid, but current cudf-polars26 cannot lower it; explicit E110 tests preserve CPU/cuDF numeric oracles and do not silently substitute CPU execution.

Review found and fixed qualified-column rejection, operand-order-dependent lexical scope, overly optimistic GPU coalesce test expectations, and ignored thread-limit receipts. Earlier count dtype/null storage/DISTINCT and entity typing/sentinel/OPTIONAL-fixture fixes remain verified. Entity changes add no getattr/setattr/hasattr/cast calls or B010 suppressions. Final changes have two clean source-review waves; unchanged source reuse is supported by explicit equivalence, not relabeled historical runs.

Performance includes focused aggregate/entity/validation oracles and representative Q1–Q9 across20k/100k andfourengines. Original main matrix had three flags; two predeclared complete ABBA/BAAB controls (3warmups/11samples, cold bindings, explicit4Polars threads) repeat none. First control flags20kGPUQ9; second haszero flags. Actual Q3/Q4/Q9 traces prove equal paths and strict GPU collection on both sources, with unchanged fast-path code. Assessment: no demonstrated repeatable product regression; run variation is the likely explanation, not a proven exact environmental cause or a speedup guarantee. Original flags and the thread-setting difference remain disclosed.

pyg-bench#261 owns the durable main comparator and corrected structural guards. General-chain diagnostics require one edge-index materialization and one final node-universe read; same-result two-read faults fail and zero engagement is invalid. The obsolete whole-query10/14join calibration was not relaxed to15. Allfour full DGX structural/scaling ABBA runs pass6/6probes. Shared locks, verified idle/resource gates,4CPU quota, modest shares/nice and gentle retries protected colleague workloads.

#2075, #2076 and graphistry/tck-gfql#200 are closed. #2082 remains open as explicit P2 baseline compatibility debt; this completion does not claim those failures were fixed. No remaining maintainer action is needed for this follow-up batch.

Full commands, source/image/data/query manifests, XML, raw timing blocks, rejected hypotheses, reviews and performance-resolution.md are retained under local plans/gfql-2073-followups/. Cross-repository CI uploads portable evidence. Main canonical parity rounds floats to four decimal places; it is not an independent full-precision oracle. Independent focused aggregate/entity oracles supplement it.

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions