Skip to content

[DataOriented] Fastcache, perf, pruning#705

Open
hughperkins wants to merge 127 commits into
mainfrom
hp/data-oriented-qd-func-dataclass
Open

[DataOriented] Fastcache, perf, pruning#705
hughperkins wants to merge 127 commits into
mainfrom
hp/data-oriented-qd-func-dataclass

Merge remote-tracking branch 'origin/main' into hp/data-oriented-qd-f…

d32e8fc
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
GitHub Actions / PR change report succeeded Jun 29, 2026 in 0s

PR change report

Per-file totals + per-function breakdown of code-line additions and removals.

Details

PR change report (d32e8fc92)

Per-file totals + per-function breakdown of code-line additions and removals.
Code lines exclude blank lines, comment-only lines, and Python multi-line strings.

File LoC Added Removed
tests/python/test_data_oriented_ndarray.py 569 +317 -23
tests/python/test_data_oriented_qd_func_dataclass.py 0 +209
python/quadrants/lang/_fast_caching/args_hasher.py 168 +109 -35
python/quadrants/lang/_fast_caching/src_hasher.py 96 +95 -17
python/quadrants/lang/ast/ast_transformers/call_transformer.py 317 +90 -3
python/quadrants/lang/_pruning.py 125 +75 -1
tests/python/quadrants/lang/fast_caching/test_src_ll_cache.py 422 +71 -3
python/quadrants/lang/kernel.py 649 +53 -17
python/quadrants/lang/ast/ast_transformers/function_def_transformer.py 536 +33 -6
python/quadrants/lang/ast/ast_transformer.py 1328 +29 -4
python/quadrants/lang/_template_mapper.py 100 +16 -13
python/quadrants/lang/kernel_impl.py 182 +15 -7
python/quadrants/lang/_template_mapper_hotpath.py 247 +14 -17
tests/python/test_template_typing.py 75 +10 -4
python/quadrants/lang/_quadrants_callable.py 49 +10 -1
tests/python/quadrants/lang/fast_caching/test_src_hasher.py 203 +5 -5
tests/python/quadrants/lang/fast_caching/test_fastcache_field_warnings.py 120 +1 -1
python/quadrants/lang/ast/ast_transformer_utils.py 341 +1
tests/python/quadrants/lang/ast/test_function_def_transformer.py 89 +1

Total: 19 file(s) changed, +1154 -157 code lines.

Per-function breakdown

tests/python/test_data_oriented_ndarray.py 569 +317 -23
    New:
      test_data_oriented_nested_primitive_via_qd_func_distinguishes_cache_key()       0      +41
      test_data_oriented_polymorphic_attribute_set_across_instances()                 0      +36
      test_data_oriented_qd_func_chain_propagation_distinguishes_cache_key()          0      +36
      test_data_oriented_kernel_read_primitive_distinguishes_cache_key()              0      +33
      test_data_oriented_kernel_unused_opaque_member_does_not_affect_cache()          0      +33
      test_data_oriented_kernel_unread_primitive_does_not_affect_cache()              0      +31
      test_data_oriented_kernel_read_opaque_member_fails_fastcache()                  0      +29
      test_data_oriented_polymorphic_attr_across_instances()                          0      +21
      test_data_oriented_with_cyclic_attr_graph()                                     0      +20
      test_data_oriented_with_pydantic_like_child()                                   0      +17
      test_is_data_oriented_safe_on_pydantic_like_metaclass()                         0       +8
    Existing:
      test_data_oriented_ndarray_wrapper()                                           15      +12      -10
    Deleted:
      test_data_oriented_attribute_cycle_does_not_recurse_infinitely()               20               -13

tests/python/test_data_oriented_qd_func_dataclass.py 0 +209
    New:
      test_data_oriented_method_calls_qd_func_with_two_dataclass_members()                 0      +25
      test_data_oriented_method_qd_func_chain_with_nested_dataclass_member()               0      +25
      test_data_oriented_method_calls_qd_func_with_dataclass_member()                      0      +23
      test_data_oriented_method_calls_qd_func_with_nested_dataclass_kwarg()                0      +22
      test_data_oriented_method_calls_qd_func_with_nested_dataclass_member()               0      +22
      test_data_oriented_method_qd_func_chain_with_dataclass_member()                      0      +22
      test_baseline_typed_dataclass_kernel_arg_calls_qd_func()                             0      +19
      test_data_oriented_method_calls_qd_func_with_keyword_dataclass_member()              0      +19
      test_data_oriented_stable_members_method_calls_qd_func_with_dataclass_member()       0      +19
      <module>()                                                                           0       +4
    # note: per-function +/- differs from file totals by added_drift=+9 removed_drift=+0

python/quadrants/lang/_fast_caching/args_hasher.py 168 +109 -35
    New:
      _fail_unknown_type()                  0       +9
      _FailFastcache::__new__()             0       +4
      _child_flat()                         0       +4
      _is_path_used()                       0       +4
      reset_unknown_type_warn_state()       0       +2
    Existing:
      stringify_obj_type()                 61      +36      -20
      dataclass_to_repr()                  32      +27      -10
      hash_args()                          23      +16       -4
      <module>()                            6       +5       -1

