gpuwm-hex 0.3.2__tar.gz → 0.3.3__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.
- {gpuwm_hex-0.3.2/src/gpuwm_hex.egg-info → gpuwm_hex-0.3.3}/PKG-INFO +2 -2
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/README.md +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/hex-point-hrrr.md +5 -2
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/02-quickstart.md +4 -3
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/06-forecast.md +41 -14
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/index.md +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/pyproject.toml +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3/src/gpuwm_hex.egg-info}/PKG-INFO +2 -2
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/gpuwm_hex.egg-info/SOURCES.txt +2 -0
- gpuwm_hex-0.3.3/src/hexcore/cuda_backend/arch_admission.py +735 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/doctor.py +180 -2
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/drivers/run_cuda_v841_forecast.py +257 -3
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/drivers/run_cuda_v841_full_physics_x4.py +13 -6
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/forecast_door.py +105 -34
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/hrrr_intermediate.py +12 -6
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/render_door.py +5 -1
- gpuwm_hex-0.3.3/tests/_layout.py +59 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/conftest.py +3 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_admission_strings.py +6 -0
- gpuwm_hex-0.3.3/tests/test_arch_admission.py +2531 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_capacity_copy_elisions.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_cell_coordination_admission.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_convection_admission.py +4 -6
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_cuda_regional_kernels.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_cuda_v841_full_physics_x4.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_cycle_cascade.py +3 -2
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_device_admission.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_dt_admission.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_dual_edge_admission.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_element_parallel_kernels.py +2 -1
- gpuwm_hex-0.3.3/tests/test_f000_start_frame.py +236 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_forecast_door.py +102 -15
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_forecast_preset.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_history_refl_q2.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_hrrr_intermediate.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_kernel_element_ab.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_mesh_rows.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_native_free_init_admission_305.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_nvrtc_reciprocal_rewrite.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_packaging_declaration.py +4 -5
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_pbl_cadence.py +5 -4
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_physics_rollback_policy.py +3 -2
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_proof_guard_ordering.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_proof_guard_pins.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_regional_forecast_anchor.py +3 -2
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_regional_mesh_binding.py +2 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_regional_physics_seam.py +6 -5
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_render_door.py +53 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_solve_region_checks.py +6 -3
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_source_manifests.py +3 -2
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_wheel_reach.py +6 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/audit_nvrtc_reciprocal_rewrite.py +6 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/battery/cpu_files.txt +5 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/diagnose_v841_restart_step16_x4.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/dump_1gpu_step_arrays.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/gate_v841_forecast_fork_equivalence.py +20 -2
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/kernel_element_ab.py +17 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_v841_lw_capture_engine_inputs.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_v841_lw_localize.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_v841_lw_purity.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_v841_lw_purity_lwfix.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_v841_lw_purity_lwfix2.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_backend_benchmark.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_jw_dualrun.py +0 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_v841_forecast_2gpu.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_v841_jw_dualrun.py +0 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_v841_numeric_ruler.py +0 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_v841_real_x4.py +0 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_x1_163842_stabilized_products.py +1 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_real_gfs_cuda_forecast.py +0 -1
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_v841_smagorinsky_authority_pin.py +1 -1
- gpuwm_hex-0.3.2/src/hexcore/cuda_backend/arch_admission.py +0 -199
- gpuwm_hex-0.3.2/tests/test_arch_admission.py +0 -336
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/LICENSE +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/MANIFEST.in +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/NOTICE +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/cycle-door.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/declared-divergences.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/device-memory-ledger.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/init-door.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/local-timestep-lam.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/01-what-this-is.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/03-concepts.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/04-meshes-and-static.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/05-initial-conditions.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/07-render.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/08-troubleshooting.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/manual/09-reference.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/native-free-init-admission.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/obs-referee.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/render-door.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/docs/source-matrix.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/evidence/EVIDENCE.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/setup.cfg +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/gpuwm_hex.egg-info/dependency_links.txt +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/gpuwm_hex.egg-info/entry_points.txt +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/gpuwm_hex.egg-info/requires.txt +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/gpuwm_hex.egg-info/top_level.txt +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/__init__.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/__main__.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/acoustic.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/acoustic_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cascade_row.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cell_coordination_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cli.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/config.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/config_lts.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/config_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/convection_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_acoustic.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_acoustic_lts.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_acoustic_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_arwen_physics_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_backend/__init__.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_backend/compile_contract.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_backend/containers.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_backend/recovery.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_backend/regional_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_backend/runtime.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_driver.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_driver_lts.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_dualrun.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_dynamics_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_fp32.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_ftz.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_ftz_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_gwdo_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_horizontal.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_horizontal_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_physics_prep_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_physics_tier_park_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_physics_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_regional_forecast_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_regional_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_solve_region_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_transport.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_transport_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cuda_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cull_door.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cycle/__init__.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cycle/chain.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cycle/delayed_start.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cycle/door.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/cycle/errors.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/damping_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/data/swath/placement-policy.v2.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/data/swath/threat-metrics.v3.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/device_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/diagnostics.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/driver.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/drivers/__init__.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/drivers/mpas_mesh_binding.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/drivers/run_cuda_regional_contract.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/dt_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/dual_edge_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/dynamics.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/dynamics_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/engine_pin.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/engines.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/errors.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/forecast_preset.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/horizontal.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/host_identity.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/init_door.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/initialization.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/integration.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/integration_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/lbc.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/libm_identity.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/lts_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/mesh.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/mesh_plan_door.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/mesh_point.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/mesh_row_candidate.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/mesh_rows.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/mesh_spec_gates.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/mixing.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/mixing_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/nomix_oracle.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/__init__.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/__main__.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/acquire.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/align.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/bootstrap.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/bundle.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/canonical.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/cli.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/errors.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/manifest.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/metrics.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/report.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/runner.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/scorecard.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/obs_referee/treatment.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/offcentering_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/oracle.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/output.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/pair_door.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/partition_assets_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/partition_device_scheduler_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/partition_executor_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/partition_local_mesh_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/partition_net_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/partition_state_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/pbl_cadence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/physics_backend_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/physics_seam.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/physics_seam_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/regional_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/regrid.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/rkind_libm.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/rust_renderer.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/shipped_sources.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/species_row.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/state.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/step_oracle.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/__init__.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/detect.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/door.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/errors.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/geometry.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/history.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/hysteresis.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/plan.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/rank.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/registry.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/sizing.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/swath/track.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/terrain.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/timestep_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/tracer_oracle.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/transport.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/vector.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/vertical.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/vertical_spec.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/src/hexcore/wps_intermediate.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_backend_row_builder.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_checkout_reproducibility.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_cuda_physics_tier_park_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_device_capacity.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_device_memory_capacity_tools.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_device_memory_ledger_probes.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_doctor_bridge_mode.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_domain_size_agreement.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_engine_pin.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_forecast_receipt_engine.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_fullstep_projection_probe.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_host_identity.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_init_door.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_lbc.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_libm_identity.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_local_timestep.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_mesh_point.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_mesh_spec_gates.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_mesh_validation.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_moist_coefficients_species_row.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_nest_ratio_ring_shell.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_no_conflict_markers.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_obs_referee.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_p3_seam_ab.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_pair_door.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_partition_device_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_partition_executor_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_physics_backend_rows.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_physics_carrier_kernels.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_plot_pair_gallery.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_point_source_placement.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_prep_species_row.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_refined_region_field.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_regional_class_band.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_regional_mesh_admission.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_regional_runtime.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_species_row.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_species_row_extended.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_swath_composite_spec.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_swath_detect.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_swath_door.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_swath_geometry.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_swath_plan.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_swath_real_forecast.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_swath_registry.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_tier_membership.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_tracked_file_writers_keep_lf.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_vertical_artifact_met_state.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tests/test_vertical_vectorized_equivalence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/analyse_convection_off_ab.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/analyse_pbl_cadence_ab.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/analyze_step_divergence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/audit_donor_padding.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/battery/README.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/battery/asset_gates.txt +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/battery/gpu_gates.txt +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/build_2way_part_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/build_frozen_authority.sh +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/build_nonzero_tracer_input.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/build_partition_assets_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/build_swath_composite_spec.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/build_swath_fixture_history.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/carry_lineage_to_cull.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/chain_forkgate_then_c.sh +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/check_mpas_citations.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/compare_2gpu_invariance_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/compare_native_free_vertical.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/compare_regional_forecast_frames.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/compare_v841_compiled_endpoint.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/compare_v841_restart_step16_dumps.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/cuda_ftz_v841_authority_pins.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/cuda_ftz_v841_binding_validator.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/cuda_ftz_v841_isolated_bootstrap.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/cuda_jw_dualrun_isolated_bootstrap.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_capacity/README.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_capacity/capacity_model.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_capacity/copy_elision_accounting.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_capacity/kernel_reservation_probe.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_capacity/process_memory_probe.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_capacity/runtime_ledger.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_capacity/sibling_contamination_probe.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_ledger/hex_kernel_probe.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_ledger/hex_ledger_probe.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_ledger/kernel_reservation.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_ledger/ledger_table.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_ledger/module_image_probe.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_ledger/report_ledger.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_ledger/reservation_probe.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_ledger/run_arm.sh +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/device_memory_ledger/run_kern.sh +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/diagnose_genmesh_nonfinite.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/diagnose_v841_restart_trace_lwgate.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/evaluate_nonzero_tracer_scan.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/lts_forced_classing.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_domain_size_agreement.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_engine_seam_ab.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_engine_verdicts.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_lam_interior_agreement.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_nvrtc_reciprocal_effect.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_physics_tier_park.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_radiation_chunk_width.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_refined_region_w.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_swath_hysteresis.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/measure_w_band.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/mint_dt_anchor.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/mpas_mesh_binding.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/mpas_operator_oracle/build_and_run.sh +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/mpas_operator_oracle/operator_oracle.F90 +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/mpas_step_oracle/README.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/mpas_step_oracle/build_manifest.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/mpas_step_oracle/extract.sh +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/mpas_step_oracle/extract_step_oracle.F90 +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/nvrtc_compile_check.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/package_nonzero_tracer_oracle.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_cascade_cost.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_domain_size_agreement.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_domain_size_geometry.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_dt_anchor_health.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_dual_edge_evidence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_forecast_admission_evidence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_four_swaths_evidence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_lts_evidence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_pair_gallery.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_swath_as_lam_evidence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_swath_evidence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_swath_first_forecast.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_swath_first_real.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_swath_metrics_evidence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/plot_swath_real_cascade.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/point_source_placement.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_dv_floor_boundary.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_lts_fullstep_projection.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_nvrtc_literal_divisor.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_partition_local_mesh_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_partition_residency_v841.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_physics_tier_residency.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_polygon_attainment.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_regional_ring_shell.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/probe_swath_spec_generable.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/prove_compound_threat_is_data.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/prove_cull_pad_is_data.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/repin_source_tables.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/repro_v841_lw_engine_poison.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_arch_ftz_decks.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_ftz_contract.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_ftz_v841_trust_measurement.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_jw_dualrun_promotion.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_jw_dualrun_trust.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_regional_contract.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_regional_forecast.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_v841_forecast.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_v841_forecast_mesh.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_v841_full_physics_x4.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_cuda_v841_resident_baseline_lwfix.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_dt_anchor_campaign.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_forkgate.sh +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_frozen_jw.sh +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_jw_dry_day.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_lts_dry_gates.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_nonzero_tracer_authority.sh +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_obs_referee.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_real_gfs_cuda_x1_163842.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_real_gfs_forecast.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_real_gfs_initialization.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_regional_dry_ladder.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_rust_renderer_gate.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_swath_placement_chain.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/run_v841_compiled_endpoint_gate.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/scale_region_about_centroid.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/step_match_pbl_cadence_dt5.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/v841_partstream_common.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/tools/validate_cuda_x1_163842_remote_evidence.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/CANONICAL-BUNDLE-CONTRACT.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/GF-HOOK-CONTRACT.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/README.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/admitted-engines.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/premeasure-273-20260913.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/premeasure-274-20260915.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/premeasure-280-20260929.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/repin-273-20260913.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/repin-274-20260915.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/repin-280-20260929.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/seam-ab-capped-2.6.5-vs-2.6.5-with-2.7.3-ysu.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/seam-ab-capped-2.6.5-vs-2.7.3.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/seam-ab-capped-2.6.5-with-2.7.3-ysu-vs-2.7.3.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/seam-ab-capped-2.7.3-vs-2.7.4.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/seam-ab-capped-2.7.4-vs-2.8.0.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/seam-ab-convective-2.6.5-vs-2.7.3.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/seam-ab-convective-2.7.3-vs-2.7.4.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/engine-verdicts/seam-ab-convective-2.7.4-vs-2.8.0.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/fixtures/build_synthetic_suite.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/manifests/obs-referee-283.production.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/producers/README.md +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/producers/model_bundle.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/producers/observation_bundles.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/producers/select_control_cases.py +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/schemas/gf-subsidence-treatment-v1.schema.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/schemas/normalized-artifact-receipt-v1.schema.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/vertical-specs/legacy41-v1.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/vertical-specs/native-comparison-policy.NOT-MEASURED.json +0 -0
- {gpuwm_hex-0.3.2 → gpuwm_hex-0.3.3}/verification/vertical-specs/tc55-v1.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gpuwm-hex
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: GPU global atmospheric model on unstructured Voronoi meshes: a CUDA port of the MPAS-A v8.4.1 dycore with ArWen physics, arbitrary mesh generation, and single-card mesh streaming for 12-16 GB GPUs.
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/FahrenheitResearch/gpuwm-hex
|
|
@@ -177,7 +177,7 @@ verdict for each divergence is in
|
|
|
177
177
|
| | |
|
|
178
178
|
| --- | --- |
|
|
179
179
|
| Python | 3.11 or newer |
|
|
180
|
-
| GPU | A CUDA device. Memory is set by mesh size *and* by the card, and not by a line through the two: the footprint is a per-card core, plus the Grell-Freitas and YSU column workspaces charged at `min(cells, tile)`, plus a per-cell term, all in `hexcore.device_admission`. Measured 2026-08-26 on an RTX 5090 at the merged tip: the published 40,962-cell global mesh (x1.40962, about 120 km) peaked at **8,874 MiB — inside a 12 GiB card's budget**; the 163,842-cell mesh (x4.163842, about 24 km) peaked at **20,446 MiB**, and every free-memory gate admits at the measured floor — the prediction plus that card's own margin, **about 21.7 GiB free at x4** — so x4 remains in practice a 32 GiB-card configuration. The core is a property of the card, not the mesh, and the door reads the card's multiprocessor count at the decision rather than assuming a 5090: the 16 GiB and 10 GiB parts each carry their own measured row, and a card nobody has measured gets a derived row that is labelled derived. A card with its own per-allocation ledger can still supply it with `--device-fixed-mib` / `--device-bytes-per-cell`. |
|
|
180
|
+
| GPU | A CUDA device: any NVIDIA card of compute capability 7.5 (Turing) or newer runs, on CUDA 13, with no flag. sm_86 and sm_89 are anchored (the numerical contract measured again on that architecture), sm_120 is the proven contract floor where it was first measured, and any other card runs unanchored and its receipt says so; `gpuwm-hex doctor` names your card and its status. Memory is set by mesh size *and* by the card, and not by a line through the two: the footprint is a per-card core, plus the Grell-Freitas and YSU column workspaces charged at `min(cells, tile)`, plus a per-cell term, all in `hexcore.device_admission`. Measured 2026-08-26 on an RTX 5090 at the merged tip: the published 40,962-cell global mesh (x1.40962, about 120 km) peaked at **8,874 MiB — inside a 12 GiB card's budget**; the 163,842-cell mesh (x4.163842, about 24 km) peaked at **20,446 MiB**, and every free-memory gate admits at the measured floor — the prediction plus that card's own margin, **about 21.7 GiB free at x4** — so x4 remains in practice a 32 GiB-card configuration. The core is a property of the card, not the mesh, and the door reads the card's multiprocessor count at the decision rather than assuming a 5090: the 16 GiB and 10 GiB parts each carry their own measured row, and a card nobody has measured gets a derived row that is labelled derived. A card with its own per-allocation ledger can still supply it with `--device-fixed-mib` / `--device-bytes-per-cell`. |
|
|
181
181
|
| CUDA | CuPy matching your driver's CUDA major — there is no way for pip to detect it, so you choose (below). |
|
|
182
182
|
| Engine | The `gpuwm` distribution, `>=2.8.0,<2.8.1`, a bounded range, and pip resolves it for you: the physics seam, and the bundle that carries the MPAS bridge binaries the doors drive. The forecast runs on the installed engine; a git clone at `v2.8.0` is optional (receipts then name its commit) — see *The engine pin*. |
|
|
183
183
|
| Assets | A mesh grid file, a matching static file, and (for the init door) a vertical-grid declaration — normally a `--vertical-spec` JSON; a native-minted init file as a capsule is the compatibility mode. **gpuwm-hex ships none of these and has no fetch path for them.** See *Assets you must supply*. |
|
|
@@ -139,7 +139,7 @@ verdict for each divergence is in
|
|
|
139
139
|
| | |
|
|
140
140
|
| --- | --- |
|
|
141
141
|
| Python | 3.11 or newer |
|
|
142
|
-
| GPU | A CUDA device. Memory is set by mesh size *and* by the card, and not by a line through the two: the footprint is a per-card core, plus the Grell-Freitas and YSU column workspaces charged at `min(cells, tile)`, plus a per-cell term, all in `hexcore.device_admission`. Measured 2026-08-26 on an RTX 5090 at the merged tip: the published 40,962-cell global mesh (x1.40962, about 120 km) peaked at **8,874 MiB — inside a 12 GiB card's budget**; the 163,842-cell mesh (x4.163842, about 24 km) peaked at **20,446 MiB**, and every free-memory gate admits at the measured floor — the prediction plus that card's own margin, **about 21.7 GiB free at x4** — so x4 remains in practice a 32 GiB-card configuration. The core is a property of the card, not the mesh, and the door reads the card's multiprocessor count at the decision rather than assuming a 5090: the 16 GiB and 10 GiB parts each carry their own measured row, and a card nobody has measured gets a derived row that is labelled derived. A card with its own per-allocation ledger can still supply it with `--device-fixed-mib` / `--device-bytes-per-cell`. |
|
|
142
|
+
| GPU | A CUDA device: any NVIDIA card of compute capability 7.5 (Turing) or newer runs, on CUDA 13, with no flag. sm_86 and sm_89 are anchored (the numerical contract measured again on that architecture), sm_120 is the proven contract floor where it was first measured, and any other card runs unanchored and its receipt says so; `gpuwm-hex doctor` names your card and its status. Memory is set by mesh size *and* by the card, and not by a line through the two: the footprint is a per-card core, plus the Grell-Freitas and YSU column workspaces charged at `min(cells, tile)`, plus a per-cell term, all in `hexcore.device_admission`. Measured 2026-08-26 on an RTX 5090 at the merged tip: the published 40,962-cell global mesh (x1.40962, about 120 km) peaked at **8,874 MiB — inside a 12 GiB card's budget**; the 163,842-cell mesh (x4.163842, about 24 km) peaked at **20,446 MiB**, and every free-memory gate admits at the measured floor — the prediction plus that card's own margin, **about 21.7 GiB free at x4** — so x4 remains in practice a 32 GiB-card configuration. The core is a property of the card, not the mesh, and the door reads the card's multiprocessor count at the decision rather than assuming a 5090: the 16 GiB and 10 GiB parts each carry their own measured row, and a card nobody has measured gets a derived row that is labelled derived. A card with its own per-allocation ledger can still supply it with `--device-fixed-mib` / `--device-bytes-per-cell`. |
|
|
143
143
|
| CUDA | CuPy matching your driver's CUDA major — there is no way for pip to detect it, so you choose (below). |
|
|
144
144
|
| Engine | The `gpuwm` distribution, `>=2.8.0,<2.8.1`, a bounded range, and pip resolves it for you: the physics seam, and the bundle that carries the MPAS bridge binaries the doors drive. The forecast runs on the installed engine; a git clone at `v2.8.0` is optional (receipts then name its commit) — see *The engine pin*. |
|
|
145
145
|
| Assets | A mesh grid file, a matching static file, and (for the init door) a vertical-grid declaration — normally a `--vertical-spec` JSON; a native-minted init file as a capsule is the compatibility mode. **gpuwm-hex ships none of these and has no fetch path for them.** See *Assets you must supply*. |
|
|
@@ -129,8 +129,11 @@ Fifty hybrid levels are carried as level-indexed slabs with the 3-D
|
|
|
129
129
|
`PRESSURE` beside them (the init engine's model-level branch, the ERA5-ML
|
|
130
130
|
convention), plus the 200100.0 surface level, so `--nfglevels 51
|
|
131
131
|
--nfgsoillevels 4 --use-spechumd yes --extrap-airtemp constant`. Hydrometeors
|
|
132
|
-
are not carried
|
|
133
|
-
|
|
132
|
+
are not carried, although the engine's window decodes them: the init stream
|
|
133
|
+
has slots for cloud water and rain (`qc`, `qr`), but the init and boundary
|
|
134
|
+
writers read no hydrometeor record from an intermediate file and write both
|
|
135
|
+
as zero, and it has no slot for cloud ice, snow or graupel, so hour zero has
|
|
136
|
+
no ice (README, limited-area lane).
|
|
134
137
|
|
|
135
138
|
The source is a ROW (`hexcore.hrrr_intermediate.SOURCE_ROWS`): decoder key,
|
|
136
139
|
loader module, file names, field map, soil nodes, level count. Nothing below
|
|
@@ -329,14 +329,15 @@ version and `RECORD` digest.
|
|
|
329
329
|
|
|
330
330
|
On a card that holds the mesh, preflight binds it, admits it, runs the
|
|
331
331
|
driver's own source-pin and host checks, and exits 0. This transcript is
|
|
332
|
-
from a 10 GiB RTX 3080 with a desktop session on it, run 2026-08-25; the `ADMISSION`
|
|
333
|
-
|
|
332
|
+
from a 10 GiB RTX 3080 with a desktop session on it, run 2026-08-25; the `ADMISSION` and
|
|
333
|
+
`ARCHITECTURE` lines are the ones the door prints for that card and that
|
|
334
|
+
free reading today:
|
|
334
335
|
|
|
335
336
|
```
|
|
336
337
|
[mesh-binding] bound x1.40962: nCells=40962, nEdges=122880, dx=120000.0 m, dt=120.0 s
|
|
337
338
|
BIND mesh=x1.40962 rebound=True dt=120.0 s
|
|
338
339
|
ADMISSION mesh=x1.40962 cells=40,962 card=68 SM row=measured global predicted=5,682.0 MiB margin=884.0 MiB free=9,097.0 MiB of 10,239.5 MiB -> admitted
|
|
339
|
-
ARCHITECTURE sm=sm_86 -> admitted
|
|
340
|
+
ARCHITECTURE sm=sm_86 -> admitted, anchored: the 2026-08-25 anchor (evidence/sm86-tier-20260825/RECEIPT.md, evidence pin 75437c663c9894dc...)
|
|
340
341
|
PREFLIGHT mesh=x1.40962 problems=0 status=preflight_passed
|
|
341
342
|
```
|
|
342
343
|
|
|
@@ -170,20 +170,47 @@ what the door selected. `--headroom-mib` overrides the margin the same
|
|
|
170
170
|
way; its default is no longer a flat 512 MiB but the model's own two named
|
|
171
171
|
terms, priced from your card.
|
|
172
172
|
|
|
173
|
-
**Architecture is admission too, and
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
173
|
+
**Architecture is admission too, and every NVIDIA architecture NVRTC can
|
|
174
|
+
compile the kernels for is admitted, with no flag.** The kernels are
|
|
175
|
+
compiled by NVRTC for your card when the run starts, and they ask for
|
|
176
|
+
nothing an older card lacks, so the floor is the CUDA 13 toolkit's:
|
|
177
|
+
compute capability 7.5 (Turing) and newer. A card NVRTC cannot compile for
|
|
178
|
+
is refused by name, because no kernel could be built for it. The one other
|
|
179
|
+
architecture refusal is the IEEE check below, on an unanchored card, when
|
|
180
|
+
ordinary arithmetic is not IEEE; nothing else about the architecture
|
|
181
|
+
refuses a run.
|
|
182
|
+
|
|
183
|
+
What differs between architectures is the evidence behind the numbers. The
|
|
184
|
+
port's numerical contract was first measured on sm_120; an architecture
|
|
185
|
+
holds an **anchor** when the same contract has been measured again on real
|
|
186
|
+
hardware of it, a contract receipt and a frozen-authority anchor, each row
|
|
187
|
+
pinned to its evidence by SHA-256
|
|
178
188
|
(`src/hexcore/cuda_backend/arch_admission.py`). **sm_86 holds one**
|
|
179
|
-
(2026-08-25, a 10 GiB RTX 3080),
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
189
|
+
(2026-08-25, a 10 GiB RTX 3080) and **sm_89 holds one** (2026-09-24, an
|
|
190
|
+
RTX 4090, so the RTX 40 series and the L40S), each with the guard-cost
|
|
191
|
+
ceiling measured on its card (1.75 and 1.55). The preflight prints one line
|
|
192
|
+
saying which it is, with the evidence pin of an anchored row:
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
ARCHITECTURE sm=sm_89 -> admitted, anchored: the 2026-09-24 anchor (evidence/sm89-tier-20260924/RECEIPT.md, evidence pin 15357eb4d576853f...)
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
On a card of any other architecture the line reads `admitted, unanchored`,
|
|
199
|
+
and before the run the door measures the numeric route on that card in one
|
|
200
|
+
tiny compile and launch: what the route does with an FP32 subnormal, what
|
|
201
|
+
the port's guarded fallback returns for it, whether `--fmad=false` keeps
|
|
202
|
+
`a*b+c` separately rounded, and whether ordinary FP32 and FP64 arithmetic
|
|
203
|
+
agree with IEEE 754. The line ends with what it found. Only the last check
|
|
204
|
+
refuses, because on such a card every number the run produced would be
|
|
205
|
+
wrong; the others are recorded. Every receipt (the door's, the driver's and
|
|
206
|
+
the proof harness's) records the compute capability and either `anchored`
|
|
207
|
+
or `unanchored`. An anchored row carries its evidence pin; sm_120, the
|
|
208
|
+
proven contract floor where the contract was first measured, is anchored
|
|
209
|
+
and carries no pin. No receipt claims an anchor its architecture does not
|
|
210
|
+
hold, and `gpuwm-hex doctor` names the card, its compute capability and
|
|
211
|
+
the same status before you run. `--preflight` answers this half from a
|
|
212
|
+
device-properties read and NVRTC's own target list, so it and the run
|
|
213
|
+
agree about the architecture.
|
|
187
214
|
|
|
188
215
|
**`--preflight` answers the whole question.** It runs every check —
|
|
189
216
|
inputs, the mesh bind, the admission decision, and the driver's own
|
|
@@ -197,7 +224,7 @@ question is the one no file fixes:
|
|
|
197
224
|
INPUT MISSING --init names a missing file: .../x1.40962.init.nc. Build one with `gpuwm-hex init` (chapter 5 of the manual).
|
|
198
225
|
BIND mesh=x1.40962 rebound=True dt=120.0 s
|
|
199
226
|
ADMISSION mesh=x1.40962 cells=40,962 card=68 SM row=measured global predicted=5,682.0 MiB margin=884.0 MiB free=9,097.0 MiB of 10,239.5 MiB -> admitted
|
|
200
|
-
ARCHITECTURE sm=sm_86 -> admitted
|
|
227
|
+
ARCHITECTURE sm=sm_86 -> admitted, anchored: the 2026-08-25 anchor (evidence/sm86-tier-20260825/RECEIPT.md, evidence pin 75437c663c9894dc...)
|
|
201
228
|
PREFLIGHT mesh=x1.40962 problems=1 status=preflight_refused
|
|
202
229
|
```
|
|
203
230
|
|
|
@@ -74,7 +74,7 @@ three measured, physics-shaped ways. They are stated in chapter 3, quantified
|
|
|
74
74
|
in [`docs/declared-divergences.md`](../declared-divergences.md), and never
|
|
75
75
|
hidden behind an option. Read them before trusting a number.
|
|
76
76
|
|
|
77
|
-
**Version.** This manual describes gpuwm-hex 0.3.
|
|
77
|
+
**Version.** This manual describes gpuwm-hex 0.3.3 with the gpuwm 2.8.0
|
|
78
78
|
engine. Where a measurement was taken on specific hardware, the card is
|
|
79
79
|
named beside the number.
|
|
80
80
|
|
|
@@ -38,7 +38,7 @@ name = "gpuwm-hex"
|
|
|
38
38
|
# partition-invariant, but it has no door, no demo, and no re-proof at the
|
|
39
39
|
# current engine pin, so it is not what a version number should be sold on.
|
|
40
40
|
# Numbers are not reserved here any more. A minor bump names what shipped.
|
|
41
|
-
version = "0.3.
|
|
41
|
+
version = "0.3.3"
|
|
42
42
|
description = "GPU global atmospheric model on unstructured Voronoi meshes: a CUDA port of the MPAS-A v8.4.1 dycore with ArWen physics, arbitrary mesh generation, and single-card mesh streaming for 12-16 GB GPUs."
|
|
43
43
|
readme = "README.md"
|
|
44
44
|
requires-python = ">=3.11"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gpuwm-hex
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: GPU global atmospheric model on unstructured Voronoi meshes: a CUDA port of the MPAS-A v8.4.1 dycore with ArWen physics, arbitrary mesh generation, and single-card mesh streaming for 12-16 GB GPUs.
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/FahrenheitResearch/gpuwm-hex
|
|
@@ -177,7 +177,7 @@ verdict for each divergence is in
|
|
|
177
177
|
| | |
|
|
178
178
|
| --- | --- |
|
|
179
179
|
| Python | 3.11 or newer |
|
|
180
|
-
| GPU | A CUDA device. Memory is set by mesh size *and* by the card, and not by a line through the two: the footprint is a per-card core, plus the Grell-Freitas and YSU column workspaces charged at `min(cells, tile)`, plus a per-cell term, all in `hexcore.device_admission`. Measured 2026-08-26 on an RTX 5090 at the merged tip: the published 40,962-cell global mesh (x1.40962, about 120 km) peaked at **8,874 MiB — inside a 12 GiB card's budget**; the 163,842-cell mesh (x4.163842, about 24 km) peaked at **20,446 MiB**, and every free-memory gate admits at the measured floor — the prediction plus that card's own margin, **about 21.7 GiB free at x4** — so x4 remains in practice a 32 GiB-card configuration. The core is a property of the card, not the mesh, and the door reads the card's multiprocessor count at the decision rather than assuming a 5090: the 16 GiB and 10 GiB parts each carry their own measured row, and a card nobody has measured gets a derived row that is labelled derived. A card with its own per-allocation ledger can still supply it with `--device-fixed-mib` / `--device-bytes-per-cell`. |
|
|
180
|
+
| GPU | A CUDA device: any NVIDIA card of compute capability 7.5 (Turing) or newer runs, on CUDA 13, with no flag. sm_86 and sm_89 are anchored (the numerical contract measured again on that architecture), sm_120 is the proven contract floor where it was first measured, and any other card runs unanchored and its receipt says so; `gpuwm-hex doctor` names your card and its status. Memory is set by mesh size *and* by the card, and not by a line through the two: the footprint is a per-card core, plus the Grell-Freitas and YSU column workspaces charged at `min(cells, tile)`, plus a per-cell term, all in `hexcore.device_admission`. Measured 2026-08-26 on an RTX 5090 at the merged tip: the published 40,962-cell global mesh (x1.40962, about 120 km) peaked at **8,874 MiB — inside a 12 GiB card's budget**; the 163,842-cell mesh (x4.163842, about 24 km) peaked at **20,446 MiB**, and every free-memory gate admits at the measured floor — the prediction plus that card's own margin, **about 21.7 GiB free at x4** — so x4 remains in practice a 32 GiB-card configuration. The core is a property of the card, not the mesh, and the door reads the card's multiprocessor count at the decision rather than assuming a 5090: the 16 GiB and 10 GiB parts each carry their own measured row, and a card nobody has measured gets a derived row that is labelled derived. A card with its own per-allocation ledger can still supply it with `--device-fixed-mib` / `--device-bytes-per-cell`. |
|
|
181
181
|
| CUDA | CuPy matching your driver's CUDA major — there is no way for pip to detect it, so you choose (below). |
|
|
182
182
|
| Engine | The `gpuwm` distribution, `>=2.8.0,<2.8.1`, a bounded range, and pip resolves it for you: the physics seam, and the bundle that carries the MPAS bridge binaries the doors drive. The forecast runs on the installed engine; a git clone at `v2.8.0` is optional (receipts then name its commit) — see *The engine pin*. |
|
|
183
183
|
| Assets | A mesh grid file, a matching static file, and (for the init door) a vertical-grid declaration — normally a `--vertical-spec` JSON; a native-minted init file as a capsule is the compatibility mode. **gpuwm-hex ships none of these and has no fetch path for them.** See *Assets you must supply*. |
|
|
@@ -175,6 +175,7 @@ src/hexcore/swath/rank.py
|
|
|
175
175
|
src/hexcore/swath/registry.py
|
|
176
176
|
src/hexcore/swath/sizing.py
|
|
177
177
|
src/hexcore/swath/track.py
|
|
178
|
+
tests/_layout.py
|
|
178
179
|
tests/conftest.py
|
|
179
180
|
tests/test_admission_strings.py
|
|
180
181
|
tests/test_arch_admission.py
|
|
@@ -197,6 +198,7 @@ tests/test_dt_admission.py
|
|
|
197
198
|
tests/test_dual_edge_admission.py
|
|
198
199
|
tests/test_element_parallel_kernels.py
|
|
199
200
|
tests/test_engine_pin.py
|
|
201
|
+
tests/test_f000_start_frame.py
|
|
200
202
|
tests/test_forecast_door.py
|
|
201
203
|
tests/test_forecast_preset.py
|
|
202
204
|
tests/test_forecast_receipt_engine.py
|