sentryward 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sentryward-0.1.0/.gitignore +51 -0
- sentryward-0.1.0/ASSUMPTIONS.md +214 -0
- sentryward-0.1.0/CMakeLists.txt +717 -0
- sentryward-0.1.0/LICENSE +202 -0
- sentryward-0.1.0/PKG-INFO +203 -0
- sentryward-0.1.0/README.md +178 -0
- sentryward-0.1.0/assets/pipeline.svg +2 -0
- sentryward-0.1.0/config/assumption-pool.json +9 -0
- sentryward-0.1.0/config/default-assumptions.json +9 -0
- sentryward-0.1.0/config/result-categories.json +101 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/adjacency_overlay.h +79 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/alternate_topological_order.h +65 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/chain_frontier.h +249 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/compact_hb_reachability.h +8 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/family_coordinates.h +161 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/family_hb_reachability.h +16 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/family_relation_query.h +56 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/happens_before_graph.h +231 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/hb_reachability.h +91 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/lifecycle_checker.h +58 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/member_relation.h +83 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/member_set.h +93 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/parallel_reachability.h +31 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/phase_algebra.h +40 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/phase_boundary.h +163 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/phase_database.h +94 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/reachability.h +124 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/shared_reachability_index.h +74 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/trace_order.h +49 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/unordered_access_pairs.h +87 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/wait_checker.h +166 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/analysis/wait_reachability_batch.h +56 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/affine_index.h +120 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/affine_sequence.h +76 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/checked_int.h +76 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/compact_id_map.h +216 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/compact_vector.h +25 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/dynamic_bitset.h +245 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/result.h +139 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/shared_array.h +174 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/shared_optional.h +54 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/shared_string.h +79 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/source_location.h +18 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/strong_id.h +42 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/base/template_records.h +636 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/checker/certificate.h +24 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/checker/duplicate_tma_stores.h +34 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/checker/family_memory_checker.h +8 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/checker/memory_race_checker.h +112 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/checker/result.h +122 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/checker/verifier.h +39 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/checker/wellsync_checker.h +46 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/checker/witness.h +102 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/diagnostics/compression_audit.h +173 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/diagnostics/ir_size_profile.h +30 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/diagnostics/memory_profile.h +115 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/diagnostics/performance_profile.h +65 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/diagnostics/scoped_deadline.h +29 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/csr_adjacency.h +55 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/dag.h +85 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/edge_records.h +82 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/event.h +262 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/event_families.h +175 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/event_order.h +94 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/event_records.h +190 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/event_relations.h +145 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/family_values.h +115 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/lowering.h +30 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/neighbors.h +121 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/origin_map.h +44 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/event_ir/program.h +134 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/io/source_json.h +94 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/io/source_storage.h +9 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/io/tmem_recovery.h +22 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/access.h +151 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/address_solver.h +69 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/conflict_candidates.h +23 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/conflict_order.h +30 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/constant_address_model.h +123 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/family_access.h +39 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/family_conflict_order.h +20 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/model.h +66 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/overlap.h +51 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/memory/symbolic_address_model.h +87 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/semantics/affine_template_schedule.h +142 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/semantics/barrier_state.h +128 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/semantics/collective_state.h +62 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/semantics/reference_trace.h +127 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/semantics/simulator.h +109 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/semantics/template_schedule.h +219 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/solver/dinic.h +67 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/solver/minimum_weight_ideal.h +56 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/async.h +76 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/builder.h +34 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/default_assumptions.h.in +6 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/diagnostic.h +66 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/initialization_recovery.h +42 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/memory_effect.h +42 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/operation.h +174 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/program.h +239 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/ptx_assumptions.h +22 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm/source_ir/validator.h +16 -0
- sentryward-0.1.0/cpp/include/sentryward/algorithm.h +18 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/bit_origins.h +87 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/bounded_index_translation.h +73 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/bounded_linear_reduction.h +195 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/causal_region_certificate.h +263 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/certified_branch_scope.h +42 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/comparison_context.h +44 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/constant_values.h +14 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/conversion_uses.h +74 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/egraph.h +101 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/epoch_work_allowance.h +46 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/finite_prefix_certificate.h +187 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/float_from_chars.h +78 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/fold_rewriting.h +16 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/input_mapping.h +34 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/integer_interval.h +53 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/joined_body_relation.h +35 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/lexical_scope.h +71 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/math_intrinsics.h +96 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/moment_certificate.h +142 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/numeric_semantics.h +28 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/numerical_abstraction.h +15 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/output_family.h +27 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/output_mapping.h +41 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/packed_values.h +34 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/partitioned_outputs.h +7 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/polynomial_certificate.h +100 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/program.h +22 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/representation_rewriting.h +52 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/scoped_body_relation.h +52 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/scoped_product_relation.h +24 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/scoped_work_budget.h +36 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/stored_class_catalog.h +87 -0
- sentryward-0.1.0/cpp/include/sentryward/equivalence/structural_order.h +104 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/address_expression.h +12 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/branch_scope_capture.h +61 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/config.h +91 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/dependency_history.h +125 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/execution.h +288 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/group2_lifetime.h +48 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/layouts.h +165 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/lowering.h +45 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/matrix.h +36 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/module.h +92 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/named_phases.h +8 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/operands.h +9 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/public_input.h +40 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/readonly_origin.h +50 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/refinement.h +49 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/resources.h +159 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/rounded_sign.h +32 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/selector_patterns.h +21 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/semantic_program.h +201 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/serialization.h +11 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/shared_execution.h +69 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/source_dump.h +10 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/tensor_maps.h +11 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/tmem_lifetime.h +157 -0
- sentryward-0.1.0/cpp/include/sentryward/frontend/ptx/value_ir.h +79 -0
- sentryward-0.1.0/cpp/include/sentryward/result.h +156 -0
- sentryward-0.1.0/cpp/include/sentryward/scalar_fold/artifact.h +32 -0
- sentryward-0.1.0/cpp/include/sentryward/scalar_fold/consolidate_outputs.h +9 -0
- sentryward-0.1.0/cpp/include/sentryward/scalar_fold/graph.h +135 -0
- sentryward-0.1.0/cpp/include/sentryward/scalar_fold/output_family.h +15 -0
- sentryward-0.1.0/cpp/include/sentryward/scalar_fold/real_expression_builder.h +36 -0
- sentryward-0.1.0/cpp/include/sentryward/scalar_fold/reduction_builder.h +90 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/checkpoint.h +19 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/ideal_scalar_semantics.h +30 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/indexed_source.h +108 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/indexed_source_identity.h +79 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/memory_actions.h +169 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/memory_elimination.h +501 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/memory_instance_set.h +75 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/packed_storage.h +223 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/passes.h +34 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/printer.h +20 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/projection_ledger.h +86 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/pure_source_templates.h +679 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/scalar_fold_lowering.h +56 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/scalar_specialization.h +165 -0
- sentryward-0.1.0/cpp/include/sentryward/value_analysis/view_normalization.h +15 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/graph.h +281 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/native_matrix.h +71 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/operation.h +25 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/operations.h +282 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/origin.h +38 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/printer.h +22 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/ptx_operation.h +52 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/thread_members.h +114 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/type.h +77 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/type_conversion.h +25 -0
- sentryward-0.1.0/cpp/include/sentryward/value_ir/value.h +63 -0
- sentryward-0.1.0/cpp/src/analysis/compact_hb_reachability.cpp +140 -0
- sentryward-0.1.0/cpp/src/analysis/family_hb_reachability.cpp +232 -0
- sentryward-0.1.0/cpp/src/analysis/family_relation_query.cpp +364 -0
- sentryward-0.1.0/cpp/src/analysis/happens_before_graph.cpp +568 -0
- sentryward-0.1.0/cpp/src/analysis/hb_reachability.cpp +314 -0
- sentryward-0.1.0/cpp/src/analysis/lifecycle_checker.cpp +76 -0
- sentryward-0.1.0/cpp/src/analysis/parallel_reachability.cpp +110 -0
- sentryward-0.1.0/cpp/src/analysis/phase_algebra.cpp +87 -0
- sentryward-0.1.0/cpp/src/analysis/phase_boundary.cpp +911 -0
- sentryward-0.1.0/cpp/src/analysis/phase_database.cpp +469 -0
- sentryward-0.1.0/cpp/src/analysis/reachability.cpp +628 -0
- sentryward-0.1.0/cpp/src/analysis/shared_reachability_index.cpp +189 -0
- sentryward-0.1.0/cpp/src/analysis/trace_order.cpp +60 -0
- sentryward-0.1.0/cpp/src/analysis/unordered_access_pairs.cpp +365 -0
- sentryward-0.1.0/cpp/src/analysis/wait_checker.cpp +517 -0
- sentryward-0.1.0/cpp/src/analysis/wait_reachability_batch.cpp +554 -0
- sentryward-0.1.0/cpp/src/checker/duplicate_tma_stores.cpp +157 -0
- sentryward-0.1.0/cpp/src/checker/family_memory_checker.cpp +419 -0
- sentryward-0.1.0/cpp/src/checker/memory_race_checker.cpp +313 -0
- sentryward-0.1.0/cpp/src/checker/verifier.cpp +54 -0
- sentryward-0.1.0/cpp/src/checker/wellsync_checker.cpp +1081 -0
- sentryward-0.1.0/cpp/src/cli/main.cpp +117 -0
- sentryward-0.1.0/cpp/src/diagnostics/conflict_review.cpp +215 -0
- sentryward-0.1.0/cpp/src/diagnostics/graph_memory_profile.cpp +227 -0
- sentryward-0.1.0/cpp/src/diagnostics/memory_profile.cpp +135 -0
- sentryward-0.1.0/cpp/src/diagnostics/performance_profile.cpp +124 -0
- sentryward-0.1.0/cpp/src/diagnostics/scoped_deadline.cpp +48 -0
- sentryward-0.1.0/cpp/src/diagnostics/source_memory_profile.cpp +268 -0
- sentryward-0.1.0/cpp/src/diagnostics/trace_memory_profile.cpp +31 -0
- sentryward-0.1.0/cpp/src/equivalence/bit_origins.cpp +516 -0
- sentryward-0.1.0/cpp/src/equivalence/bounded_index_translation.cpp +241 -0
- sentryward-0.1.0/cpp/src/equivalence/bounded_linear_reduction.cpp +455 -0
- sentryward-0.1.0/cpp/src/equivalence/causal_region_certificate.cpp +762 -0
- sentryward-0.1.0/cpp/src/equivalence/comparison_context.cpp +259 -0
- sentryward-0.1.0/cpp/src/equivalence/constant_values.cpp +293 -0
- sentryward-0.1.0/cpp/src/equivalence/conversion_uses.cpp +320 -0
- sentryward-0.1.0/cpp/src/equivalence/egraph.cpp +13483 -0
- sentryward-0.1.0/cpp/src/equivalence/epoch_work_allowance.cpp +40 -0
- sentryward-0.1.0/cpp/src/equivalence/finite_prefix_certificate.cpp +299 -0
- sentryward-0.1.0/cpp/src/equivalence/fold_rewriting.cpp +358 -0
- sentryward-0.1.0/cpp/src/equivalence/input_mapping.cpp +497 -0
- sentryward-0.1.0/cpp/src/equivalence/integer_interval.cpp +167 -0
- sentryward-0.1.0/cpp/src/equivalence/lexical_scope.cpp +133 -0
- sentryward-0.1.0/cpp/src/equivalence/main.cpp +164 -0
- sentryward-0.1.0/cpp/src/equivalence/math_intrinsics.cpp +752 -0
- sentryward-0.1.0/cpp/src/equivalence/moment_certificate.cpp +340 -0
- sentryward-0.1.0/cpp/src/equivalence/numeric_semantics.cpp +88 -0
- sentryward-0.1.0/cpp/src/equivalence/numerical_abstraction.cpp +322 -0
- sentryward-0.1.0/cpp/src/equivalence/output_family.cpp +179 -0
- sentryward-0.1.0/cpp/src/equivalence/output_mapping.cpp +180 -0
- sentryward-0.1.0/cpp/src/equivalence/packed_values.cpp +388 -0
- sentryward-0.1.0/cpp/src/equivalence/partitioned_outputs.cpp +159 -0
- sentryward-0.1.0/cpp/src/equivalence/polynomial_certificate.cpp +266 -0
- sentryward-0.1.0/cpp/src/equivalence/program.cpp +215 -0
- sentryward-0.1.0/cpp/src/equivalence/representation_rewriting.cpp +371 -0
- sentryward-0.1.0/cpp/src/event_ir/dag.cpp +238 -0
- sentryward-0.1.0/cpp/src/event_ir/lowering.cpp +623 -0
- sentryward-0.1.0/cpp/src/event_ir/origin_map.cpp +103 -0
- sentryward-0.1.0/cpp/src/event_ir/program.cpp +114 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/address_expression.cpp +99 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/branch_scope_capture.cpp +248 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/certified_branch_scope.cpp +429 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/config.cpp +929 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/correctness_checkpoint_version.h.in +2 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/execution.cpp +3491 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/execution_records.cpp +270 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/group2_lifetime.cpp +596 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/known_bits.cpp +100 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/layouts.cpp +989 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/lowering.cpp +2624 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/main.cpp +121 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/matrix.cpp +126 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/named_phases.cpp +77 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/operands.cpp +181 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/parser.cpp +568 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/public_input_inference.cpp +179 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/public_input_memory.cpp +81 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/public_input_normalize.cpp +357 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/public_input_parse.cpp +278 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/readonly_origin.cpp +247 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/refinement.cpp +547 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/resources.cpp +900 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/rounded_sign.cpp +62 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/run.cpp +1520 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/selector_patterns.cpp +205 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/semantic_memory_link.inc +347 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/semantic_program.cpp +973 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/semantics.cpp +287 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/serialization.cpp +617 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/shared_execution.cpp +147 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/source_dump.cpp +325 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/template_execution.h +314 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/tensor_maps.cpp +187 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/tmem_lifetime.cpp +1083 -0
- sentryward-0.1.0/cpp/src/frontend/ptx/value_ir.cpp +2833 -0
- sentryward-0.1.0/cpp/src/io/source_json.cpp +1642 -0
- sentryward-0.1.0/cpp/src/io/source_storage.cpp +35 -0
- sentryward-0.1.0/cpp/src/io/tmem_recovery.cpp +163 -0
- sentryward-0.1.0/cpp/src/memory/access.cpp +325 -0
- sentryward-0.1.0/cpp/src/memory/address_solver_none.cpp +10 -0
- sentryward-0.1.0/cpp/src/memory/address_solver_z3.cpp +118 -0
- sentryward-0.1.0/cpp/src/memory/conflict_order.cpp +122 -0
- sentryward-0.1.0/cpp/src/memory/constant_address_candidates.cpp +225 -0
- sentryward-0.1.0/cpp/src/memory/constant_address_model.cpp +333 -0
- sentryward-0.1.0/cpp/src/memory/family_access.cpp +77 -0
- sentryward-0.1.0/cpp/src/memory/family_conflict_order.cpp +128 -0
- sentryward-0.1.0/cpp/src/memory/symbolic_address_model.cpp +787 -0
- sentryward-0.1.0/cpp/src/reference_guided/affine_output_dispatch.hpp +252 -0
- sentryward-0.1.0/cpp/src/reference_guided/affine_output_dispatch_tests.hpp +258 -0
- sentryward-0.1.0/cpp/src/reference_guided/affine_state_pattern.hpp +490 -0
- sentryward-0.1.0/cpp/src/reference_guided/affine_state_pattern_tests.hpp +206 -0
- sentryward-0.1.0/cpp/src/reference_guided/blocked_component_fubini_tests.hpp +185 -0
- sentryward-0.1.0/cpp/src/reference_guided/body_coordinate_instantiation_tests.hpp +86 -0
- sentryward-0.1.0/cpp/src/reference_guided/body_predicate_instantiation_tests.hpp +48 -0
- sentryward-0.1.0/cpp/src/reference_guided/caller_context.hpp +66 -0
- sentryward-0.1.0/cpp/src/reference_guided/canonical_scaled_sum_tests.hpp +224 -0
- sentryward-0.1.0/cpp/src/reference_guided/certified_state_pattern_canonicalizer.hpp +151 -0
- sentryward-0.1.0/cpp/src/reference_guided/certified_state_pattern_canonicalizer_tests.hpp +110 -0
- sentryward-0.1.0/cpp/src/reference_guided/checker.hpp +1459 -0
- sentryward-0.1.0/cpp/src/reference_guided/cli.cpp +2 -0
- sentryward-0.1.0/cpp/src/reference_guided/comparison_runner.hpp +42 -0
- sentryward-0.1.0/cpp/src/reference_guided/compiler_log2_tests.hpp +86 -0
- sentryward-0.1.0/cpp/src/reference_guided/context_report.hpp +48 -0
- sentryward-0.1.0/cpp/src/reference_guided/coordinate_relations.hpp +243 -0
- sentryward-0.1.0/cpp/src/reference_guided/coordinate_relations_tests.hpp +166 -0
- sentryward-0.1.0/cpp/src/reference_guided/core.hpp +920 -0
- sentryward-0.1.0/cpp/src/reference_guided/distributed_log2e_tests.hpp +118 -0
- sentryward-0.1.0/cpp/src/reference_guided/equivalence_context.hpp +217 -0
- sentryward-0.1.0/cpp/src/reference_guided/exact_proof_reuse.hpp +105 -0
- sentryward-0.1.0/cpp/src/reference_guided/exact_proof_reuse_tests.hpp +60 -0
- sentryward-0.1.0/cpp/src/reference_guided/exponential_equivalence.hpp +64 -0
- sentryward-0.1.0/cpp/src/reference_guided/exponential_log_tests.hpp +119 -0
- sentryward-0.1.0/cpp/src/reference_guided/exponential_polynomial.hpp +419 -0
- sentryward-0.1.0/cpp/src/reference_guided/exponential_polynomial_tests.hpp +231 -0
- sentryward-0.1.0/cpp/src/reference_guided/file_runner.cpp +60 -0
- sentryward-0.1.0/cpp/src/reference_guided/finite_bilinear_projection.hpp +478 -0
- sentryward-0.1.0/cpp/src/reference_guided/finite_bilinear_projection_tests.hpp +157 -0
- sentryward-0.1.0/cpp/src/reference_guided/finite_piece_union.hpp +266 -0
- sentryward-0.1.0/cpp/src/reference_guided/finite_piece_union_tests.hpp +211 -0
- sentryward-0.1.0/cpp/src/reference_guided/finite_state_reuse.hpp +547 -0
- sentryward-0.1.0/cpp/src/reference_guided/finite_state_reuse_tests.hpp +304 -0
- sentryward-0.1.0/cpp/src/reference_guided/fixed_input_context_tests.hpp +168 -0
- sentryward-0.1.0/cpp/src/reference_guided/floating_idiom_pass.hpp +140 -0
- sentryward-0.1.0/cpp/src/reference_guided/fp4_boundary_tests.hpp +192 -0
- sentryward-0.1.0/cpp/src/reference_guided/fp4_coordinate_distribution_tests.hpp +231 -0
- sentryward-0.1.0/cpp/src/reference_guided/importer.hpp +2061 -0
- sentryward-0.1.0/cpp/src/reference_guided/importer_scope_sharing_tests.hpp +331 -0
- sentryward-0.1.0/cpp/src/reference_guided/index_radix_followup_tests.hpp +135 -0
- sentryward-0.1.0/cpp/src/reference_guided/input.hpp +99 -0
- sentryward-0.1.0/cpp/src/reference_guided/input_contract.hpp +64 -0
- sentryward-0.1.0/cpp/src/reference_guided/int4_local_rules_tests.hpp +307 -0
- sentryward-0.1.0/cpp/src/reference_guided/kda_small_fixes_tests.hpp +146 -0
- sentryward-0.1.0/cpp/src/reference_guided/legacy_fixed_input_context.hpp +359 -0
- sentryward-0.1.0/cpp/src/reference_guided/linear_reduction_pattern.hpp +747 -0
- sentryward-0.1.0/cpp/src/reference_guided/linear_reduction_pattern_tests.hpp +291 -0
- sentryward-0.1.0/cpp/src/reference_guided/linear_unclosed_targets_tests.hpp +121 -0
- sentryward-0.1.0/cpp/src/reference_guided/main.cpp +473 -0
- sentryward-0.1.0/cpp/src/reference_guided/online_softmax_lse_tests.hpp +203 -0
- sentryward-0.1.0/cpp/src/reference_guided/online_softmax_pattern.hpp +627 -0
- sentryward-0.1.0/cpp/src/reference_guided/online_softmax_pattern_tests.hpp +373 -0
- sentryward-0.1.0/cpp/src/reference_guided/packed_decode.hpp +361 -0
- sentryward-0.1.0/cpp/src/reference_guided/packed_decode_tests.hpp +116 -0
- sentryward-0.1.0/cpp/src/reference_guided/paged_maximum_domains_tests.hpp +134 -0
- sentryward-0.1.0/cpp/src/reference_guided/production.cpp +265 -0
- sentryward-0.1.0/cpp/src/reference_guided/production.hpp +11 -0
- sentryward-0.1.0/cpp/src/reference_guided/production_tests.hpp +296 -0
- sentryward-0.1.0/cpp/src/reference_guided/scalar_sum.hpp +175 -0
- sentryward-0.1.0/cpp/src/reference_guided/scalar_sum_tests.hpp +135 -0
- sentryward-0.1.0/cpp/src/reference_guided/scoped_predicate.hpp +318 -0
- sentryward-0.1.0/cpp/src/reference_guided/scoped_predicate_tests.hpp +138 -0
- sentryward-0.1.0/cpp/src/reference_guided/tests.cpp +1239 -0
- sentryward-0.1.0/cpp/src/reference_guided/ue4m3_input_tests.hpp +130 -0
- sentryward-0.1.0/cpp/src/reference_guided/unary_reduction_composition.hpp +178 -0
- sentryward-0.1.0/cpp/src/reference_guided/unary_reduction_composition_tests.hpp +105 -0
- sentryward-0.1.0/cpp/src/reference_guided/welford_pattern.hpp +520 -0
- sentryward-0.1.0/cpp/src/reference_guided/welford_pattern_tests.hpp +168 -0
- sentryward-0.1.0/cpp/src/reference_guided/whole_expression_templates.hpp +521 -0
- sentryward-0.1.0/cpp/src/reference_guided/whole_expression_templates_tests.hpp +173 -0
- sentryward-0.1.0/cpp/src/reference_guided/xor_coordinate.hpp +218 -0
- sentryward-0.1.0/cpp/src/reference_guided/xor_coordinate_tests.hpp +166 -0
- sentryward-0.1.0/cpp/src/scalar_fold/artifact.cpp +198 -0
- sentryward-0.1.0/cpp/src/scalar_fold/consolidate_outputs.cpp +285 -0
- sentryward-0.1.0/cpp/src/scalar_fold/graph.cpp +463 -0
- sentryward-0.1.0/cpp/src/scalar_fold/real_expression_builder.cpp +426 -0
- sentryward-0.1.0/cpp/src/scalar_fold/reduction_builder.cpp +721 -0
- sentryward-0.1.0/cpp/src/semantics/barrier_state.cpp +246 -0
- sentryward-0.1.0/cpp/src/semantics/collective_state.cpp +87 -0
- sentryward-0.1.0/cpp/src/semantics/reference_trace.cpp +146 -0
- sentryward-0.1.0/cpp/src/semantics/simulator.cpp +1275 -0
- sentryward-0.1.0/cpp/src/solver/dinic.cpp +185 -0
- sentryward-0.1.0/cpp/src/solver/minimum_weight_ideal.cpp +280 -0
- sentryward-0.1.0/cpp/src/source_ir/builder.cpp +105 -0
- sentryward-0.1.0/cpp/src/source_ir/diagnostic.cpp +89 -0
- sentryward-0.1.0/cpp/src/source_ir/initialization_recovery.cpp +215 -0
- sentryward-0.1.0/cpp/src/source_ir/ptx_assumptions.cpp +142 -0
- sentryward-0.1.0/cpp/src/source_ir/validator.cpp +786 -0
- sentryward-0.1.0/cpp/src/value_analysis/checkpoint.cpp +89 -0
- sentryward-0.1.0/cpp/src/value_analysis/indexed_source.cpp +2669 -0
- sentryward-0.1.0/cpp/src/value_analysis/memory_elimination.cpp +731 -0
- sentryward-0.1.0/cpp/src/value_analysis/passes.cpp +283 -0
- sentryward-0.1.0/cpp/src/value_analysis/printer.cpp +550 -0
- sentryward-0.1.0/cpp/src/value_analysis/scalar_fold_lowering.cpp +4239 -0
- sentryward-0.1.0/cpp/src/value_analysis/view_normalization.cpp +1296 -0
- sentryward-0.1.0/cpp/src/value_ir/checkpoint_codec.cpp +210 -0
- sentryward-0.1.0/cpp/src/value_ir/checkpoint_codec.h +33 -0
- sentryward-0.1.0/cpp/src/value_ir/graph.cpp +1268 -0
- sentryward-0.1.0/cpp/src/value_ir/native_matrix.cpp +135 -0
- sentryward-0.1.0/cpp/src/value_ir/operations.cpp +522 -0
- sentryward-0.1.0/cpp/src/value_ir/printer.cpp +380 -0
- sentryward-0.1.0/cpp/src/value_ir/ptx_operation.cpp +167 -0
- sentryward-0.1.0/cpp/src/value_ir/type.cpp +141 -0
- sentryward-0.1.0/docs/checkpoints/2026-10-08-small-fold/README.md +151 -0
- sentryward-0.1.0/docs/checkpoints/2026-10-08-small-fold/corpus-primary.json +3385 -0
- sentryward-0.1.0/docs/checkpoints/2026-10-08-small-fold/corpus-secondary.json +3352 -0
- sentryward-0.1.0/docs/checkpoints/2026-10-08-small-fold/paged-h128-comparison.json +21 -0
- sentryward-0.1.0/docs/checkpoints/2026-10-08-small-fold/paged-h128-generation.json +60 -0
- sentryward-0.1.0/docs/development.md +158 -0
- sentryward-0.1.0/docs/kernel-verification-results.json +9075 -0
- sentryward-0.1.0/docs/kernel-verification-results.md +325 -0
- sentryward-0.1.0/docs/public-api.md +39 -0
- sentryward-0.1.0/docs/reference-guided-integration.md +119 -0
- sentryward-0.1.0/docs/reference-guided-upstream-manifest.json +65 -0
- sentryward-0.1.0/docs/result-contract.md +223 -0
- sentryward-0.1.0/docs/value-expressions.md +185 -0
- sentryward-0.1.0/pyproject.toml +106 -0
- sentryward-0.1.0/sentryward/__init__.py +8 -0
- sentryward-0.1.0/sentryward/__main__.py +23 -0
- sentryward-0.1.0/sentryward/_capture_reference.py +62 -0
- sentryward-0.1.0/sentryward/_paths.py +34 -0
- sentryward-0.1.0/sentryward/_reference/__init__.py +5 -0
- sentryward-0.1.0/sentryward/_reference/__main__.py +41 -0
- sentryward-0.1.0/sentryward/_reference/capture.py +84 -0
- sentryward-0.1.0/sentryward/_reference/graph.py +45 -0
- sentryward-0.1.0/sentryward/_reference/lowering.py +410 -0
- sentryward-0.1.0/sentryward/_reference/normalize.py +45 -0
- sentryward-0.1.0/sentryward/_reference/partition.py +306 -0
- sentryward-0.1.0/sentryward/_reference_binding.py +95 -0
- sentryward-0.1.0/sentryward/api.py +106 -0
- sentryward-0.1.0/sentryward/assumptions.py +43 -0
- sentryward-0.1.0/sentryward/diagnostics/__init__.py +1 -0
- sentryward-0.1.0/sentryward/diagnostics/conflict_report.py +139 -0
- sentryward-0.1.0/sentryward/frontend/__init__.py +2 -0
- sentryward-0.1.0/sentryward/frontend/ptx_native.py +217 -0
- sentryward-0.1.0/sentryward/input_audit/__init__.py +6 -0
- sentryward-0.1.0/sentryward/input_audit/input/__init__.py +1 -0
- sentryward-0.1.0/sentryward/input_audit/input/bindings.py +33 -0
- sentryward-0.1.0/sentryward/input_audit/input/model.py +95 -0
- sentryward-0.1.0/sentryward/input_audit/input/parse.py +266 -0
- sentryward-0.1.0/sentryward/input_audit/input/tma.py +72 -0
- sentryward-0.1.0/sentryward/input_audit/ptx/__init__.py +1 -0
- sentryward-0.1.0/sentryward/input_audit/ptx/model.py +235 -0
- sentryward-0.1.0/sentryward/input_audit/ptx/parser.py +1102 -0
- sentryward-0.1.0/sentryward/memory.py +41 -0
- sentryward-0.1.0/sentryward/native.py +425 -0
- sentryward-0.1.0/sentryward/results.py +225 -0
- sentryward-0.1.0/sentryward/source_ir.py +658 -0
- sentryward-0.1.0/vendor/nlohmann_json/LICENSE.MIT +21 -0
- sentryward-0.1.0/vendor/nlohmann_json/README.md +9 -0
- sentryward-0.1.0/vendor/nlohmann_json/single_include/nlohmann/json.hpp +25526 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# OS files
|
|
2
|
+
.DS_Store
|
|
3
|
+
._*
|
|
4
|
+
Thumbs.db
|
|
5
|
+
|
|
6
|
+
# Editor state
|
|
7
|
+
.idea/
|
|
8
|
+
.vscode/
|
|
9
|
+
*.swp
|
|
10
|
+
*.swo
|
|
11
|
+
*~
|
|
12
|
+
|
|
13
|
+
# Local environments
|
|
14
|
+
.env
|
|
15
|
+
.env.*
|
|
16
|
+
!.env.example
|
|
17
|
+
.venv/
|
|
18
|
+
.venv-*/
|
|
19
|
+
env/
|
|
20
|
+
venv/
|
|
21
|
+
|
|
22
|
+
# Python outputs
|
|
23
|
+
__pycache__/
|
|
24
|
+
*.py[cod]
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.pytest_cache/
|
|
27
|
+
.mypy_cache/
|
|
28
|
+
.pyright/
|
|
29
|
+
.ruff_cache/
|
|
30
|
+
.coverage
|
|
31
|
+
.coverage.*
|
|
32
|
+
htmlcov/
|
|
33
|
+
|
|
34
|
+
# Tool caches and dependencies
|
|
35
|
+
.cache/
|
|
36
|
+
.ipynb_checkpoints/
|
|
37
|
+
node_modules/
|
|
38
|
+
|
|
39
|
+
# Project build workspace
|
|
40
|
+
/build/
|
|
41
|
+
|
|
42
|
+
# Python distribution outputs
|
|
43
|
+
/dist/
|
|
44
|
+
/wheelhouse/
|
|
45
|
+
|
|
46
|
+
# Local agent instructions
|
|
47
|
+
/AGENTS.md
|
|
48
|
+
|
|
49
|
+
# Separate repositories
|
|
50
|
+
/paper/
|
|
51
|
+
/vendor/cutlass/
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# Configurable assumptions
|
|
2
|
+
|
|
3
|
+
These assumptions can be enabled or disabled to select the behavior analyzed by
|
|
4
|
+
the verifier. The pool is defined in [config/assumption-pool.json](config/assumption-pool.json);
|
|
5
|
+
defaults are maintained in [config/default-assumptions.json](config/default-assumptions.json).
|
|
6
|
+
|
|
7
|
+
## A001 — Warp-wide TMEM read completion
|
|
8
|
+
|
|
9
|
+
Configuration key: `warp_tmem_load_completion`.
|
|
10
|
+
|
|
11
|
+
Assume that all lanes' TMEM reads complete before any lane receives its register
|
|
12
|
+
results. This adds completion dependencies across lanes in the same warp.
|
|
13
|
+
|
|
14
|
+
- **Enabled:** analyze with these dependencies. Lifecycle and memory-race findings
|
|
15
|
+
excluded by the added ordering remain visible as A001 warnings, with concrete
|
|
16
|
+
instruction or access pairs. Unaffected findings remain errors.
|
|
17
|
+
- **Disabled:** analyze the original completion dependencies and report any
|
|
18
|
+
resulting race or lifecycle error.
|
|
19
|
+
|
|
20
|
+
Warnings have bounded samples and a total count. The output records whether the
|
|
21
|
+
comparison completed; an unsuccessful comparison does not establish absence of
|
|
22
|
+
excluded findings.
|
|
23
|
+
|
|
24
|
+
## A002 — Benign duplicate TMA stores
|
|
25
|
+
|
|
26
|
+
Configuration key: `duplicate_tma_store_benign`.
|
|
27
|
+
|
|
28
|
+
Assume that matching duplicate TMA stores issued by different lanes of the same
|
|
29
|
+
warp are benign. Matching requires the same PTX instruction occurrence and copy
|
|
30
|
+
footprints; equality of the stored values is assumed rather than proved.
|
|
31
|
+
|
|
32
|
+
- **Enabled:** report matching unordered stores as warnings and continue checking
|
|
33
|
+
other accesses. A complete check with no remaining race or unresolved query
|
|
34
|
+
returns `race_free`, with warnings reported separately.
|
|
35
|
+
- **Disabled:** report these unordered, overlapping writes as race candidates.
|
|
36
|
+
|
|
37
|
+
## A003 — Immediate memory visibility
|
|
38
|
+
|
|
39
|
+
Configuration key: `immediate_visibility`.
|
|
40
|
+
|
|
41
|
+
Assume that a memory effect becomes visible to other participants immediately
|
|
42
|
+
when it executes. Asynchronous operations still execute separately from their
|
|
43
|
+
issue instructions and require completion synchronization.
|
|
44
|
+
|
|
45
|
+
- **Enabled:** analyze immediate visibility. Pure visibility/ordering fences add
|
|
46
|
+
no constraints. Async completion waits and synchronization remain modeled.
|
|
47
|
+
Combined operations such as `tensormap.cp_fenceproxy` retain their copy effects;
|
|
48
|
+
only their visibility-ordering component is ignored.
|
|
49
|
+
- **Disabled:** report unsupported because weak-memory analysis is unavailable,
|
|
50
|
+
with a suggestion to enable A003.
|
|
51
|
+
|
|
52
|
+
## A004 — Representative elected lane
|
|
53
|
+
|
|
54
|
+
Configuration key: `representative_election`.
|
|
55
|
+
|
|
56
|
+
Assume that analyzing one representative election outcome is sufficient. Choose
|
|
57
|
+
lane 0 when it participates; otherwise choose the lowest-numbered participating
|
|
58
|
+
lane.
|
|
59
|
+
|
|
60
|
+
- **Enabled:** analyze that elected lane's execution.
|
|
61
|
+
- **Disabled:** report election instructions as unsupported, with a suggestion
|
|
62
|
+
to enable A004.
|
|
63
|
+
|
|
64
|
+
## A005 — Failed cluster launch cancellation
|
|
65
|
+
|
|
66
|
+
Configuration key: `clc_always_fails`.
|
|
67
|
+
|
|
68
|
+
Assume that every cluster launch cancellation (CLC) request fails. A CTA therefore
|
|
69
|
+
does not acquire additional work from a canceled launch.
|
|
70
|
+
|
|
71
|
+
- **Enabled:** analyze the failed-request path.
|
|
72
|
+
- **Disabled:** report CLC instructions as unsupported, with a suggestion to
|
|
73
|
+
enable A005.
|
|
74
|
+
|
|
75
|
+
## A006 — Representative data-dependent control
|
|
76
|
+
|
|
77
|
+
Configuration key: `representative_data_branches`. Related input key:
|
|
78
|
+
`data_branch_loop_iterations` (optional positive integer; default `4`).
|
|
79
|
+
|
|
80
|
+
Some branches and instruction guards depend on values that the fixed input does
|
|
81
|
+
not determine, such as tensor contents or metadata buffers that were not supplied
|
|
82
|
+
through `shape_arrays`. Assume that analyzing one recorded representative outcome
|
|
83
|
+
for such control is sufficient:
|
|
84
|
+
|
|
85
|
+
- a data-dependent loop body runs `data_branch_loop_iterations` times;
|
|
86
|
+
- a branch direction whose straight-line code ends in `trap` or `__assertfail`
|
|
87
|
+
is never chosen;
|
|
88
|
+
- an undetermined instruction guard executes.
|
|
89
|
+
|
|
90
|
+
Before A006 is considered, a forward region whose arms only compute or read
|
|
91
|
+
parameter, local or constant memory is skipped exactly, whether or not A006 is
|
|
92
|
+
enabled: neither outcome has a memory or synchronization effect, and every
|
|
93
|
+
register the region writes becomes unknown. This extends the single-arm
|
|
94
|
+
treatment to if-else and nested arms; results list these regions under
|
|
95
|
+
`frontend_assumptions.opaque_compute_regions`. Flag polling loops are left only
|
|
96
|
+
under A007.
|
|
97
|
+
|
|
98
|
+
A006 is a last resort. It applies only after ordinary execution, including the
|
|
99
|
+
shared-memory cluster re-execution and the exact treatment above, has stopped on
|
|
100
|
+
undetermined control, so it never changes a kernel that the fixed input already
|
|
101
|
+
determines. Every lane makes
|
|
102
|
+
the same choice at a given branch visit. Results list each decided PTX line, the
|
|
103
|
+
rule used and the taken/not-taken counts under
|
|
104
|
+
`frontend_assumptions.data_branch_decisions`.
|
|
105
|
+
|
|
106
|
+
The analyzed execution need not be one that any real input produces. Choices are
|
|
107
|
+
made independently, so two tests of the same value can disagree; divergence that
|
|
108
|
+
a real input would cause between lanes is not explored; and a race that needs
|
|
109
|
+
more loop iterations than the bound, such as a pipeline that has to wrap around,
|
|
110
|
+
is not reached. Prefer supplying the data (`arguments`, `shape_arrays`), which
|
|
111
|
+
keeps the analysis exact, and set the iteration bound above the deepest pipeline
|
|
112
|
+
the kernel cycles through.
|
|
113
|
+
|
|
114
|
+
- **Enabled:** analyze the representative outcome and record the decisions.
|
|
115
|
+
- **Disabled:** report `branch_not_static` (or `missing_parameter_value`), with
|
|
116
|
+
a suggestion to supply the data or enable A006.
|
|
117
|
+
|
|
118
|
+
## A007 — Terminating spin-waits
|
|
119
|
+
|
|
120
|
+
Configuration key: `terminating_spin_waits`.
|
|
121
|
+
|
|
122
|
+
Assume that a loop that only polls (compute, `nanosleep`, and global or generic
|
|
123
|
+
reads from addresses the loop does not change) is eventually released by another
|
|
124
|
+
agent, such as another CTA setting a flag. Every iteration touches the same
|
|
125
|
+
locations, so leaving after one poll keeps the CTA's memory and synchronization
|
|
126
|
+
effects; registers written in the loop become unknown. Like A006, A007 applies
|
|
127
|
+
only after ordinary execution has stopped on the loop's undetermined condition.
|
|
128
|
+
Results list these loops under `frontend_assumptions.spin_wait_exits`.
|
|
129
|
+
|
|
130
|
+
A kernel whose flag is never set hangs on hardware; under A007 that hang is not
|
|
131
|
+
reported.
|
|
132
|
+
|
|
133
|
+
- **Enabled:** leave polling loops after one poll and record them.
|
|
134
|
+
- **Disabled:** report `branch_not_static` for the loop's condition.
|
|
135
|
+
|
|
136
|
+
## Address invariants
|
|
137
|
+
|
|
138
|
+
Input key: `address_invariants` (optional array; default `[]`).
|
|
139
|
+
|
|
140
|
+
Unlike A001–A007, address invariants are not on/off flags. They are trusted
|
|
141
|
+
facts about runtime address values that the symbolic address model may use to
|
|
142
|
+
prove two memory accesses disjoint. The verifier does not check them. If an
|
|
143
|
+
invariant is false for the analyzed execution, a real race may be reported as
|
|
144
|
+
safe. Any nonempty set makes the result `assumption_dependent`, and results
|
|
145
|
+
repeat the set under `address_model.address_invariants`.
|
|
146
|
+
|
|
147
|
+
### How the address model uses them
|
|
148
|
+
|
|
149
|
+
Each address is an allocation plus an offset `c0 + sum(ck * atom_k)`. An atom is
|
|
150
|
+
one runtime value identified by where it came from, so repeated uses of the
|
|
151
|
+
same value share one atom. The model first reuses the exact constant-offset
|
|
152
|
+
analysis. Pairs it cannot decide go through two layers:
|
|
153
|
+
|
|
154
|
+
- **Allocation separation (no invariants needed).** Accesses in different known
|
|
155
|
+
memory spaces, or in different named allocations of one space, are disjoint.
|
|
156
|
+
Allocations sharing an alias scope, `generic` addresses, and unresolved
|
|
157
|
+
allocations are not separated.
|
|
158
|
+
- **SMT layer.** For two accesses in the same allocation, the model asks Z3
|
|
159
|
+
whether the byte ranges can intersect under the invariants. They are disjoint
|
|
160
|
+
only if Z3 proves they cannot. A satisfiable result, a timeout, or an
|
|
161
|
+
inconsistent invariant set leaves the pair unresolved; the reason includes a
|
|
162
|
+
candidate valuation when one exists. Offsets differing by a constant are
|
|
163
|
+
decided without the solver, and an intersection is then reported as an
|
|
164
|
+
overlap for every valuation.
|
|
165
|
+
|
|
166
|
+
Without invariants, and in builds configured with `-DSENTRYWARD_WITH_Z3=OFF`,
|
|
167
|
+
same-allocation pairs with symbolic offsets stay unresolved.
|
|
168
|
+
|
|
169
|
+
### Invariant forms
|
|
170
|
+
|
|
171
|
+
Each array entry is an object of one of these forms:
|
|
172
|
+
|
|
173
|
+
| Form | Meaning |
|
|
174
|
+
| --- | --- |
|
|
175
|
+
| `{"term": T, "lower_bound": L, "upper_bound": U, "multiple_of": M}` | `L <= T <= U` and `T` is divisible by `M` (a positive integer). At least one of the three fields is required; bounds are inclusive. |
|
|
176
|
+
| `{"gather": "g", "injective": true, "lower_bound": L, "upper_bound": U}` | Every lookup in table `g` lies in `[L, U]`. If injective, different ground arguments give different results. |
|
|
177
|
+
| `{"joint_injective": ["r", "s", ...]}` | For different ground arguments, at least one of the named tables gives different results. |
|
|
178
|
+
| `{"distinct_allocations": ["A", "B", ...]}` | The named allocations are pairwise distinct storage. |
|
|
179
|
+
|
|
180
|
+
Unknown fields, empty names, empty ranges and contradictory term bounds make the
|
|
181
|
+
input invalid.
|
|
182
|
+
|
|
183
|
+
`T` is a scalar expression:
|
|
184
|
+
|
|
185
|
+
- an integer;
|
|
186
|
+
- `{"operator": "param", "symbol": "PAGE"}`: an immutable runtime scalar;
|
|
187
|
+
- `{"operator": "gather", "symbol": "pages", "args": [3]}`: a table lookup with
|
|
188
|
+
integer arguments;
|
|
189
|
+
- `add`, `sub`, `mul` or `neg` with an `operands` array.
|
|
190
|
+
|
|
191
|
+
A product of two non-constant operands becomes its own atom with no assumed
|
|
192
|
+
value. A term that names that product can still bound it.
|
|
193
|
+
|
|
194
|
+
Allocation names in `distinct_allocations` are binding allocation names (for
|
|
195
|
+
example `epilogue.tensormaps`), or symbolic targets of runtime tensor maps. A
|
|
196
|
+
TMA transfer whose tensor map's global address is unknown reads
|
|
197
|
+
`tensor_map_target(<location>+<offset>)`, where the location and offset identify
|
|
198
|
+
where the tensor map is stored. Unresolved-pair diagnostics print these names.
|
|
199
|
+
Two tensor-map targets are never assumed equal or distinct without an
|
|
200
|
+
invariant.
|
|
201
|
+
|
|
202
|
+
Example: page table `pages` maps logical blocks to distinct physical pages, and
|
|
203
|
+
the tensor read through one tensor map does not alias a workspace:
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
"address_invariants": [
|
|
207
|
+
{"gather": "pages", "injective": true, "lower_bound": 0},
|
|
208
|
+
{"distinct_allocations": ["tensor_map_target(input.arg0.1184+0)", "epilogue.tensormaps"]}
|
|
209
|
+
]
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
The PTX frontend does not yet emit `param` or `gather` atoms. Today the SMT
|
|
213
|
+
layer applies to operand-derived offsets and to source JSON produced by other
|
|
214
|
+
tools, while `distinct_allocations` applies directly to frontend output.
|