python/quadrants/lang/_fast_caching/src_hasher.py 96 +95 -17
    New:
      persist_l1_and_set_l2_key()       0      +37
      make_source_config_key()          0      +16
      load_pruning_info()               0      +15
      store_pruning_info()              0      +15
      make_full_cache_key()             0       +2
    Existing:
      compute_narrow_args_hash()       28       +4      -17
      <module>()                        1       +2

python/quadrants/lang/ast/ast_transformers/call_transformer.py 317 +90 -3
    Existing:
      CallTransformer::_expand_Call_dataclass_args()        38      +44       -2
      CallTransformer::_expand_Call_dataclass_kwargs()      47      +37
      CallTransformer::build_Call()                        100       +9       -1

python/quadrants/lang/_pruning.py 125 +75 -1
    New:
      Pruning::fold_struct_nd_paths()              0      +16
      Pruning::_propagate_chain_paths()            0      +15
      _flatten_arg_node()                          0      +10
      Pruning::fold_kernel_arg_chain_paths()       0       +5
      Pruning::mark_kernel_arg_chain_used()        0       +3
    Existing:
      Pruning::record_after_call()                46      +20
      Pruning::__init__()                          6       +3
      <module>()                                   4       +2       -1

tests/python/quadrants/lang/fast_caching/test_src_ll_cache.py 422 +71 -3
    New:
      test_src_ll_cache_needs_grad_distinguishes_args_hash()          0      +34
      test_src_ll_cache_hit_predeclare_struct_ndarrays_pruned()       0      +32
    Existing:
      test_src_ll_cache_arg_warnings()                               23       +3       -3

python/quadrants/lang/kernel.py 649 +53 -17
    New:
      Kernel::_maybe_persist_l1_and_set_l2_key()       0      +17
    Existing:
      Kernel::_try_load_fastcache()                   37      +29      -15
      Kernel::materialize()                           77       +5       -1
      Kernel::launch_kernel()                        156       +2       -1

python/quadrants/lang/ast/ast_transformers/function_def_transformer.py 536 +33 -6
    Existing:
      FunctionDefTransformer::_predeclare_struct_ndarrays()      61      +32       -6
      FunctionDefTransformer::_transform_func_arg()              90       +1

python/quadrants/lang/ast/ast_transformer.py 1328 +29 -4
    New:
      <module>()                                           0       +1
    Existing:
      ASTTransformer::_promote_ndarray_if_declared()       7      +15       -4
      ASTTransformer::build_Attribute()                   82       +9
      ASTTransformer::build_Name()                        19       +4

python/quadrants/lang/_template_mapper.py 100 +16 -13
    New:
      _classify_disposition()         0       +5
    Existing:
      TemplateMapper::lookup()       40       +8       -6
      <module>()                      1       +3       -1
    Deleted:
      _classify_for_args_hash()       7                -6

python/quadrants/lang/kernel_impl.py 182 +15 -7
    Existing:
      data_oriented()      22      +15       -7

python/quadrants/lang/_template_mapper_hotpath.py 247 +14 -17
    Existing:
      _struct_nd_paths_for()        19       +6       -8
      _build_struct_nd_paths()      23       +6       -6
      _extract_arg()                55       +2
      <module>()                     4                -3
    Deleted:
      _drop_instance_paths()         2                -2

tests/python/test_template_typing.py 75 +10 -4
    Existing:
      test_template_raise_on_data_oriented_floats()      23      +10       -4

python/quadrants/lang/_quadrants_callable.py 49 +10 -1
    New:
      QuadrantsCallable::__set_name__()       0       +2
    Existing:
      QuadrantsCallable::__get__()            5       +7       -1
      QuadrantsCallable::__init__()          13       +1

tests/python/quadrants/lang/fast_caching/test_src_hasher.py 203 +5 -5
    Existing:
      test_src_hasher_create_cache_key_vary_config()      15       +3       -3
      src_hasher_vary_kernel_func_child()                  6       +1       -1
      test_src_hasher_store_validate()                    50       +1       -1

tests/python/quadrants/lang/fast_caching/test_fastcache_field_warnings.py 120 +1 -1
    Existing:
      test_fastcache_field_warnings_warn_struct_template_field()      13       +1       -1

python/quadrants/lang/ast/ast_transformer_utils.py 341 +1
    Existing:
      ASTTransformerFuncContext::__init__()      66       +1

tests/python/quadrants/lang/ast/test_function_def_transformer.py 89 +1
    Existing:
      test_process_func_arg()      24       +1

Notes:
  * The number columns (without a + or - sign) are code-line counts in the BASE (pre-PR) version: file size before this PR (0 for newly-added files), function body size before this PR (0 for new functions; original body size for deleted functions).
  * +<n> / -<n> are code lines added / removed by this PR.
  * Code lines exclude blank lines, comment-only lines, and Python multi-line strings.